# Avaliador de multas de transito
Esse projeto tem como fim avaliar várias multas de trânsito e aplicar os devidos pontos na Carteira Nacional de Habilitação (CNH) e taxas para o infrator.
## Funcionamento
O projeto ira receber um CSV contendo os seguintes campos na ordem:
1) Placa: Caracteres da placa de identificação do veículo
2) Tipo de infração: Gravidade da infração
3) Data da infração: Data e hora do cometimento da infração
4) Data da notificação: Data e hora que a multa foi enviada ao infrator via Correios ou correio eletrônico
5) Data de pagamento: Data e hora que a multa foi paga
6) RG do infrator: Documento de identidade do infrator
7) Nome do infrator: Nome do infrator
Com esse CSV o programa deve criar outro CSV de retorno agrupado por RG com os seguintes dados:
1) RG do infrator: Documento de identidade do infrator
2) Nome do infrator: Nome do infrator
3) Placas dos veículos do infrator: Lista de placas possuídas pelo infrator separadas por vírgula e espaço `, `
4) Status da CNH: Status da CNH do infrator depois dos cálculos, pode ser Ativa ou Revogada
5) Pontos da CNH: Numero de pontos na CNH
6) Valor total: Valor a ser pago pelo infrator
Notas:
- Os campos dos CSV de entrada e saída devem estar separados por ponto e vírgula `;`
- Todas as datas estarão no formato ISO 8601, ex: `2021-04-25 15:00:00`
## Regras para o calculo de pontos e multas
A gravidade da infração pode ser classificada em 4: Leve, Média, Grave e Gravíssima
Para cada uma delas um valor monetário e um determinado valor de pontos na CNH são associados segundo a tabela abaixo.
- Leve: 3 pontos e um valor de R$ 88,38
- Média: 4 pontos e um valor de R$ 130,16
- Grave: 5 pontos e um valor de R$ 195,23
- Gravíssima: 7 pontos e um valor de R$ 293,47
O status da CNH será `Revogada` quando o total de pontos for:
- 20 pontos, no período de 12 meses, caso tenha duas ou mais infrações gravíssimas;
- 30 pontos, no período de 12 meses, caso tenha uma infração gravíssima;
- 40 pontos, no período de 12 meses, caso não tenha nenhuma infração gravíssima.
Caso contrario o status será `Ativa`
Nota: O período de referência é na data e hora que o programa rodar, logo 12 meses antes de rodar o programa.
Para determinar o valor a ser pago deve se olhar a data de notificação:
- Dentro de 30 dias: será aplicado um desconto de 40% do valor base da multa
- Depois dos 30 dias: Acréscimo de 14,75% por mês do valor base da multa (calculo de juros simples)
Nota 1: O período de referência é na data e hora que o programa rodar, logo 15 dias atrás estaria dentro do período para desconto de 40%
Nota 2: Caso a diferença entre a data de notificação e a data da infração exceda 30 dias não deve ser aplicada nenhuma multa nem pontos na CNH
## Exemplos
Tomando que o programa foi rodado dia 31 janeiro de 2000
### Exemplo 1
Entrada: https://docs.google.com/spreadsheets/d/18txnSYX4fw5LAHxBrKYo2DH4hXvnrRP9STdg3WfvEQk/edit#gid=1515543470
```
Placa;Tipo de infração;Data da infração;Data da notificação;Data de pagamento;RG do infrator;Nome do infrator
ARE-9420;Gravíssima;1999-11-05 15:00:00;2000-01-25 10:00:00;;467191153;Josevaldo Cal. O. Teiro
KVI-2310;Gravíssima;2000-01-01 15:00:00;2000-01-04 10:00:00;;467191153;Josevaldo Cal. O. Teiro
KVI-2310;Grave;2000-01-04 15:00:00;2000-01-05 10:00:00;;467191153;Josevaldo Cal. O. Teiro
ARE-9420;Gravíssima;2000-01-10 15:00:00;2000-01-25 10:00:00;;467191153;Josevaldo Cal. O. Teiro
```
Saida: https://docs.google.com/spreadsheets/d/1emXd0X5W8meWMchN22t1PedBxq_gi3RYgxGdP8_XrDA/edit#gid=725426471
```
RG do infrator;Nome do infrator;Placas dos veículos do infrator;Status da CNH;Pontos da CNH;Valor total
467191153;Josevaldo Cal. O. Teiro;ARE-9420, KVI-2310;Ativa;19;469,30
```
## Considerações finais
É desejável que o programa seja desenvolvido com localização em mente, o cliente possui vários clientes que falam espanhol e residem no Brasil, então os nomes dos campos de saída devem estar em espanhol ou português dependendo da configuração do projeto, lembrando que isso é apenas um planejamento futuro e não deve ser implementado agora.