Desenvolver uma aplicação de ponto de venda, utilizando JAVA Swing e MySQL,
para efetuar a INCLUSÃO e a EXCLUSÃO na venda de produtos.
CODCLI / Autonumeração / (PK) NOME / Texto(35) BONUS / Numero / Somente valores superiores a 100 pontos PERFIL / Texto(1) / P - pequeno; M - médio ou G - Grande STATUS / Texto(1) / A - ativo ou I - Inativo
CODPROD / Autonumeração / (PK)
CODLOCAL / Numero / (FK)
DESCRICAO / Texto(35)
QTD_ESTOQUE / Numero
PRECO_UNITARIO / Moeda
CODCLI / Autonumeração / (PK) e (FK)
CODPROD / Numero /(PK) e (FK)
CODLOCAL / Numero / (PK) e (FK)
QTD_VENDA / Numero
VALOR_TOTAL / Moeda
DATA_VENDA / Data
Início do Programa INCLUIR_VENDA;
*** OBTER DADOS JUNTO AO USUÁRIO ***
Ler CodCli, Codprod, CodLocal, Quantidade
*** TRATAR ESTOQUE E A EXISTÊNCIA DO PRODUTO ***
EXEC SQL SELECT descricao, local_fab, qtd_estoque, preco_unitario From Produto Where Codprod = :Xcodprod
Se SQL Not Ok! então
Escreva “Produto não encontrado!”;
Sair;
Fim se
Se (qtd_estoque < Quantidade) então
Escreva “Produto sem estoque!”;
Sair;
Fim se
EXEC SQL UPDATE Produto set qtd_estoque = qtd_estoque - :QuantidadeVendida
WHERE Codprod = :Xcodprod;
*** CALCULAR O PREÇO TOTAL ***
total = total + (Quantidade * preço);
Escreva “Preço calculado: ”, total
*** CALCULAR DESCONTO 1: Com base no bônus e na tabela de Descontos ***
EXEC SQL EXECUTE
BEGIN
total ← CALCULAR_DESCONTO(CodProd, CodCli, Quantidade: Inteiro; Total: Real): Real;
END;
END-EXEC
*** CALCULAR DESCONTO 2: Compras no mesmo local de fabricação tem 10% de desconto ***
Se (CodLocal = LNPROD) então
total = total – (total * 10/100);
Escreva “Valor calculado da venda: ”, total;
Fim se
*** GRAVAR VENDA ***
EXEC SQL INSERT INTO Venda (CodCli, CodProd, CodLocal, Qtd_venda, valor_total, data_venda)
VALUES (:XCodcli, :XCodPro, :XCodLocal, :XQuantidade, :Xtotal, :Xdatasistema);
Se SQL = OK então
Escreva “Venda incluída com sucesso!”;
Commit;
Senão
Escreva “Erro na gravação da venda!”;
Rollback;
Fim se
*** LISTAR ITENS VENDIDOS ***
EXEC SQL SELECT b.descricao, a.Qtd_venda, a.preco_unitario, a.valor_total
From Venda a, Produto b, Cliente c
Where a.Codprod = b.CodProd
And c.CodCli = :Xcodcli;
Fim do Programa INCLUIR_VENDA
*** DELETAR VENDA *** Ler codcli, codprod, dt_venda
Exec SQL Select Total Into VTOT, QTDE Into VQTDE Codlocal Into Vlocalvenda From Venda Where codcli = :codcli And codpro = :codprod and Datavenda = :dt_venda FOR UPDATE;
Se SQLCA.SQLCODE != 0 then Escreva “Venda Inexistente!”; Exec SQL Rollback; Continue; Fim se;
*** TRATAR ESTOQUE *** Exec SQL Update Produto SET QTDE = QTDE + VQTDE Where PN = :codProd;
Se SQLCA.SQLCOD != 0 then Exec SQL Rollback; Continue; Fim se;
*** DEVOLVER BONUS DO CLIENTE *** Exec SQL Select precounitario Into VPRECO, codlocal Into Vlocalprod From produto Where PN = :codpro;
VLRTOTALREAL = VPRECO * VQTDE;
Se Vlocalvenda == Vlocalprod then VLRDESCLOCAL = VLRTOTALREAL * 0.10; VTOT = :VTOT + VLRDESCLOCAL; Fim se;
Exec SQL Update Cliente SET BONUS = BONUS + 100 Where CN = :codcli And :VTOT < :VLRTOTALREAL;
*** DELETAR A VENDA *** Exec SQL Delete From Venda Where cód_cli = :codcli and datavenda = :dt_venda;
Se SQLCA.SQLCODE != 0 then
Escreva “Venda não excluída”!
Exec SQL Rollback;
Continue;
Else
Escreva “Venda excluída com sucesso!”;
Exec SQL COMMIT;
Fim se;