Exemplo n.º 1
0
        public void TestMethod4()
        {
            NotaFiscalDesconto   notaFiscal           = new NotaFiscalDesconto();
            NotaFiscalRepository notaFiscalRepository = new NotaFiscalRepository();
            NotaFiscalService    NotaFiscalService    = new NotaFiscalService();
            Pedido pedido = new Pedido();


            pedido.EstadoOrigem  = "SP";
            pedido.EstadoDestino = "RJ";
            pedido.NomeCliente   = "Carlos Lui";

            pedido.ItensDoPedido.Add(
                new PedidoItem()
            {
                Brinde          = false,
                CodigoProduto   = "1256",
                NomeProduto     = "Tenis",
                ValorItemPedido = 200
            });


            NotaFiscalService.Gravar(pedido);
        }
Exemplo n.º 2
0
 public NotaFiscalService()
 {
     notaFiscal = new NotaFiscalDesconto();
 }
Exemplo n.º 3
0
        /// <summary>
        /// Método que persiste a nota fiscal no banco de dados e gera seu xml. Contém toda a regra de negócio da nota fiscal.
        /// </summary>
        /// <param name="pedido">Classe pedido com as informações da nota fiscal.</param>
        public void EmitirNotaFiscal(Pedido pedido)
        {
            var notaFiscal = new NotaFiscal();

            notaFiscal.NumeroNotaFiscal = new Random().Next(Int32.MaxValue);
            notaFiscal.Serie            = new Random().Next(Int32.MaxValue);
            notaFiscal.NomeCliente      = pedido.NomeCliente;
            notaFiscal.EstadoOrigem     = pedido.EstadoOrigem;
            notaFiscal.EstadoDestino    = pedido.EstadoDestino;

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();

                /* Aplicação do Cfop */
                var notaFiscalCfop = new NotaFiscalCfop();
                notaFiscalItem.Cfop = notaFiscalCfop.AplicarCfop(pedido.EstadoOrigem, pedido.EstadoDestino);

                /* ICMS */
                if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

                /* Redução de base */
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90;
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }

                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                notaFiscalItem.BaseIpi   = itemPedido.ValorItemPedido;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                    notaFiscalItem.AliquotaIpi  = 0;
                }
                else
                {
                    notaFiscalItem.AliquotaIpi = 0.1;
                }

                notaFiscalItem.ValorIpi      = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;
                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                /* Aplicação da regra de negócio do Desconto */
                var desconto = new NotaFiscalDesconto();
                notaFiscalItem.Desconto = desconto.AplicarDesconto(notaFiscal.EstadoDestino);

                notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            try
            {
                /* Persistência no XML */
                if (NotaFiscalToXml.SaveNotaFiscalXml(notaFiscal))
                {
                    /* Persistência no Banco de Dados */
                    int idNota = _INotaFiscalRepository.GravarNotaFiscal(notaFiscal);
                    foreach (var item in notaFiscal.ItensDaNotaFiscal)
                    {
                        item.IdNotaFiscal = idNota;
                        _INotaFiscalRepository.GravarItemNotaFiscal(item);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }