示例#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());
        }
示例#2
0
        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);
        }