コード例 #1
0
        public void GerarNotaFiscal_PedidoValido_NotaFiscalGerada()
        {
            // Arrange
            var pedidoItem = new PedidoItem
            {
                Brinde          = true,
                CodigoProduto   = "123",
                NomeProduto     = "NomeProduto",
                ValorItemPedido = 100
            };

            var pedido = new Pedido
            {
                EstadoDestino = "SP",
                EstadoOrigem  = "MG",
                NomeCliente   = "NomeCliente",
                ItensDoPedido = new List <PedidoItem> {
                    pedidoItem
                }
            };

            // Act
            var notaFiscal = NotaFiscal.New(pedido);

            // Assert
            Assert.NotNull(notaFiscal);
            Assert.NotEmpty(notaFiscal.ItensNotaFiscal);
        }
コード例 #2
0
        public void CriarNotaFiscalItem_PedidoItemVazio_ExcecaoCamposObrigatorios()
        {
            // Arrange
            var pedidoItem = new PedidoItem
            {
                Brinde          = true,
                CodigoProduto   = "123",
                NomeProduto     = "NomeProduto",
                ValorItemPedido = 100
            };

            var pedido = new Pedido
            {
                EstadoDestino = "MG",
                EstadoOrigem  = "RJ",
                NomeCliente   = "NomeCliente",
                ItensDoPedido = new List <PedidoItem> {
                    pedidoItem
                }
            };

            var notaFiscal = NotaFiscal.New(pedido);

            // Act
            var exception = Record.Exception(() => NotaFiscalItem.New(notaFiscal, new PedidoItem()));

            // Assert
            Assert.NotNull(exception);
        }
コード例 #3
0
        public void CriarNotaFiscalItem_EstadoDestinoSudeste_AplicarDesconto()
        {
            // Arrange
            var pedidoItem = new PedidoItem
            {
                Brinde          = true,
                CodigoProduto   = "123",
                NomeProduto     = "NomeProduto",
                ValorItemPedido = 100
            };

            var pedido = new Pedido
            {
                EstadoDestino = "MG", // Sudeste
                EstadoOrigem  = "RJ",
                NomeCliente   = "NomeCliente",
                ItensDoPedido = new List <PedidoItem> {
                    pedidoItem
                }
            };

            // Act
            var notaFiscal = NotaFiscal.New(pedido);

            // Assert
            var notaFiscalItem = notaFiscal.ItensNotaFiscal.Last();

            Assert.NotNull(notaFiscalItem);
            Assert.Equal(0.10, notaFiscalItem.Desconto);
        }
コード例 #4
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);
        }
コード例 #5
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);
        }
コード例 #6
0
        public void GerarNotaFiscal_PedidoVazio_ExcecaoCamposObrigatorios()
        {
            // Arrange
            var pedido = new Pedido();

            // Act
            var exception = Record.Exception(() => NotaFiscal.New(pedido));

            // Assert
            Assert.NotNull(exception);
        }
コード例 #7
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);
        }