DDD e controle de estoque

Até hoje, sempre implementei controle de estoque da seguinte maneira (de uma forma simplificada):
Tenho as tabelas de produtos, entradas, vendas, e uma tabela contando todo o histórico de movimentação do estoque. Esta tabela de movimentação tem um campo para o id do produto, um campo para dizer se a movimentação foi uma entrada ou saída, um campo para a quantidade e outro para o saldo.
Quando entra um produto, uma trigger no banco insere um registro na tabela de movimentações referente à entrada, e na tabela de vendas uma trigger similar.
Na tabela de movimentação, tenho uma trigger que atualiza toda a tabela sempre que um novo registro é inserido. Ou seja, quando registro uma movimentação de estoque, pego todos os registros já existentes referentes ao mesmo produto, com data maior que a data do registro sendo inserido, e atualizo o saldo neles.

Pois bem… Segundo o DDD, qual seria a forma mais adequada de implementar isso?
Eu teria um repositório para movimentações de estoque? E aí ao gravar um registro, esse mesmo repositorio ficaria encarregado de carregar as outras movimentações, atualizar o saldo nelas e gravar novamente?

DDD está na maneira de pensar, não existe a receita de bolo.

O que você escreveu é como você implementaria um determinado requisito, não o que é o requisito. Como sugestão, refaça a descrição do seu problema, só que sem usar banco de dados relacional. Pense que tudo será feito como na época dos Fllintstones, onde um dinossauro preso numa caixa realiza as suas atividades. E nesse caso, escreva o que você diria ao dinossauro.

Incrível…tem gente achando que DDD é só implementar uns designs patterns e tá pronto…

Ahhhh se as coisas fossem assim tão fáceis

Leonardo3001,

Eu diria que para cada produto que entra ou sai do estoque da empresa, isso deve ser registrado de forma que eu sempre possa saber a quantidade em estoque de cada produto em um determinado momento

[quote=magnomp]Leonardo3001,

Eu diria que para cada produto que entra ou sai do estoque da empresa, isso deve ser registrado de forma que eu sempre possa saber a quantidade em estoque de cada produto em um determinado momento[/quote]

É o caminho, mas faltam duas coisas:

:arrow: “isso deve ser registrado” - evite escrever na voz passiva pois, sem querer, ocultamos o agente da ação. Cabe responder: quem (ou o que) registra os produtos?

:arrow: “que eu sempre possa saber” - quem sabe? Certamente NÃO é você, que é apenas o desenvolvedor da bagaça. Tenha sempre em mente o ator de determinadas ações no sistema.

O DDD é fazer o código ficar mais parecido com o que acontece com o negócio. Se, dada a especificação, você fizer um código onde esta está explícita, então você tá caminhando pro DDD.