Movimentação de estoque, como fazer de maneira elegante e funcional?

Bom pessoal, tenho um sistema que controla a movimentação de um estoque: Entrada, Saida E Locação.

A Locação é só pra dizer que determinada quantidade de um certo item do estoque foi alocada e está resevado para uso, depois que seu uso realmente for efetiviado é gerado uma Saida.

O Problema é, apos eu alocar um item do estoque e efetiviar usa Saida, Como eu dou um fim na locação?

Eu posso somente, apagar do banco de dados? (ai eu fico sem historico)
Eu eu crio um campo “excluido” e simulo que o movimento foi apagado , mas na verdade tá ali como historico (meio confuso)

Alguem sabe como fazer isso de uma forma elegante e funcional?

Agradeço desde já.

se vc precisa de um histórico entaum deixa do jeito q está criando mais um campo flag pra marcar q akela qtdade não está mais disponível, só uma idéia dentre as milhares q existem!

Poisé, eu sei que existem milhares, por isso fico na duvida, queria saber uma forma elegante de fazer isso.