Executando verificação de segurança...
2

[AJUDA] Modelagem para SaaS

Olá, pessoal.

Sou dev front-end com um pouco de noção de backend.

Estou desenvolvendo uma aplicação (SaaS) para escolas de idiomas para crianças. Basicamente o sistema tem entidades para as escolas, funcionários, alunos, responsáveis (pais), turmas e etc.

Além disso tenho as entidades de faturas, items de faturas e a entidade de descontos, que é onde preciso de ajuda para modelar. E acredito que eu esteja fazendo da forma errada.

A aplicação é bem simples e básica, resumidamente algum funcionário da escola cadastra uma nova fatura junto com os itens da fatura. Nesse ponto eu não criei produtos para relacionar com a futura, apenas um campo ENUM dentro de itens da fatura, que pode ser, por exemplo: ESCOLA, LIVROS, UNIFORME e etc. Esses seriam os "produtos" que serão "vendidos" e podem ter descontos.

E então eu criei a entidade desconto para caso um aluno faça o pagamento anual a escola poder aplicar um desconto em porcentagem (o desconto pode ser fixo também, então criei um campo para o tipo de desconto, mas não sei se é relevante), por exemplo. Ou em um caso muito especifico, de um cliente em potencial para o app, que é onde alunos que pagam a escola de forma anual tem descontos em alguns itens que eu citei acima. Então o aluno paga 1 ano de escola e tem 5% de desconto em livros e/ou uniformes e etc.

E a entidade desconto tem uma chave estrangeira para o aluno, ou seja, o desconto é aplicado para o aluno, assim, caso os pais tenham 2 filhos e optem por pagar anualmente apenas para um (o que pode ocorrer), os descontos serão aplicados apenas para um dos alunos.

A ideia é que quando um funcionário criar uma fatura, por exemplo da compra de um livro, o aluno que paga anual automaticamente receba 5% de desconto. Até aí eu consegui fazer tudo funcionar relacionando as tabelas e calculando direto no front os descontos (esse ponto é importante, no front eu chamo os itens da fatura e os descontos e vejo em quais itens eu devo aplicar os descontos "virtualmente", e exibo que aquele item tem desconto). Mas na hora de criar alguns resumos na página de faturas (para os funcionários da escola), como por exemplo: Total em R$ de faturas em aberto, total em R$ de faturas pagas, eu fiz, por enquanto, da forma mais simples possível, que é somar as faturas do mês corrente. Mas isso não reflete exatamente a realidade, pois não estou levando em consideração a entidade de descontos nesse caso.

Estou no caminho certo? Como vocês modelariam essa parte de faturas, itens de faturas e descontos? Criar uma entidade de balanço para "consolidar"?

Não sei se fui totalmente claro, mas fiquem a vontade para perguntar caso eu tenha deixado passar algo!

Obrigado!

Carregando publicação patrocinada...
2

Olhando para o cenário atual, creio que vc já deve fazer a inserção dos itens, desconto e fatura juntos no banco de dados, certo?

Se sim, eu não criaria uma nova entidade, mas sim adicionaria essas informações na fatura. Exemplo:

Valor Total = Soma dos itens
Valor Descontos = Soma de todos os descontos
Valor Final = Soma dos itens - Soma de todos os descontos

Dessa forma no momento da consulta dos resumos não seria necessário muitos joins, e caso o usuário queira ver os itens você pode buscá-los em um consulta secundária.

1

Obrigado, Felipe!

No caso, digamos que eu já tenha cadastrado um desconto de 5%, e então toda vez que um item fosse adicionado ou removido, caso esse novo item se enquadrasse para receber desconto, eu alteraria o valor final no registro da fatura? Seria isso?

2
0