CONTROLE DE ESTOQUE: PARTE 4

por David de Almeida Bezerra Júnior


Veja aqui a parte 3.

Nesta seção, construiremos a janela de Venda (Sale).


Criando a janela

Crie uma janela chamda JDialogSale, e adicione dois Buttons, quatro Labels, quatro TextFields e uma Table. Mude também a propriedade Window da janela para Dialog.
Deixe os componentes como na imagem a baixo.



Mude o Text dos Labels para "Description", "Price", "Customer ID" e "Product ID". Modifique o Name dos TextFields para jTextFieldDescription, jTextFieldPrice, jTextFieldCustomerID e jTextFieldProductID, e o da Table para jTableItems.
Mude o Text dos Buttons para "New" e "Save". Modifique o Name dos Buttons para jButtonNew e jButtonSave.
Altere também a propriedade Editable, dos jTextFieldDescription e jTextFieldPrice, para false e a propriedade Column para description e price.

Nas propriedades Titles e Columns da jTableItems, insira:
sale_detail.product_id
product.description
sale_detail.amount
sale_detail.price


Fazendo funcionar

Adicione dois Procedures e nomeie: fillTable e addRow.
Adicione uma Variable e nomeie: saleID. Mude a propriedade Column para sale_id.

No jButtonNew, adicione as seguintes funções do evento OnClick:
Função: selecionarRegistro
Parâmetros:
sale_header
ifnull(max(id), 0)+1 as sale_id
order by id

Função: gravarRegistro
Parâmetros:
sale_header
id, sale_date, sale_time, customer_id
'"+getsaleID()+"', current_date(), current_time(), '"+jTextFieldCustomerID.getText()+"'

Função: executarProcedure
Parâmetros:
fillTable

No evento OnExecute do Procedure fillTable, adicione uma função preencherTabela com os seguintes parâmetros:
jTableItems
sale_detail, product //Selecionamos duas tabelas
sale_detail.product_id, product.description, sale_detail.amount, sale_detail.price //Colunas de diferentes tabelas
where product.id=sale_detail.product_id and sale_detail.sale_header_id='"+getsaleID()+"' //(Não faça quebra de linha) Selecionamos o detalhe da venda, através da referência que vai estar na variável saleID e fazemos o join de tabelas


No evento OnExecute do Procedure addRow, adicione as funções:

Função: comandoJava
Parâmetros:

if(getsaleID().equals("")){
        javax.swing.JOptionPane.showMessageDialog(getJDialogSale(), "Inicie uma venda!");
        return;
}

Função: verificarRegistro
Parâmetros:
product
id
where id='"+jTextFieldProductID.getText()+"'
Select a valid product!
==

Função: selecionarRegistro
Parâmetros:
product
id, description, price
where id='"+jTextFieldProductID.getText()+"'

Função: gravarRegistro
Parâmetros:
sale_detail sale_header_id, product_id, price, amount '"+getsaleID()+"', '"+jTextFieldProductID.getText()+"', '"+jTextFieldPrice.getText()+"', 1

Função: executarProcedure
Parâmetros:
fillTable

Adicione também a função alterarRegistro com os seguintes parâmetros:
product
amount=amount-1
where id='"+jTextFieldProductID.getText()+"'

Esta função irá diminuir a quantidade que saiu no estoque do produto.


No evento OnKeyReleased do jTextFieldProductID, preencha o campo Tecla com o valor ENTER e adicione uma função executarProcedure com o parâmetro:
addRow


No evento OnClick do jButtonSave, adicione as funções:
Função: mudarValor
Parâmetros:
getJDialogSale()
saleID
""


Função: executarProcedure
Parâmetros:
fillTable


Volte na tela inicial e, no evento OnClick do menu Sale, adicione a função abrirJanela com o parâmetro:
JDialogSale

Salve e Execute sua aplicação, clicando nos respectivos botões na Barra de ferramentas ou teclando CTRL + S e F9.





CopyRight © 2023 Analisa Software.Todos os direitos reservados.