예제 #1
0
        public void CalcularIcms_Cfop6009_ReducaoBaseAplicada()
        {
            // Arrange
            var pedido = NotaFiscalTest.NovoPedido();

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

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

            var notaFiscal = NotaFiscal.New(pedido);
            var cfop       = new Cfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino).Value(); // 6.009

            // Act
            var icms = new ImpostoIcms(notaFiscal, novoPedidoItem, cfop);

            // Assert
            Assert.NotNull(icms);
            Assert.Equal("10", icms.Tipo);
            Assert.Equal(0.17, icms.Aliquota);
            Assert.Equal(1000 * 0.17 * 0.9, icms.Valor);
        }
예제 #2
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);
        }
예제 #3
0
        public void CalcularIcms_PedidoItemBrinde_TipoAliquotaDefinidosBrinde()
        {
            // Arrange
            var pedido = NotaFiscalTest.NovoPedido();

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

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

            var notaFiscal = NotaFiscal.New(pedido);
            var cfop       = new Cfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino).Value();

            // Act
            var icms = new ImpostoIcms(notaFiscal, novoPedidoItem, cfop);

            // Assert
            Assert.NotNull(icms);
            Assert.Equal("60", icms.Tipo);
            Assert.Equal(0.18, icms.Aliquota);
            Assert.Equal(1000 * 0.18, icms.Valor);
        }