コード例 #1
0
        public static NotaFiscalItem New(NotaFiscal notaFiscal, PedidoItem pedidoItem)
        {
            var cfop = new Cfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino).Value();
            var icms = new ImpostoIcms(notaFiscal, pedidoItem, cfop);
            var ipi  = new ImpostoIpi(notaFiscal, pedidoItem);

            var notaFiscalItem = new NotaFiscalItem
            {
                NotaFiscal    = notaFiscal,
                NomeProduto   = pedidoItem.NomeProduto,
                CodigoProduto = pedidoItem.CodigoProduto,
                Cfop          = cfop,
                TipoIcms      = icms.Tipo,
                BaseIcms      = icms.Base,
                AliquotaIcms  = icms.Aliquota,
                ValorIcms     = icms.Valor,
                BaseIpi       = ipi.Base,
                AliquotaIpi   = ipi.Aliquota,
                ValorIpi      = ipi.Valor,
                Desconto      = 0
            };

            notaFiscalItem.AplicarDesconto();
            notaFiscalItem.Validate();

            return(notaFiscalItem);
        }
コード例 #2
0
        public void CalcularIpi_PedidoItemNaoBrinde_AliquotaDefinidosNaoBrinde()
        {
            // Arrange
            var pedido = NotaFiscalTest.NovoPedido();

            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "RJ";

            var novoPedidoItem = new PedidoItem
            {
                Brinde = false, CodigoProduto = "123", NomeProduto = "X", ValorItemPedido = 1000
            };

            var notaFiscal = NotaFiscal.New(pedido);

            // Act
            var ipi = new ImpostoIpi(notaFiscal, novoPedidoItem);

            // Assert
            Assert.NotNull(ipi);
            Assert.Equal(0.10, ipi.Aliquota);
            Assert.Equal(1000 * 0.10, ipi.Valor);
        }