Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
        public void TestCalculaBase()
        {
            Mocks      mock       = new Mocks();
            Pedido     pedido     = mock.Pedido();
            PedidoItem pedidoItem = pedido.ItensDoPedido[0];

            pedidoItem.ValorItemPedido = 100;

            Impostos imposto     = new ImpostoIPI(pedidoItem);
            double   calculoBase = imposto.CalculaBase();

            Assert.AreEqual(100d, calculoBase);
        }