Nesta seção, construiremos a janela de Venda (Sale).
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
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.