Estok SH 1.2b - Controle de Estoque em Shell Script
Publicado por Raphael Ciribelly (última atualização em 19/02/2020)
[ Hits: 2.484 ]
Sistema de Estoque em 47.659 bytes
Funcionalidades: Cadastro de produtos, Clientes, Fornecedores, Entrada e Saída e contagem de produtos
Como usar
Dê permissão para execução:
$ chmod +x estok1.2b.sh
Execute o arquivo com a opção -m (menu):
$ ./estok1.2b.sh -m
Observações: o programa é bem simples, fiz para estudo, criei em apenas uma semana então possui alguns bugs que precisam ser resolvidos. Sinta-se a vontade para usar, copiar e alterar o código, caso queira melhorar o programa.
Abraço a todos.
#!/usr/bin/env bash # Autor: Raphael Ciribelly # Bash: 4.4.20(1)-release (x86_64-pc-linux-gnu) # Idioma: pt_BR.UTF-8 #---> variaveis MENUPRINCIPAL="menuloop" ESTOKDIR=~/estok # diretorio estok PRODUTODIR=~/estok/produtos # diretorio produtos LOGDIR=~/estok/logs # diretorio log CLIENTEDIR=~/estok/clientes # diretorio clientes FORNECEDORDIR=~/estok/fornecedores # diretorio fornecedores DATAATUAL=$(date "+%d/%m/%Y %T") # data cadastro SOMA=~/estok/soma.sum # arquivo log soma SOMA2=~/estok/soma2.sum # arquivo log soma 2 SOMA3=~/estok/soma3.sum # arquivo log soma 3 SOMAF=~/estok/somafinal.sum # arquivo log soma final VALORSOMAF=$"(<~/estok/soma2.sum)" # valor final da soma LISTALOG=~/estok/logs/lista.list # arquivo lista.list utilizado em consulta de iténs ENTRADALOG=~/estok/logs/entrada.log # log entrada SAIDALOG=~/estok/logs/saida.log # log saida BUSCALOG=~/estok/logs/busca.log # log busca EXCLUIDOLOG=~/estok/logs/excluidos.log # log excluidos ALTERADOLOG=~/estok/logs/alterados.log # log alterados CADASTROPRODUTOLOG=~/estok/logs/cadastro_produtos.log # log cadastrados CADASTROCLIENTELOG=~/estok/logs/cadastro_cliente.log # log clientes CADASTROFORNECEDORLOG=~/estok/logs/cadastro_fornecedor.log # log fornecedores RELATORIOLOG=~/estok/logs/relatorio.log # log relatorio #---> verificações # diretorio estok existe ??? if [ -d $ESTOKDIR ];then sleep 1s ; else mkdir $ESTOKDIR ; \ mkdir $PRODUTODIR ; \ mkdir $LOGDIR ; \ mkdir $CLIENTEDIR ; \ mkdir $FORNECEDORDIR ; \ fi #======================== Arrays COMEÇO =================================== #---> arrays #array cadastro produtos array 11 campos CADASTROPRODUTO=("NOME:" "UNIDADE:" "CATEGORIA:" "FORNECEDOR:" "CODIGO:" "QUANTIDADE:" "ESTOQUE MINIMO:" "VALOR R$:" "CUSTO R$:" "DESCRIÇÃO:" "DATA:") #array cadastro clientes array 19 campos CADASTROCLIENTE=("CODIGO:" "NOME:" "DATA DE NASCIMENTO:" "SEXO:" "ENDEREÇO:" "BAIRRO" "NUMERO:" "COMPLEMENTO:" "CIDADE:" "UF:" "CEP:" "E-MAIL:" "FISICA/JURÍCA:" "CPF/CNPJ:" "RG:" "TELEFONE:" "CELULAR:" "INFORMAÇÕES ADICIONAIS:" "DATA:") #array cadastro fornecedores array 23 campos CADASTROFORNECEDOR=("CODIGO:" "NOME:" "NOME FANTASIA:" "RAZÃO SOCIAL:" "RAMO DE ATIVIDADE:" "ENDEREÇO:" "BAIRRO" "NUMERO:" "COMPLEMENTO:" "CIDADE:" "UF:" "CEP:" "PAÍS:" "E-MAIL:" "SITE:" "FISICA/JURÍCA:" "CPF/CNPJ:" "INSCRIÇÃO ESTADUAL:" "TELEFONE-1:" "TELEFONE-2" "CELULAR:" "INFORMAÇÕES ADICIONAIS:" "DATA:") #======================== Arrays FIM ===================================== #---> funções trocavirgula(){ cd $PRODUTODIR 2>>/dev/null ; sed -i 's/,/./g' *.prod 2>>/dev/null ; } # função: deseja continuar ??? perguntacontinuar () { while true; do read -e -p "(s/n)?: $1" sn case $sn in [Ss]* ) sleep 1 ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } #======================== FUNÇÃO: listas COMEÇO ========================== # funçao: ver lista produtos??? verlistaproduto () { while true; do read -e -p "Deseja visualizar lista de produtos (s/n)?: $1" sn case $sn in [Ss]* ) ls $PRODUTODIR | sed -e "s/\.prod$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } # funçao: ver lista clientes ??? verlistacliente () { while true; do read -e -p "Deseja visualizar lista de clientes (s/n)?: $1" sn case $sn in [Ss]* ) ls $CLIENTEDIR | sed -e "s/\.cli$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } # funçao: ver lista fornecedor ??? verlistafornecedor () { while true; do read -e -p "Deseja visualizar lista de fornecedores (s/n)?: $1" sn case $sn in [Ss]* ) ls $FORNECEDORDIR | sed -e "s/\.for$//" | less -i ; read -rsn1 -p "Pressione ENTER para voltar ao menu" ; menu ; return 0 ; ;; [Nn]* ) menu ; return 1 ; ;; * ) echo "Entre com (s/n)" ; ;; esac done } #======================== FUNÇÃO: lista FIM =============================== # funçao: deleta arquivos de soma deletasoma() { cd $ESTOKDIR 2>>/dev/null ; rm -r $SOMA 2>>/dev/null ; rm -r $SOMA2 2>>/dev/null; rm -r $SOMA3 2>>/dev/null; rm -r $SOMAF 2>>/dev/null ; } #======================== Cadastro COMEÇO ================================== cadastrofornecedor(){ echo echo "------------------------------" echo "*** Cadastro de fornecedor ***" ; echo "------------------------------" cd $FORNECEDORDIR ; # entra no diretorio fornecedor read -e -p "Digite o nome do fornecedor: " "nomefornecedor" ; # pega nome fornecedor [ -z "$nomefornecedor" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomefornecedor.for" ]; then # testa se fornecedor existe echo "Cliente "$nomefornecedor" já existe" ; # se fornecedor existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Codigo: " codigo ; # se existe e você deu ( sim ) continua formulario read -e -p "Nome fantasia: " nomefantasia ; read -e -p "Razão social: " razaosocial ; read -e -p "Ramo de atividade: " ramoatividade ; read -e -p "Endereço: " endereco ; read -e -p "Bairro: " bairro ; read -e -p "Numero: " numero ; read -e -p "Complemento: " complemento ; read -e -p "Cidade: " cidade ; read -e -p "UF: " uf ; read -e -p "CEP: " cep ; read -e -p "País: " pais ; read -e -p "E-mail: " email ; read -e -p "Site: " site ; read -e -p "Física/Jurídica: " fisicajuridica ; read -e -p "CPF/CNPJ: " cpfcnpj ; read -e -p "Inscrição estadual: " inscricaoestadual ; read -e -p "Telefone-1: " telefone1 ; read -e -p "Telefone-2: " telefone2 ; read -e -p "Celular: " celular ; read -e -p "Informações adicionais: " informacoes ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomefornecedor.for" ; # gera arquivo com nome em diretorio fornecedores e gera log echo ${CADASTROFORNECEDOR[0]} "$codigo" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[1]} "$nomefornecedor" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[2]} "$nomefantasia" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[3]} "$razaosocial" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[4]} "$ramoatividade" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[5]} "$endereco" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[6]} "$bairro" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[7]} "$numero" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[8]} "$complemento" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[9]} "$cidade" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[10]} "$uf" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[11]} "$cep" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[12]} "$pais" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[13]} "$email" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[14]} "$site" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[15]} "$fisicajuridica" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[16]} "$cpfcpnj" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[17]} "$inscricaoestadual" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[18]} "$telefone1" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[19]} "$telefone2" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[20]} "$celular" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[21]} "$informacoes" >> "$nomefornecedor.for" ; echo ${CADASTROFORNECEDOR[22]} "$DATAATUAL" >> "$nomefornecedor.for" ; echo "------------------------------" >> "$nomefornecedor.for" ; echo "******" >> $CADASTROFORNECEDORLOG ; echo "NOME:" "$nomefornecedor.for" >> $CADASTROFORNECEDORLOG ; echo "CODIGO:" "$codigo" >> $CADASTROFORNECEDORLOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROFORNECEDORLOG ; echo "******" >> $CADASTROFORNECEDORLOG ; less -iC "$nomefornecedor.for" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } cadastrocliente() { echo echo "------------------------------" echo " *** Cadastro de cliente ***" ; echo "------------------------------" cd $CLIENTEDIR ; # entra no diretorio cliente read -e -p "Digite o nome do cliente: " "nomecliente" ; # pega nome cliente [ -z "$nomecliente" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomecliente.cli" ]; then # testa se cliente existe echo "Cliente "$nomecliente" já existe" ; # se cliente existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Codigo: " codigo ; # se existe e você deu ( sim ) continua formulario read -e -p "Data de nascimento: " datanascimento ; read -e -p "Sexo: " sexo ; read -e -p "Endereço: " endereco ; read -e -p "Bairro: " bairro ; read -e -p "Numero: " numero ; read -e -p "Complemento: " complemento ; read -e -p "Cidade: " cidade ; read -e -p "UF: " uf ; read -e -p "CEP: " cep ; read -e -p "E-mail: " email ; read -e -p "Física/Jurídica: " fiscajuridica ; read -e -p "CPF/CNPJ: " cpfcnpj ; read -e -p "RG: " rg ; read -e -p "Telefone: " telefone ; read -e -p "Celular: " celular ; read -e -p "Informações adicionais: " informacoes ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomecliente.cli" ; # gera arquivo com nome em diretorio clientes e gera log echo ${CADASTROCLIENTE[0]} "$codigo" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[1]} "$nomecliente" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[2]} "$datanascimento" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[3]} "$sexo" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[4]} "$endereco" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[5]} "$bairro" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[6]} "$numero" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[7]} "$complemento" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[8]} "$cidade" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[9]} "$uf" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[10]} "$cep" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[11]} "$email" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[12]} "$fisicajuridica" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[13]} "$cpfcnpj" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[14]} "$rg" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[15]} "$telefone" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[16]} "$celular" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[17]} "$informacoes" >> "$nomecliente.cli" ; echo ${CADASTROCLIENTE[18]} "$DATAATUAL" >> "$nomecliente.cli" ; echo "------------------------------" >> "$nomecliente.cli" ; echo "******" >> $CADASTROCLIENTELOG ; echo "NOME:" "$nomecliente.cli" >> $CADASTROCLIENTELOG ; echo "CODIGO:" "$codigo" >> $CADASTROCLIENTELOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROCLIENTELOG ; echo "******" >> $CADASTROCLIENTELOG ; less -iC "$nomecliente.cli" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } cadastroproduto(){ # submenu produto echo echo "------------------------------" ; echo " *** Cadastro de produto ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Nome do produto: " nomeproduto ; # pega nome do produto [ -z "$nomeproduto" ] && menu ; # se variavel é nula volta ao menu if [ -f "$nomeproduto".prod ];then # verifica se produto existe echo "Produto "$nomeproduto" já existe" ; # se produto existe echo "Deseja continuar?" perguntacontinuar ; # pergunta se deseja continuar fi read -e -p "Unidade: " unidade ; # se existe e você deu ( sim ) continua formulario read -e -p "Categoria: " categoria ; read -e -p "Fornecedor: " fornecedor ; read -e -p "Codigo: " codigo ; read -e -p "Quantidade: " quantidade ; read -e -p "Estoque minimo: " estoqueminimo ; read -e -p "Valor R$: " valor ; read -e -p "Custo R$: " custo ; read -e -p "Descrição: " descricao ; echo "Deseja gravar dados?" ; perguntacontinuar ; # pergunta se deseja gravar dados echo "------------------------------" >> "$nomeproduto.prod" ; # gera arquivo com nome em diretorio produtos e envia dados echo ${CADASTROPRODUTO[0]} "$nomeproduto" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[1]} "$unidade" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[2]} "$categoria" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[3]} "$fornecedor" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[4]} "$codigo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[5]} "$quantidade" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[6]} "$estoqueminimo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[7]} "$valor" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[8]} "$custo" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[9]} "$descricao" >> "$nomeproduto.prod" ; echo ${CADASTROPRODUTO[10]} "$DATAATUAL" >> "$nomeproduto.prod" ; echo "------------------------------" >> "$nomeproduto.prod" ; echo "******" >> $CADASTROPRODUTOLOG ; echo "Produto:" "$nomeproduto.prod" >> $CADASTROPRODUTOLOG ; echo "Quantidade:" "$quantidade" >> $CADASTROPRODUTOLOG ; echo "Data de cadastro:" "$DATAATUAL" >> $CADASTROPRODUTOLOG ; echo "******" >> $CADASTROPRODUTOLOG ; trocavirgula ; less -iC "$nomeproduto.prod" ; # Abre less e lê arquivo criado echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } # função: opção menu cadastro opcaocadastro() { echo echo "------------------------------" ; echo " *** Cadastro ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " CADASTRO ; case "$CADASTRO" in [Pp]*) cadastroproduto ;; [Cc]*) cadastrocliente ;; [Ff]*) cadastrofornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Cadastro FIM =================================== #======================== Entrada/Saída COMEÇO =========================== entrada(){ echo echo "------------------------------" ; echo " *** Entrada ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Digite o nome do produto: " "nomeentrada" ; # pega nome produto entrada [ -z "$nomeentrada" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeentrada.prod" ]; then # testa se produto existe ou não sed -n "2p" "$nomeentrada".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomeentrada".prod ; # mostra sexta linha do arquivo produto sed -n -e "s/^.*QUANTIDADE: //p" "$nomeentrada".prod >> $SOMA ; # envia quantidade do .prod para soma.sum read -p "Digite a quantidade para entrada: " "quantentrada" ; # pega valor digitado echo "$quantentrada" >> $SOMA ; # cria soma.sum com valor digitado paste -sd+ $SOMA | bc >> "$SOMA2" ; # soma arquivos soma.sum e soma2.sum sleep 1 ; # Pausa VALORF=`cat $SOMA2` ; sed -i "s/\(QUANTIDADE:\).*/\1 ${VALORF}/" "$nomeentrada".prod ; # grava soma sed -n "2p" "$nomeentrada".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomeentrada".prod ; # mostra sexta linha do arquivo produto echo "******" >> $ENTRADALOG ; # adiciona linha no log entrada echo "Produto:" "$nomeentrada".prod >> $ENTRADALOG ; # adiciona nome do produto log entrada echo "Quantidade de entrada:" "$quantentrada" >> $ENTRADALOG ; # envia quantidade de entrada para log read -p "Data de entrada: " "dataentrada" ; # pega data entrada echo "Data de entrada:" "$dataentrada" >> $ENTRADALOG ; # adiciona [Data] ao log entrada read -p "Fornecedor: " "fornecedorentrada" ; # pega fornecedor echo "Fornecedor:" "$fornecedorentrada" >> $ENTRADALOG ; # adiciona [Fornecedor] ao log entrada echo "******" >> $ENTRADALOG ; # adiciona linha log entrada read -rsn1 -p "Pressione ENTER para continuar" ; # enter para voltar ao menu deletasoma 2>>/dev/null ; menu ; else # produto entrada não existe echo "Produto "$nomeentrada" não existe" verlistaproduto ; fi } saida(){ echo echo "------------------------------" echo " *** Saída ***" ; echo "------------------------------" cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Digite o nome do produto: " "nomesaida" ; # pega nome produto saida [ -z "$nomesaida" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomesaida.prod" ]; then # testa se produto existe ou não sed -n "2p" "$nomesaida".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomesaida".prod ; # mostra sexta linha do arquivo produto sed -n -e "s/^.*QUANTIDADE: //p" "$nomesaida".prod >> $SOMA ; # envia quantidade do .prod para soma.sum read -p "Digite a quantidade para saída: " "quantsaida" ; # pega valor digitado echo "$quantsaida" >> $SOMA ; # cria soma.sum com valor digitado paste -sd- $SOMA | bc >> "$SOMA2" ; sleep 1 ; # Pausa VALORF=`cat $SOMA2` ; sed -i "s/\(QUANTIDADE:\).*/\1 ${VALORF}/" "$nomesaida".prod ; # grava soma sed -n "2p" "$nomesaida".prod ; # mostra segunda linha arquivo produto sed -n "7p" "$nomesaida".prod ; # mostra sexta linha do arquivo produto echo "******" >> $SAIDALOG ; echo "Produto:" "$nomesaida".prod >> $SAIDALOG ; # adiciona nome do produto log saida echo "Quantidade de saída:" "$quantsaida" >> $SAIDALOG ; # envia quantidade de saida para log read -p "Data de saída: " "datasaida" ; # pega nome data saida echo "Data de saída:" "$datasaida" >> $SAIDALOG ; # adiciona [Data] ao log saida read -p "Destino/Cliente: " "descli" ; # pega fornecedor echo "Destino/Cliente:" "$descli" >> $SAIDALOG ; # adiciona [Destino/Cliente] ao log saida echo "******" >> $SAIDALOG ; read -rsn1 -p "Pressione ENTER para continuar" ; # enter para voltar ao menu deletasoma 2>>/dev/null ; menu ; else # produto saida nao existe echo "Arquivo "$nomesaida".prod não existe" ; verlistaproduto ; menu ; fi } # função: opção menu entrada/saída opcaoentradasaida(){ read -e -p "Entrada [E] Saída [S] " ENTRADASAIDA ; case "$ENTRADASAIDA" in [Ee]*) entrada ;; [Ss]*) saida ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Entrada/Saída FIM ============================== #======================== Consulta Itens COMEÇO ========================== consultaproduto(){ cd $PRODUTODIR ; echo "------------------------------" ; echo " *** Consultar produtos ***" ; echo "------------------------------" ; cat $PRODUTODIR/*.prod > $LISTALOG ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.prod | wc -l` >> $LISTALOG ; # Conta todos os arquivos .prod less -iC $LISTALOG ; } consultacliente(){ cd $CLIENTEDIR ; echo "------------------------------" ; echo " *** Consultar clientes ***" ; echo "------------------------------" ; cat $CLIENTEDIR/*.cli > $LISTALOG ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.cli | wc -l` >> $LISTALOG ; # Conta todos os arquivos .cli less -iC $LISTALOG ; } consultafornecedor(){ cd $FORNECEDORDIR ; echo "------------------------------" ; echo " *** Consultar clientes ***" ; echo "------------------------------" ; $(cat $FORNECEDORDIR/*.for > $LISTALOG) ; # cria lista todo conteúdo arquivos .prod echo "Quantidade total de iténs:" `ls -l *.for | wc -l` >> $LISTALOG ; # Conta todos os arquivos .for less -iC $LISTALOG ; } opcaoconsultaritens(){ echo echo "------------------------------" ; echo " *** Consultar itens ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " CONSULTA ; case "$CONSULTA" in [Pp]*) consultaproduto ;; [Cc]*) consultacliente ;; [Ff]*) consultafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Consulta Itens FIM ============================ #======================== Busca COMEÇO =================================== buscaproduto(){ echo echo "------------------------------" ; echo " *** Busca produto ***" ; echo "------------------------------" ; cd $PRODUTODIR ; # entra no diretorio produtos read -e -p "Nome do produto: " buscaproduto ; # pega nome do produto rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; grep -EiRl "$buscaproduto|$buscaconteudo" *.prod 2>>/dev/null | sed 's/\.prod//g' >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .pr od echo "--------------------------" >> $BUSCALOG ; grep -Ei "$buscaproduto|$buscaconteudo" *.prod >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .prod less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } buscacliente(){ echo echo "------------------------------" ; echo " *** Busca cliente ***" ; echo "------------------------------" ; cd $CLIENTEDIR ; # entra no diretorio produtos read -e -p "Nome do cliente: " buscacliente ; # pega nome do cliente rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; grep -EiRl "$buscacliente|$buscaconteudo" *.cli 2>>/dev/null | sed 's/\.cli//g' >> $BUSCALOG 2>>/dev/null ; # busca palavra nos arquivos .cli echo "--------------------------" >> $BUSCALOG ; $(grep -Ei "$buscacliente|$buscaconteudo" *.cli >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .cli less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } buscafornecedor(){ echo echo "------------------------------" ; echo " *** Busca fornecedor ***" ; echo "------------------------------" ; cd $FORNECEDORDIR ; # entra no diretorio fornecedor read -e -p "Nome do cliente: " buscafornecedor ; # pega nome do fornecedor rm -r $BUSCALOG 2>>/dev/null ; read -p "Buscar: " "buscaconteudo" ; # pega segundo nome da busca echo "" > $BUSCALOG ; # apaga todo conteudo anterior da busca echo "*** Resultados ***" >> $BUSCALOG ; # envia resultados para BUSCALOG echo "--------------------------" >> $BUSCALOG ; echo "--- Itens relacionados ---" >> $BUSCALOG ; $(grep -EiRl "$buscafornecedor|$buscaconteudo" *.for 2>>/dev/null | sed 's/\.for//g' >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .for echo "--------------------------" >> $BUSCALOG ; $(grep -Ei "$buscafornecedor|$buscaconteudo" *.for >> $BUSCALOG 2>>/dev/null) ; # busca palavra nos arquivos .for less -i $BUSCALOG echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; } opcaobusca(){ echo echo "------------------------------" ; echo " *** Busca ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " BUSCA ; case "$BUSCA" in [Pp]*) buscaproduto ;; [Cc]*) buscacliente ;; [Ff]*) buscafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Busca FIM ====================================== #======================== Altera COMEÇO ================================== alterafornecedor(){ cd $FORNECEDORDIR echo "------------------------------" ; echo " *** Alterar Fornecedor ***" ; echo "------------------------------" ; read -e -p "Digite o nome do cliente: " "alterafornecedor" ; # pega nome do arquivo [ -z "$alterafornecedor" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alterafornecedor.for" ]; then echo "Deseja alterar "$alterafornecedor"? " ; perguntacontinuar ; cat "$alterafornecedor.for" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alterafornecedor.for" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alterafornecedor.for" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alterafornecedor.for" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alterafornecedor" não existe" ; verlistafornecedor ; fi } alteracliente(){ cd $CLIENTEDIR echo "------------------------------" ; echo " *** Alterar Cliente ***" ; echo "------------------------------" ; read -e -p "Digite o nome do cliente: " "alteracliente" ; # pega nome do arquivo [ -z "$alteracliente" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alteracliente.cli" ]; then echo "Deseja alterar $alteracliente? " ; perguntacontinuar ; cat "$alteracliente.cli" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alteracliente.cli" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alteracliente.cli" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alteracliente.cli" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alteracliente" não existe" ; verlistacliente ; fi } alteraproduto(){ cd $PRODUTODIR echo "------------------------------" ; echo " *** Alterar Produto ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "alteraproduto" ; # pega nome do arquivo [ -z "$alteraproduto" ] && menu ; # se variavel é nula volta ao menu if [ -e "$alteraproduto.prod" ]; then echo "Deseja alterar $alteraproduto? " ; perguntacontinuar ; cat "$alteraproduto.prod" ; # mostra conteudo do arquivo read -p "Digite o campo que deseja alterar: " "altera1" ; # pega palavra para alterar read -p "Digite o valor antigo: " "altera2" ; # pega segunda palavra para alterar read -p "Digite o novo valor: " "altera3" ; # pega terceira palavra para alterar sed -e '/'"${altera1^^}"'/ s/'"$altera2"'/'"$altera3"'/' "$alteraproduto.prod" > output.altera ; # gera output com alterações cat output.altera ; # mostra conteudo output echo "Deseja salvar alteração?" perguntacontinuar cat output.altera > "$alteraproduto.prod" rm -r output.altera ; # apaga output echo "******" >> $ALTERADOLOG ; # log Alterados echo "Produto:" "$alteraproduto.prod" >> $ALTERADOLOG ; # log Alterados echo "******" >> $ALTERADOLOG ; # log Alterados else echo "Arquivo "$alteraproduto" não existe" ; verlistaproduto ; fi } opcaoaltera(){ echo echo "------------------------------" ; echo " *** Alterar ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " ALTERA ; case "$ALTERA" in [Pp]*) alteraproduto ;; [Cc]*) alteracliente ;; [Ff]*) alterafornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Altera FIM ====================================== #======================== Relatorio COMEÇO ================================ opcaorelatorio(){ echo "------------------------------" ; echo " *** Relatorio ***" ; echo "------------------------------" ; cd $PRODUTODIR echo "" > $RELATORIOLOG ; # apaga dados relatorio echo "Quantidade total de arquivos em $PRODUTODIR:" $(find -type f | wc -l) >> $RELATORIOLOG ; echo "Quantidade de produtos cadastrados:" $(sed s/.prod\b/.prod\n/g $CADASTROPRODUTOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de clientes cadastrados:" $(sed s/.cli\b/.cli\n/g $CADASTROCLIENTELOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de fornecedores cadastrados:" $(sed s/.for\b/.for\n/g $CADASTROFORNECEDORLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de entrada:" $(sed s/.prod\b/.prod\n/g $ENTRADALOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade total de saída:" $(sed s/.prod\b/.prod\n/g $SAIDALOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de produtos alterados:" $(sed s/.prod\b/.prod\n/g $ALTERADOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de clientes alterados:" $(sed s/.cli\b/.cli\n/g $ALTERADOLOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de fornecedores alterados:" $(sed s/.for\b/.for\n/g $ALTERADOLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de produtos excluidos:" $(sed s/.prod\b/.prod\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".prod\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de clientes excluidos:" $(sed s/.cli\b/.cli\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".cli\b" | wc -l ) >> $RELATORIOLOG ; echo "Quantidade de fornecedores excluidos:" $(sed s/.for\b/.for\n/g $EXCLUIDOLOG 2>>/dev/null | grep ".for\b" | wc -l ) >> $RELATORIOLOG ; deletasoma 2>>/dev/null ; cd $PRODUTODIR ; sed -n -e 's/^.*QUANTIDADE: //p' *.prod >> $SOMA ; paste -sd+ $SOMA | bc >> $SOMAF ; echo "Quantidade total de produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; rm -r $SOMAF 2>>/dev/null sed -n -e 's/^.*VALOR R$: //p' *.prod >> $SOMA2 ; paste -sd+ $SOMA2 | bc >> $SOMAF ; echo "Soma de valor total unitario de cada produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; rm -r $SOMAF 2>>/dev/null sed -n -e 's/^.*CUSTO R$: //p' *.prod >> $SOMA3 ; paste -sd+ $SOMA3 | bc >> $SOMAF ; echo "Soma de custo unitaria de cada produtos:" $(cat $SOMAF) >> $RELATORIOLOG ; less -iC $RELATORIOLOG ; deletasoma 2>>/dev/null ; } #======================== Relatorio FIM =================================== excluifornecedor(){ cd $FORNECEDORDIR ; echo "------------------------------" ; echo " *** Excluir Fornecedor ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".for ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.for" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.for" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistafornecedor ; fi } excluicliente(){ cd $CLIENTEDIR ; echo "------------------------------" ; echo " *** Excluir Cliente ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".cli ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.cli" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.cli" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistacliente ; fi } excluiproduto(){ cd $PRODUTODIR ; echo "------------------------------" ; echo " *** Excluir Produto ***" ; echo "------------------------------" ; read -e -p "Digite o nome do produto: " "nomeexcluir" ; [ -z "$nomeexcluir" ] && menu ; # se variavel é nula volta ao menu if [ -e "$nomeexcluir".prod ]; then echo "Deseja excluir $nomeexcluir?" ; perguntacontinuar ; rm -r "$nomeexcluir.prod" ; echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Produto:" "$nomeexcluir.prod" >> $EXCLUIDOLOG ; # log Excluidos echo "******" >> $EXCLUIDOLOG ; # log Excluidos echo "Arquivo "$nomeexcluir" excluido com sucesso" read -rsn1 -p "Pressione ENTER para continuar" ; menu ; else echo "Arquivo "$nomeexcluir" não existe" ; verlistaproduto ; fi } opcaoexclui(){ echo echo "------------------------------" ; echo " *** Excluir ***" ; echo "------------------------------" ; read -e -p "Produto [P] Cliente [C] Fornecedor [F] " EXCLUIR ; case "$EXCLUIR" in [Pp]*) excluiproduto ;; [Cc]*) excluicliente ;; [Ff]*) excluifornecedor ;; *) echo "Opção Inválida" echo "------------------------------" ; read -rsn1 -p "Pressione ENTER para continuar" ; echo "------------------------------" ; ;; esac } #======================== Excluir FIM ===================================== #======================= Ajuda COMEÇO ===================================== opcaoajuda(){ echo -e " ------------------------------ *** Ajuda *** ------------------------------ -m Menu -c Cadastro -es Entrada/Saída -i Consultar itens -b Busca -a Altera -r Relatorio -x Excluir -h Ajuda -v Versão ------------------------------ " read -rsn1 -p "Pressione ENTER para continuar" ; clear ; } #========================= Ajuda FIM ====================================== #======================= Menu Principal COMEÇO =========================== # função: menu principal menu() { while true $MENUPRINCIPAL != "menuloop" do trocavirgula ; clear ; cat<<EOF ============================== Estok SH 1.2b ------------------------------ Entre com uma opção: 1 ) Cadastro 2 ) Entrada/Saída 3 ) Consultar iténs 4 ) Buscar 5 ) Alterar 6 ) Relatório 7 ) Excluir 8 ) Ajuda Q ) Sair ------------------------------ EOF echo "Digite a opção desejada" read -e -p "Menu: " opcaomenu # pega opção menu echo "------------------------------" case "$opcaomenu" in # variavel do menu para entar 1) opcaocadastro ; ;; 2) opcaoentradasaida ; ;; 3) opcaoconsultaritens ; ;; 4) opcaobusca ; ;; 5) opcaoaltera ; ;; 6) opcaorelatorio ; ;; 7) opcaoexclui ; ;; 8) opcaoajuda ; ;; Q|q) exit 0 ; ;; esac done } #======================= Menu Principal FIM ============================== #======================== Parametros COMEÇO =============================== # case: parametros case $1 in "-m") menu ; ;; "-c") opcaocadastro ; ;; "-es") opcaoentradasaida ; ;; "-i") opcaoconsultaritens ; ;; "-b") opcaobusca ; ;; "-a") opcaoaltera ; ;; "-r") opcaorelatorio ; ;; "-x") opcaoexclui ; ;; "-h") opcaoajuda ; ;; "-v") echo "Estok SH versão - 1.2b" ; ;; *) echo -e "Opção inválida! \nentre com parametro -h para ajuda" exit 1 ; ;; esac #======================== Parametros FIM =================================
cg_ext - script para alteração de extensão de arquivos em larga escala
Limitador de conexões para usuários
Nenhum comentário foi encontrado.
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (7)
Open Suse não abre wi-fi automaticamente (3)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)