/// <summary> /// Aplica os impostos e verifica o CFOP do Pedido /// </summary> /// <param name="pedido">Pedido que será verificado</param> /// <returns>Retorna uma lista com os itens da nota fiscal preenchido</returns> public List <NotaFiscalItem> PopulaItensNotaFiscal(Pedido pedido) { Cfop cfop = new Cfop(); string valorImpostoCfop = cfop.VerificaCFOP(pedido); ManipulaEstados manipulaEstados = new ManipulaEstados(); double desconto = manipulaEstados.DescontoParaEstadosDestino(pedido.EstadoDestino); return(pedido.ItensDoPedido.Select(_ => { Impostos impostoICMS = new ImpostoICMS(pedido, _, valorImpostoCfop); Impostos impostoIPI = new ImpostoIPI(_); return new NotaFiscalItem() { NomeProduto = _.NomeProduto, CodigoProduto = _.CodigoProduto, Cfop = valorImpostoCfop, BaseIcms = impostoICMS.CalculaBase(), TipoIcms = ((ImpostoICMS)impostoICMS).VerificaTipo(), AliquotaIcms = impostoICMS.VerificaAliquota(), ValorIcms = impostoICMS.Valor(), BaseIpi = impostoIPI.CalculaBase(), AliquotaIpi = impostoIPI.VerificaAliquota(), ValorIpi = impostoIPI.Valor(), Desconto = desconto }; }).ToList()); }
public void TestVerificaAliquotaNotBrinde() { Mocks mock = new Mocks(); Pedido pedido = mock.Pedido(); PedidoItem pedidoItem = pedido.ItensDoPedido[0]; pedidoItem.ValorItemPedido = 100; pedidoItem.Brinde = false; Impostos imposto = new ImpostoIPI(pedidoItem); double valorAliquota = imposto.VerificaAliquota(); Assert.AreEqual(0.1d, valorAliquota); }