Vamos criar um sistema de controle de estoque simples usando o BigBashView. O sistema terá as seguintes funcionalidades:
Primeiro, crie o arquivo principal **index.sh.htm**:
#!/bin/bash
echo "<html>"
echo "<head>"
echo "<title>Controle de Estoque</title>"
echo "</head>"
echo "<body>"
echo "<h1>Controle de Estoque</h1>"
# Adicionar produto
echo "<h2>Adicionar Produto</h2>"
echo "<form action='adicionar_produto.sh.htm' method='post'>"
echo "Nome: <input type='text' name='nome'><br>"
echo "Quantidade: <input type='number' name='quantidade'><br>"
echo "Preço de Compra: <input type='number' step='0.01' name='preco_compra'><br>"
echo "Preço de Venda: <input type='number' step='0.01' name='preco_venda'><br>"
echo "<input type='submit' value='Adicionar'>"
echo "</form>"
# Lista de produtos
echo "<h2>Produtos</h2>"
echo "<table border='1'>"
echo "<tr><th>Nome</th><th>Quantidade</th><th>Preço de Compra</th><th>Preço de Venda</th><th>Ações</th></tr>"
IFS=$'\n'
for linha in $(cat produtos.txt 2>/dev/null); do
IFS='|' read -ra campos <<< "$linha"
nome=${campos[0]}
quantidade=${campos[1]}
preco_compra=${campos[2]}
preco_venda=${campos[3]}
echo "<tr>"
echo "<td>$nome</td>"
echo "<td>$quantidade</td>"
echo "<td>$preco_compra</td>"
echo "<td>$preco_venda</td>"
echo "<td><a href='editar_produto.sh.htm?nome=$nome'>Editar</a> | <a href='vender_produto.sh.htm?nome=$nome'>Vender</a> | <a href='remover_produto.sh.htm?nome=$nome'>Remover</a></td>"
echo "</tr>"
done
echo "</table>"
echo "</body>"
echo "</html>"
Agora, crie o arquivo **adicionar_produto.sh.htm** para adicionar produtos:
#!/bin/bash
echo "$nome|$quantidade|$preco_compra|$preco_venda" >> produtos.txt
echo "<meta http-equiv=\"refresh\" content=\"0; URL='index.sh.htm'\">"
Crie o arquivo **editar_produto.sh.htm** para editar produtos:
#!/bin/bash
IFS='|' read -ra campos <<< "$(grep "^$nome|" produtos.txt)"
quantidade_atual=${campos[1]}
preco_compra_atual=${campos[2]}
preco_venda_atual=${campos[3]}
if [ -z "$quantidade" ]; then
quantidade=$quantidade_atual
fi
if [ -z "$preco_compra" ]; then
preco_compra=$preco_compra_atual
fi
if [ -z "$preco_venda" ]; then
preco_venda=$preco_venda_atual
fi
if [ "$REQUEST_METHOD" == "POST" ]; then
sed -i "s/^$nome|.*$/$nome|$quantidade|$preco_compra|$preco_venda/" produtos.txt
echo "<meta http-equiv=\"refresh\" content=\"0; URL='index.sh.htm'\">"
echo ""
else
echo "<html>"
echo "<head>"
echo "<title>Editar Produto</title>"
echo "</head>"
echo "<body>"
echo "<h1>Editar Produto: $nome</h1>"
echo "<form action='editar_produto.sh.htm?nome=$nome' method='post'>"
echo "Quantidade: <input type='number' name='quantidade' value='$quantidade'><br>"
echo "Preço de Compra: <input type='number' step='0.01' name='preco_compra' value='$preco_compra'><br>"
echo "Preço de Venda: <input type='number' step='0.01' name='preco_venda' value='$preco_venda'><br>"
echo "<input type='submit' value='Salvar'>"
echo "</form>"
echo "</body>"
echo "</html>"
fi
Crie o arquivo **vender_produto.sh.htm** para editar produtos:
#!/bin/bash
if [ "$REQUEST_METHOD" == "POST" ]; then
quantidade_venda=$quantidade
IFS='|' read -ra campos <<< "$(grep "^$nome|" produtos.txt)"
quantidade_atual=${campos[1]}
quantidade_nova=$((quantidade_atual - quantidade_venda))
sed -i "s/^$nome|.*$/$nome|$quantidade_nova|${campos[2]}|${campos[3]}/" produtos.txt
echo "<meta http-equiv=\"refresh\" content=\"0; URL='index.sh.htm'\">"
echo ""
else
echo "<html>"
echo "<head>"
echo "<title>Vender Produto</title>"
echo "</head>"
echo "<body>"
echo "<h1>Vender Produto: $nome</h1>"
echo "<form action='vender_produto.sh.htm?nome=$nome' method='post'>"
echo "Quantidade: <input type='number' name='quantidade' min='1'><br>"
echo "<input type='submit' value='Vender'>"
echo "</form>"
echo "</body>"
echo "</html>"
fi
Crie o arquivo **remover_produto.sh.htm** para remover produtos:
#!/bin/bash
sed -i "/^$nome|/d" produtos.txt
echo "<meta http-equiv=\"refresh\" content=\"0; URL='index.sh.htm'\">"
Agora, execute o comando **bigbashview index.sh.htm** para iniciar o sistema de controle de estoque. As informações serão armazenadas no arquivo **produtos.txt**.