Lógica de Negócio: Controle de produto

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?