Imagine que uma empresa emite suas notas fiscais e precisa de sua ajuda pra validar se o cálculo dos impostos foi feito corretamente.
A empresa gera um arquivo texto de ENTRADA no seguinte formato:
NUMERO,OPERACAO,CLASSIFICACAO,VALOR,VALOR_IMPOSTO
001,VENDA,A,1000.00,180.00
002,TRANSFERENCIA,A,2000.00,360.00
003,DOACAO,B,500.00,0.00
004,VENDA,B,314.15,31.42
005,VENDA,A,1200.98,216.18
Do seu lado, você sabe que o cálculo é realizado com base num arquivo de REGRAS no seguinte formato:
REGRA,OPERACAO,CLASSIFICACAO,ALIQUOTA
1,VENDA,A,18.00
2,VENDA,B,10.00
3,VENDA,C,10.00
4,TRANSFERENCIA,*,15.00
5,DOACAO,*,0.00
6,*,D,1.50
Esse arquivo informa um conjunto de regras que devem ser validadas sequencialmente, parando na primeira que for encontrada. Uma regra é encontrada quando a OPERACAO e CLASSIFICACAO coincidem com os valores informados na nota. O * (coringa) é usado pra indicar que para aquele determinado campo, qualquer valor coincide. Uma vez a regra encontrada o valor da ALIQUOTA correspondente deve ser usado para calcular o imposto aplicando a fórmula:
VALOR_IMPOSTO = TRUNC(VALOR * ALIQUOTA / 100.00, 2)
Você deve gerar um arquivo de SAIDA que indique a regra aplicada a cada nota e se o cálculo estava correto, como a seguir:
NUMERO,REGRA,CORRETO
001,1,S
002,4,N
003,5,S
004,2,N
005,1,N
Pede-se que escreva um programa na linguagem ou ferramenta de sua escolha que gere o arquivo de SAIDA a partir dos arquivos de ENTRADA e REGRAS. Eventualmente poderá ser testado com outro conjunto de arquivos. Qualquer dúvida ou dificuldade, entre em contato via e-mail. Ao final, envie o código-fonte e artefatos usados (testes, configurações) juntamente com requisitos e instruções para execução. Organize sua entrega de forma clara e limpa. A conversa seguirá discutindo o que foi feito e como foi feito e possíveis alterações e interpretações (não será preciso codificar novamente, somente demonstrar entendimento da solução e seus desmembramentos).
Att,
Eduardo Rebouças [email protected]