Bom dia galera!!
Tenho a seguinte estrutura:
Supondo que tenho o seguinte cenário:
Uma Nota com 50 unidades de Limao;
Ao criar um Recibo com 10 unidades de Limao, essa quantidade deve ser debitada da Nota.
Ao deletar o Recibo, as 10 unidades retornam para a Nota.
Código para os 2 problemas acima:
public List<ItemRecibo> processorItem(ItemNotaDAO dao) throws DAOException {
List<ItemRecibo> itensRecibo = new ArrayList<>();
List<ItemNota> itens = dao.getItemByProduto(item.getProduto().getCodigo());
ItemRecibo otherItem = null;
int qtdRecibo = item.getQuantidade();
int i = 0;
while (qtdRecibo > 0) {
ItemNota itemNota = itens.get(i);
int qtdNota = itemNota.getQuantidade();
if (qtdNota >= qtdRecibo) {
otherItem = new ItemRecibo(item.getRecibo(), itemNota.getNota(), item.getProduto(), qtdRecibo);
qtdRecibo -= qtdRecibo;
itensRecibo.add(otherItem);
} else {
if (qtdNota != 0)
otherItem = new ItemRecibo(item.getRecibo(), itemNota.getNota(), item.getProduto(), qtdNota);
qtdRecibo -= qtdNota;
itensRecibo.add(otherItem);
}
i++;
}
return itensRecibo;
}
public void processarItens(List<ItemRecibo> itens, ItemNotaDAO itemDAO, String opcao) throws DAOException {
for (ItemRecibo item : itens) {
ItemNota itemNota = itemDAO.getItemByNotaAndProduto(item.getNota(), item.getProduto());
if (opcao.equals("salvar"))
itemNota.debitar(item.getQuantidade());
if (opcao.equals("deletar"))
itemNota.creditar(item.getQuantidade());
}
}
Ao alterar a quantidade do Recibo de 10 para 5, por exemplo, a diferença deve retornar para a Nota;
Como eu solucionaria o problema da alteração da quantidade no recibo?