Estok SH 1.2b - Controle de Estoque em Shell Script
Publicado por Raphael Ciribelly (última atualização em 19/02/2020)
[ Hits: 2.764 ]
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 =================================
Player de música em Shell com Yad
Script para criar usuarios Dialup
Instalação do Cisco Packettracer 7.2 no Debian 10
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Formas seguras de instalar Debian Sid (7)
Alguém executou um rm e quase mata a Pixar! (5)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









