Ejemplo n.º 1
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;  // número da NF deveria ser sequencial, teria que fazer uma pesquisa no BD para atribuir um novo nr
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.ClienteNF        = pedido.clientePedido;

            //this.EstadoDestino = pedido.EstadoOrigem; // Adicionado por Luiz - Referente ao item 06 do teste - Destino recebia Origem e Origem recebia Destino - Corrigido
            //this.EstadoOrigem = pedido.EstadoDestino;

            this.EstadoOrigem  = pedido.EstadoOrigem;
            this.EstadoDestino = pedido.EstadoDestino;



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

                // notaFiscalItem.IdNotaFiscal ??? teria de implementar uma futura função para atualizar este campo com o ID da NF

                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                CalculaCFOP(notaFiscalItem);
                CalculaICMS(notaFiscalItem, itemPedido);
                CalculaIPI(notaFiscalItem, itemPedido);
                CalculaDesconto(notaFiscalItem);

                ItensDaNotaFiscal.Add(notaFiscalItem); // Adicionado por Luiz - Referente ao item 01 do teste - necessário para resolver problema de serialização de XML com IEnumerable (convertido para LIST)
            }
        }
Ejemplo n.º 2
0
        public NotaFiscal EmitirNotaFiscal(Pedido pedido)
        {
            try
            {
                NumeroNotaFiscal = 99999;
                Serie            = new Random().Next(Int32.MaxValue);
                NomeCliente      = pedido.NomeCliente;

                EstadoDestino = pedido.EstadoDestino;
                EstadoOrigem  = pedido.EstadoOrigem;

                string _cfop = cfop.Realiza(EstadoOrigem, EstadoDestino);

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

                    notaFiscalItem.Cfop = _cfop == null ? "" : _cfop;

                    icms.Calcula(itemPedido, pedido, notaFiscalItem);
                    ipi.Calcula(itemPedido, pedido, notaFiscalItem);
                    desconto.Calcula(itemPedido, pedido, notaFiscalItem);

                    ItensDaNotaFiscal.Add(notaFiscalItem);
                }

                return(this);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 3
0
        private void CalculaICMS(NotaFiscalItem notaFiscalItem, PedidoItem itemPedido)
        {
            if (EstadoDestino == EstadoOrigem)
            {
                notaFiscalItem.TipoIcms     = "60";
                notaFiscalItem.AliquotaIcms = 0.18;
            }
            else
            {
                notaFiscalItem.TipoIcms     = "10";
                notaFiscalItem.AliquotaIcms = 0.17;
            }
            if (notaFiscalItem.Cfop == "6.009")
            {
                notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
            }
            else
            {
                notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
            }
            notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

            if (itemPedido.Brinde)
            {
                notaFiscalItem.TipoIcms     = "60";
                notaFiscalItem.AliquotaIcms = 0.18;
                notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
            }
        }
Ejemplo n.º 4
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem  = pedido.EstadoDestino;

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

                //Uso padrao de Projeto Clain of Responsability, para resolver o problema de manutanção e sujeira de codigo
                CalculaCfop cfop = new CalculaCfop();
                notaFiscalItem.Cfop = cfop.ObtemCfop(pedido);

                //Centralizo para cada classe responsavel
                notaFiscalItem.AliquotaIcms = ICMS.ObtemAliquotaIcms(pedido);
                notaFiscalItem.TipoIcms     = ICMS.ObtemTipoIcms(pedido);
                notaFiscalItem.BaseIcms     = ICMS.CalculaBaseIcms(notaFiscalItem.Cfop, itemPedido.ValorItemPedido);
                notaFiscalItem.ValorIcms    = ICMS.CalculaValorIcms(notaFiscalItem);

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                // caulculo IPI
                notaFiscalItem.AliquotaIpi = IPI.CalculaAliquotaIpi(itemPedido.Brinde);
                notaFiscalItem.BaseIpi    += itemPedido.ValorItemPedido;
                notaFiscalItem.ValorIpi    = IPI.CalculaValorIpi(notaFiscalItem.BaseIpi, notaFiscalItem.AliquotaIpi);

                //Desconto Sudeste
                notaFiscalItem.Desconto = DescontosSudeste.ObtemDesconto(this.EstadoDestino);

                this.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            //Validação se persistiu xml com sucesso
            if (!Xml.Exportar(pedido))
            {
                throw new Exception("Problemas para gravar Xml");
            }

            // Salvando no Banco
            var idNota = NotaFiscalRepository.InsertNotaFiscal(this);

            foreach (var item in this.ItensDaNotaFiscal.ToList())
            {
                item.IdNotaFiscal = idNota;
                NotaFiscalRepository.InsertNotaFiscalItem(item);
            }
        }
Ejemplo n.º 5
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            NumeroNotaFiscal = 99999;
            Serie            = new Random().Next(Int32.MaxValue);
            NomeCliente      = pedido.NomeCliente;
            EstadoDestino    = pedido.EstadoDestino;
            EstadoOrigem     = pedido.EstadoOrigem;

            foreach (var itemPedido in pedido.ItensDoPedido)
            {
                var notaFiscalItem = new NotaFiscalItem()
                {
                    Cfop     = new NotaFiscalRepository().ProcCfopPorEstado(EstadoOrigem, EstadoDestino),
                    Desconto = Calculos.DescontoPorOrigem(EstadoOrigem)
                };

                if (EstadoDestino == EstadoOrigem)
                {
                    notaFiscalItem.AtribuirTipoIcms("60");
                    notaFiscalItem.AtribuirAliquotaIcms(0.18);
                }
                else
                {
                    notaFiscalItem.AtribuirTipoIcms("10");
                    notaFiscalItem.AtribuirAliquotaIcms(0.17);
                }

                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.CalcularBaseIcms(itemPedido.ValorItemPedido, 0.90); //redução de base
                }
                else
                {
                    notaFiscalItem.AtribuirBaseIcms(itemPedido.ValorItemPedido);
                }

                notaFiscalItem.CalcularValorIcms(notaFiscalItem.BaseIcms, notaFiscalItem.AliquotaIcms);

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.CalcularAliquotaIpi(0.10);
                }
                else
                {
                    notaFiscalItem.CalcularAliquotaIpi(0);
                }

                notaFiscalItem.AtribuirBaseIpi(notaFiscalItem.BaseIcms);
                notaFiscalItem.CalcularValorIpi(notaFiscalItem.BaseIpi, notaFiscalItem.AliquotaIpi);
                notaFiscalItem.AtribuirNomeProduto(itemPedido.NomeProduto);
                notaFiscalItem.AtribuirCodigoProduto(itemPedido.CodigoProduto);

                ItensDaNotaFiscal.Add(notaFiscalItem);
            }
        }
Ejemplo n.º 6
0
        public string EmitirNotaFiscal(Pedido pedido)
        {
            // nº de NF será obtida através de um objeto SEQUENCE na procedure P_NOTA_FISCAL
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem = pedido.EstadoOrigem;

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                
                var tratFiscal = Repository.ObterTratamentoFiscal(this.EstadoOrigem, this.EstadoDestino, itemPedido.Brinde);

                if (tratFiscal.Id == 0)
                    return "Não foi encontrado nenhum Tratamento Fiscal para os Estados selecionados.";

                notaFiscalItem.Cfop = tratFiscal.Cfop;
                notaFiscalItem.TipoIcms = tratFiscal.TipoIcms;
                notaFiscalItem.AliquotaIcms = tratFiscal.AliquotaIcms;
                notaFiscalItem.AliquotaIpi = tratFiscal.AliquotaIpi;
                notaFiscalItem.ValorItemPedido = itemPedido.ValorItemPedido;
                notaFiscalItem.Brinde = itemPedido.Brinde;

                // Aplica desconto, caso haja
                if (tratFiscal.Desconto > 0)
                {
                    itemPedido.ValorItemPedido -= (itemPedido.ValorItemPedido * tratFiscal.Desconto) / 100;
                    notaFiscalItem.Desconto = tratFiscal.Desconto;
                }

                // Calcula ICMS / redução de base
                if (tratFiscal.ReducaoBaseIcms > 0)                
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * tratFiscal.ReducaoBaseIcms;                 
                else                
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;

                if (notaFiscalItem.AliquotaIcms > 0)
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;      

                // Calcula IPI
                notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido;

                if (notaFiscalItem.AliquotaIpi > 0)
                    notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;
                
                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                ItensDaNotaFiscal.Add(notaFiscalItem);
                
            }
            return "";
        }
Ejemplo n.º 7
0
 private void CalculaDesconto(NotaFiscalItem notaFiscalItem)
 {
     if (EstadoFuncs.EstadoSudeste(EstadoDestino)) // Adicionado por Luiz - Referente ao item 07 do teste
     {
         notaFiscalItem.Desconto = 0.1;            // 10% para Sudeste
     }
     else
     {
         notaFiscalItem.Desconto = 0;
     }
 }
Ejemplo n.º 8
0
        private static void PossuiBrinde(PedidoItem itemPedido, NotaFiscalItem notaFiscalItem)
        {
            if (itemPedido.Brinde)
            {
                notaFiscalItem.TipoIcms     = "60";
                notaFiscalItem.AliquotaIcms = 0.18;
                notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                notaFiscalItem.AliquotaIPI = 0;
                notaFiscalItem.ValorIPI    = notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI;
            }
        }
Ejemplo n.º 9
0
        public NotaFiscal EmitirNotaFiscal(Pedido pedido)
        {
            NotaFiscal notaFiscal = new NotaFiscal();

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

            notaFiscal.EstadoDestino = pedido.EstadoDestino;
            notaFiscal.EstadoOrigem = pedido.EstadoOrigem;

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

                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                notaFiscalItem.Cfop = new CfopService().ObterCfop(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino);

                //Cálculo do ICMS
                if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem || itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

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

                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                //Cálculo do Ipi
                notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido;
                notaFiscalItem.AliquotaIpi = (itemPedido.Brinde ? 0 : 0.1);
                notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;

                //Cálculo do desconto
                notaFiscalItem.Desconto = new DescontoService().CalcularDesconto(notaFiscal.EstadoDestino);

                notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            return notaFiscal;
        }
Ejemplo n.º 10
0
 private static void CalculaIPI(NotaFiscalItem notaFiscalItem, PedidoItem itemPedido)
 {
     if (itemPedido.Brinde)              // Adicionado por Luiz - Referente ao item 03 do teste
     {
         notaFiscalItem.AliquotaIpi = 0; // se brinde alíquota é 0
     }
     else
     {
         notaFiscalItem.AliquotaIpi = 0.1;                 // se não brinde alíquota é 10%
     }
     notaFiscalItem.BaseIpi  = itemPedido.ValorItemPedido; // Base de cálculo do IPI igual ao valor total do produto
     notaFiscalItem.ValorIPI = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;
 }
Ejemplo n.º 11
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;
            this.EstadoDestino    = pedido.EstadoDestino; // Correção na inversão de UF.
            this.EstadoOrigem     = pedido.EstadoOrigem;

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

                GetCFOP(ref notaFiscalItem);

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                    notaFiscalItem.BaseIPI  = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = Math.Round(notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms, 2);
                notaFiscalItem.ValorIPI  = Math.Round(notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI, 2);

                PossuiBrinde(itemPedido, notaFiscalItem);

                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                this.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            NotaDesconto.aplicarDesconto(this);
        }
Ejemplo n.º 12
0
        private void MapearNotaFiscalItem(PedidoItem itemPedido)
        {
            NotaFiscalItem notaFiscalItem = new NotaFiscalItem();

            notaFiscalItem.NomeProduto    = itemPedido.NomeProduto;
            notaFiscalItem.CodigoProduto  = itemPedido.CodigoProduto;
            notaFiscalItem.BaseCalculoIPI = itemPedido.ValorItemPedido;

            notaFiscalItem.DefinirCfop(this.EstadoOrigem, this.EstadoDestino);

            notaFiscalItem.AplicaRegraMesmoEstadoOrigemDestino(this.EstadoOrigem, this.EstadoDestino, itemPedido.Brinde);

            notaFiscalItem.AplicaRegraBaseIcms(itemPedido.ValorItemPedido);

            notaFiscalItem.AplicaAliquotaIPI(itemPedido.Brinde);

            notaFiscalItem.AplicaDesconto(this.EstadoDestino);

            this.ItensDaNotaFiscal.Add(notaFiscalItem);
        }
Ejemplo n.º 13
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem  = pedido.EstadoDestino;

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
            }
        }
Ejemplo n.º 14
0
 private void GetCFOP(ref NotaFiscalItem notaFiscalItem)
 {
     if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
     {
         notaFiscalItem.Cfop = "6.000";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
     {
         notaFiscalItem.Cfop = "6.001";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
     {
         notaFiscalItem.Cfop = "6.002";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
     {
         notaFiscalItem.Cfop = "6.003";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
     {
         notaFiscalItem.Cfop = "6.004";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
     {
         notaFiscalItem.Cfop = "6.005";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
     {
         notaFiscalItem.Cfop = "6.006";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.007";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
     {
         notaFiscalItem.Cfop = "6.008";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.009";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
     {
         notaFiscalItem.Cfop = "6.010";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
     {
         notaFiscalItem.Cfop = "6.000";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
     {
         notaFiscalItem.Cfop = "6.001";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
     {
         notaFiscalItem.Cfop = "6.002";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
     {
         notaFiscalItem.Cfop = "6.003";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
     {
         notaFiscalItem.Cfop = "6.004";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
     {
         notaFiscalItem.Cfop = "6.005";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
     {
         notaFiscalItem.Cfop = "6.006";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.007";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
     {
         notaFiscalItem.Cfop = "6.008";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.009";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
     {
         notaFiscalItem.Cfop = "6.010";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO")) // Correção de bug Ex. 5
     {
         notaFiscalItem.Cfop = "6.006";
     }
 }
Ejemplo n.º 15
0
        public int EmitirNotaFiscal(Pedido pedido)
        {
            NotaFiscalRepository nfRepository = new NotaFiscalRepository();

            this.NumeroNotaFiscal = nfRepository.RetornarMaxNumeroNota() + 1;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem  = pedido.EstadoOrigem;


            string cfop = nfRepository.BuscaDefinicaoCFOP(this.EstadoOrigem, this.EstadoDestino);

            if (cfop != "")
            {
                foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
                {
                    NotaFiscalItem notaFiscalItem = new NotaFiscalItem();

                    notaFiscalItem.Cfop         = cfop;
                    notaFiscalItem.IdNotaFiscal = this.NumeroNotaFiscal;

                    if (this.EstadoDestino == this.EstadoOrigem)
                    {
                        notaFiscalItem.TipoIcms     = "60";
                        notaFiscalItem.AliquotaIcms = 0.18;
                    }
                    else
                    {
                        notaFiscalItem.TipoIcms     = "10";
                        notaFiscalItem.AliquotaIcms = 0.17;
                    }
                    if (notaFiscalItem.Cfop == "6.009")
                    {
                        notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                    }
                    else
                    {
                        notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                    }
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                    if (itemPedido.Brinde)
                    {
                        //Cálculo ICMS
                        notaFiscalItem.TipoIcms     = "60";
                        notaFiscalItem.AliquotaIcms = 0.18;
                        notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                        //Cálculo IPI
                        notaFiscalItem.BaseIpi     = itemPedido.ValorItemPedido;
                        notaFiscalItem.AliquotaIpi = 0.1;
                    }
                    notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;

                    notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                    notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                    ItensDaNotaFiscal.Add(notaFiscalItem);
                }

                int sucessoXML = GerarXML(this);

                if (sucessoXML == 0)
                {
                    nfRepository.InserirPedido(this);

                    //operação bem sucedida
                    return(0);
                }
                else
                {
                    return(sucessoXML);
                }
            }

            else
            {
                // Erro de Estado/Destino não possui definição de CFOP
                return(1);
            }
        }
Ejemplo n.º 16
0
        private static void PossuiBrinde(PedidoItem itemPedido, NotaFiscalItem notaFiscalItem)
        {
            if (itemPedido.Brinde)
            {
                notaFiscalItem.TipoIcms = "60";
                notaFiscalItem.AliquotaIcms = 0.18;
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                notaFiscalItem.AliquotaIPI = 0;
                notaFiscalItem.ValorIPI = notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI;
            }
        }
Ejemplo n.º 17
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem = pedido.EstadoDestino;

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido*0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms*notaFiscalItem.AliquotaIcms;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
            }
        }
Ejemplo n.º 18
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;
            this.EstadoDestino = pedido.EstadoDestino; // Correção na inversão de UF.
            this.EstadoOrigem = pedido.EstadoOrigem;

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

                GetCFOP(ref notaFiscalItem);

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido*0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                    notaFiscalItem.BaseIPI = itemPedido.ValorItemPedido;

                }
                notaFiscalItem.ValorIcms = Math.Round(notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms,2);
                notaFiscalItem.ValorIPI = Math.Round(notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI, 2);

                PossuiBrinde(itemPedido, notaFiscalItem);

                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                this.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            NotaDesconto.aplicarDesconto(this);
        }
Ejemplo n.º 19
0
 private void GetCFOP(ref NotaFiscalItem notaFiscalItem)
 {
     if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
     {
         notaFiscalItem.Cfop = "6.000";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
     {
         notaFiscalItem.Cfop = "6.001";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
     {
         notaFiscalItem.Cfop = "6.002";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
     {
         notaFiscalItem.Cfop = "6.003";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
     {
         notaFiscalItem.Cfop = "6.004";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
     {
         notaFiscalItem.Cfop = "6.005";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
     {
         notaFiscalItem.Cfop = "6.006";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.007";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
     {
         notaFiscalItem.Cfop = "6.008";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.009";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
     {
         notaFiscalItem.Cfop = "6.010";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
     {
         notaFiscalItem.Cfop = "6.000";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
     {
         notaFiscalItem.Cfop = "6.001";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
     {
         notaFiscalItem.Cfop = "6.002";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
     {
         notaFiscalItem.Cfop = "6.003";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
     {
         notaFiscalItem.Cfop = "6.004";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
     {
         notaFiscalItem.Cfop = "6.005";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
     {
         notaFiscalItem.Cfop = "6.006";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.007";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
     {
         notaFiscalItem.Cfop = "6.008";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
     {
         notaFiscalItem.Cfop = "6.009";
     }
     else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
     {
         notaFiscalItem.Cfop = "6.010";
     }
     else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO")) // Correção de bug Ex. 5
     {
         notaFiscalItem.Cfop = "6.006";
     }
 }
Ejemplo n.º 20
0
        private void CalculaCFOP(NotaFiscalItem notaFiscalItem)
        {
            string defaultCfop = "0.000";

            switch (EstadoOrigem.siglaEstado)
            {
            case "SP":
                switch (EstadoDestino.siglaEstado)
                {
                case "RJ":
                    notaFiscalItem.Cfop = "6.000";
                    break;

                case "PE":
                    notaFiscalItem.Cfop = "6.001";
                    break;

                case "MG":
                    notaFiscalItem.Cfop = "6.002";
                    break;

                case "PB":
                    notaFiscalItem.Cfop = "6.003";
                    break;

                case "PR":
                    notaFiscalItem.Cfop = "6.004";
                    break;

                case "PI":
                    notaFiscalItem.Cfop = "6.005";
                    break;

                case "RO":
                    notaFiscalItem.Cfop = "6.006";
                    break;

                case "SE":
                    notaFiscalItem.Cfop = "6.007";
                    break;

                case "TO":
                    notaFiscalItem.Cfop = "6.008";
                    break;

                /*case "SE":
                 *  notaFiscalItem.Cfop = "6.009";  // no código existia duas vezes SP/SE, só foi possível identificar trocando o if pelo switch
                 *  break;*/
                case "PA":
                    notaFiscalItem.Cfop = "6.010";
                    break;

                default:
                    notaFiscalItem.Cfop = defaultCfop;         // caso não se enquadre nas opções abaixo o CFOP não pode ficar vazio
                    break;
                }
                break;

            case "MG":
                switch (EstadoDestino.siglaEstado)
                {
                case "RJ":
                    notaFiscalItem.Cfop = "6.000";
                    break;

                case "PE":
                    notaFiscalItem.Cfop = "6.001";
                    break;

                case "MG":
                    notaFiscalItem.Cfop = "6.002";
                    break;

                case "PB":
                    notaFiscalItem.Cfop = "6.003";
                    break;

                case "PR":
                    notaFiscalItem.Cfop = "6.004";
                    break;

                case "PI":
                    notaFiscalItem.Cfop = "6.005";
                    break;

                case "RO":
                    notaFiscalItem.Cfop = "6.006";
                    break;

                case "SE":
                    notaFiscalItem.Cfop = "6.007";
                    break;

                case "TO":
                    notaFiscalItem.Cfop = "6.008";
                    break;

                /*case "SE":
                 *  notaFiscalItem.Cfop = "6.009";  // no código existia duas vezes SP/SE, só foi possível identificar trocando o if pelo switch
                 *  break;*/
                case "PA":
                    notaFiscalItem.Cfop = "6.010";
                    break;

                default:
                    notaFiscalItem.Cfop = defaultCfop;         // caso não se enquadre nas opções abaixo o CFOP não pode ficar vazio
                    break;
                }
                break;

            default:
                notaFiscalItem.Cfop = defaultCfop;     // caso não se enquadre nas opções abaixo o CFOP não pode ficar vazio
                break;
            }
        }
Ejemplo n.º 21
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem  = pedido.EstadoOrigem;

            var ItensDaNotaFiscalAdicionar = new List <NotaFiscalItem>();

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                #region Define CFOP
                if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                #endregion

                #region Define o ICMS
                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
                #endregion

                #region Cálculo IPI
                var valorAliquotaIpi = 0.1;
                notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido;

                if (itemPedido.Brinde)
                {
                    valorAliquotaIpi = 0.0;
                }

                notaFiscalItem.AliquotaIpi = valorAliquotaIpi;
                notaFiscalItem.ValorIpi    = (notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi);
                #endregion

                #region Desconto
                EstadoSudeste estadoSuldeste = new EstadoSudeste();
                if (estadoSuldeste.verificarEstadoSudeste(pedido.EstadoDestino))
                {
                    notaFiscalItem.Desconto = (itemPedido.ValorItemPedido * 0.10);
                }
                #endregion

                ItensDaNotaFiscalAdicionar.Add(notaFiscalItem);
            }

            this.ItensDaNotaFiscal = ItensDaNotaFiscalAdicionar;

            if (!gerarNotaXML(this))
            {
                return;
            }

            NotaFiscalRepository repositorioNotaFiscal = new NotaFiscalRepository();
            repositorioNotaFiscal.salvarNotaFiscal(this);

            if (this.Id > 0)
            {
                repositorioNotaFiscal.salvarItemNotaFiscal(this);
            }
            else
            {
                return;
            }
        }
Ejemplo n.º 22
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;

            // correção do erro: variáveis invertidas
            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem = pedido.EstadoOrigem;

            // Conexao ao banco de dados
            String connStr = ConfigurationManager.ConnectionStrings["MyDBConnectionString"].ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            // insertando os valores P_NOTA_FISCAL
            SqlCommand cmd = new SqlCommand("P_NOTA_FISCAL", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pId", SqlDbType.Int).Value = this.Id;
            cmd.Parameters.Add("@pNumeroNotaFiscal", SqlDbType.Int).Value = this.NumeroNotaFiscal;
            cmd.Parameters.Add("@pSerie", SqlDbType.Int).Value = this.Serie;
            cmd.Parameters.Add("@pNomeCliente", SqlDbType.VarChar).Value = this.NomeCliente;
            cmd.Parameters.Add("@pEstadoDestino", SqlDbType.VarChar).Value = this.EstadoDestino;
            cmd.Parameters.Add("@pEstadoOrigem", SqlDbType.VarChar).Value = this.EstadoOrigem;

            conn.Open();
            cmd.ExecuteNonQuery();

            SqlCommand cmdId = new SqlCommand();

            // obter o max Id gerado para associar aos itens de pedido
            cmdId.CommandText = "Select max(id) from notaFiscal";
            cmdId.CommandType = CommandType.Text;
            cmdId.Connection = conn;

            this.Id = (int)cmdId.ExecuteScalar();

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

                notaFiscalItem.IdNotaFiscal = this.Id;

                // melhora da complexidade ciclomática
                if (this.EstadoOrigem == "SP")
                {
                    switch (this.EstadoDestino)
                    {
                        case "RJ":
                            notaFiscalItem.Cfop = "6.000";
                            break;
                        case "PE":
                            notaFiscalItem.Cfop = "6.001";
                            break;
                        case "MG":
                            notaFiscalItem.Cfop = "6.002";
                            break;
                        case "PB":
                            notaFiscalItem.Cfop = "6.003";
                            break;
                        case "PR":
                            notaFiscalItem.Cfop = "6.004";
                            break;
                        case "PI":
                            notaFiscalItem.Cfop = "6.005";
                            break;
                        case "RO":
                            notaFiscalItem.Cfop = "6.006";
                            break;
                        case "SE":
                            notaFiscalItem.Cfop = "6.007";
                            break;
                        case "TO":
                            notaFiscalItem.Cfop = "6.008";
                            break;
                        case "PA":
                            notaFiscalItem.Cfop = "6.010";
                            break;
                    }
                }
                else if (this.EstadoOrigem == "MG")
                {
                    switch (this.EstadoDestino)
                    {
                        case "RJ":
                            notaFiscalItem.Cfop = "6.000";
                            break;
                        case "PE":
                            notaFiscalItem.Cfop = "6.001";
                            break;
                        case "MG":
                            notaFiscalItem.Cfop = "6.002";
                            break;
                        case "PB":
                            notaFiscalItem.Cfop = "6.003";
                            break;
                        case "PR":
                            notaFiscalItem.Cfop = "6.004";
                            break;
                        case "PI":
                            notaFiscalItem.Cfop = "6.005";
                            break;
                        case "RO":
                            notaFiscalItem.Cfop = "6.006";
                            break;
                        case "SE":
                            notaFiscalItem.Cfop = "6.007";
                            break;
                        case "TO":
                            notaFiscalItem.Cfop = "6.008";
                            break;
                        case "PA":
                            notaFiscalItem.Cfop = "6.010";
                            break;
                    }
                }

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

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

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

                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                /******* Adiciono valores de IPI ******/
                //Valor Base Ipi
                notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido;
                //Aliquota Ipi
                if (itemPedido.Brinde)
                {
                    // Se for Brinde
                    notaFiscalItem.AliquotaIpi = 0;
                }
                else
                {
                    // Se não é Brinde
                    notaFiscalItem.AliquotaIpi = 0.10;
                }
                //Valor Ipi = Base Cálculo Ipi * Aliquota Ipi
                notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;

                // Valor Desconto para clientes onde EstadoDestino seja Sudoeste.
                if (this.EstadoDestino == "SP" || this.EstadoDestino == "RJ" || this.EstadoDestino == "ES" || this.EstadoDestino == "MG")
                {
                    notaFiscalItem.Desconto = 0.10;
                }

                // insertando os valores P_NOTA_FISCAL_ITEM
                SqlCommand cmdIt = new SqlCommand("P_NOTA_FISCAL_ITEM", conn);
                cmdIt.CommandType = CommandType.StoredProcedure;
                cmdIt.Parameters.Add("@pId", SqlDbType.Int).Value = notaFiscalItem.Id;
                cmdIt.Parameters.Add("@pIdNotaFiscal", SqlDbType.Int).Value = notaFiscalItem.IdNotaFiscal;
                cmdIt.Parameters.Add("@pCfop", SqlDbType.VarChar).Value = notaFiscalItem.Cfop;
                cmdIt.Parameters.Add("@pTipoIcms", SqlDbType.VarChar).Value = notaFiscalItem.TipoIcms;
                cmdIt.Parameters.Add("@pBaseIcms", SqlDbType.Decimal).Value = notaFiscalItem.BaseIcms;
                cmdIt.Parameters.Add("@pAliquotaIcms", SqlDbType.Decimal).Value = notaFiscalItem.AliquotaIcms;
                cmdIt.Parameters.Add("@pValorIcms", SqlDbType.Decimal).Value = notaFiscalItem.ValorIcms;
                cmdIt.Parameters.Add("@pNomeProduto", SqlDbType.VarChar).Value = notaFiscalItem.NomeProduto;
                cmdIt.Parameters.Add("@pCodigoProduto", SqlDbType.VarChar).Value = notaFiscalItem.CodigoProduto;
                cmdIt.Parameters.Add("@pBaseIpi", SqlDbType.Decimal).Value = notaFiscalItem.BaseIpi;
                cmdIt.Parameters.Add("@pAliquotaIpi", SqlDbType.Decimal).Value = notaFiscalItem.AliquotaIpi;
                cmdIt.Parameters.Add("@pValorIpi", SqlDbType.Decimal).Value = notaFiscalItem.ValorIpi;
                cmdIt.Parameters.Add("@pDesconto", SqlDbType.Decimal).Value = notaFiscalItem.Desconto;

                cmdIt.ExecuteNonQuery();
            }

            // Persistência de dados XML
            System.Xml.Serialization.XmlSerializer writer =
                new System.Xml.Serialization.XmlSerializer(typeof(NotaFiscal));

            var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//NotaFiscal_" + this.Id +".xml";
            System.IO.FileStream file = System.IO.File.Create(path);

            writer.Serialize(file, this);
            file.Close();

            // fechando db
            conn.Close();
        }
Ejemplo n.º 23
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem = pedido.EstadoOrigem; //Estava invertido

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido*0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms*notaFiscalItem.AliquotaIcms;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                //Romadier Mendonça
                //Aplicando regra de IPI
                if (itemPedido.Brinde)
                    notaFiscalItem.AliquotaIpi = 0;
                else
                    notaFiscalItem.AliquotaIpi = 0.10;

                notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido;
                notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;

                //Romadier Mendonça
                //Preenchendo o campo desconto quando o cliente for do sudeste
                if (this.EstadoDestino == "SP" || this.EstadoDestino == "MG" || this.EstadoDestino == "RJ" || this.EstadoDestino == "ES")
                    notaFiscalItem.Desconto = itemPedido.ValorItemPedido * 0.10;
                else
                    notaFiscalItem.Desconto = 0;

                //Romadier Mendonça
                //Não estava gravando o item
                this.ItensDaNotaFiscal.Add(notaFiscalItem);
            }
        }
Ejemplo n.º 24
0
        public NotaFiscal EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = new Random().Next(int.MaxValue);
            this.Serie = new Random().Next(Int32.MaxValue);
            this.NomeCliente = pedido.NomeCliente;

            this.EstadoOrigem = pedido.EstadoOrigem;
            this.EstadoDestino = pedido.EstadoDestino;

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

                CFOP cfop = new CFOP();

                notaFiscalItem.Cfop = cfop.CalcularCFOP(this);

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido*0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms*notaFiscalItem.AliquotaIcms;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                }

                AliquotaIPI Aliq = new AliquotaIPI();
                notaFiscalItem.AliquotaIPI = Aliq.CalcularAliquotaIPI(itemPedido.Brinde);
                notaFiscalItem.BaseIPI = itemPedido.ValorItemPedido;
                notaFiscalItem.ValorIPI = notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI;

                notaFiscalItem.NomeProduto = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
                notaFiscalItem.IdNotaFiscal = this.NumeroNotaFiscal;

                Desconto Desc = new Desconto();
                notaFiscalItem.Desconto = Desc.CalcularDesconto(this) * itemPedido.ValorItemPedido;

                this.ItensDaNotaFiscal.Add(notaFiscalItem);
            }

            return this;
        }
Ejemplo n.º 25
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem  = pedido.EstadoDestino;
            string[] descontoSudeste = { "SP", "RJ", "MG", "ES" };

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

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

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

                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;
                if (descontoSudeste.Contains(EstadoDestino.ToUpper()))
                {
                    itemPedido.ValorItemPedido = itemPedido.ValorItemPedido - (itemPedido.ValorItemPedido * 0.1);
                }

                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
                (ItensDaNotaFiscal as List <NotaFiscalItem>).Add(notaFiscalItem);
            }
        }
Ejemplo n.º 26
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            try
            {
                String[] sudeste = { "SP", "MG", "ES", "RJ" };

                this.NumeroNotaFiscal = 99999;
                this.Serie            = new Random().Next(Int32.MaxValue);
                this.NomeCliente      = pedido.NomeCliente;

                this.EstadoDestino = pedido.EstadoOrigem;
                this.EstadoOrigem  = pedido.EstadoDestino;

                if (sudeste.Contains(this.EstadoDestino))
                {
                    this.Desconto = 10;
                }
                else
                {
                    this.Desconto = 0;
                }

                foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
                {
                    NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                    if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                    {
                        notaFiscalItem.Cfop = "6.000";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                    {
                        notaFiscalItem.Cfop = "6.001";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                    {
                        notaFiscalItem.Cfop = "6.002";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                    {
                        notaFiscalItem.Cfop = "6.003";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                    {
                        notaFiscalItem.Cfop = "6.004";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                    {
                        notaFiscalItem.Cfop = "6.005";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                    {
                        notaFiscalItem.Cfop = "6.006";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                    {
                        notaFiscalItem.Cfop = "6.007";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                    {
                        notaFiscalItem.Cfop = "6.008";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                    {
                        notaFiscalItem.Cfop = "6.009";
                    }
                    else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                    {
                        notaFiscalItem.Cfop = "6.010";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                    {
                        notaFiscalItem.Cfop = "6.000";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                    {
                        notaFiscalItem.Cfop = "6.001";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                    {
                        notaFiscalItem.Cfop = "6.002";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                    {
                        notaFiscalItem.Cfop = "6.003";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                    {
                        notaFiscalItem.Cfop = "6.004";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                    {
                        notaFiscalItem.Cfop = "6.005";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                    {
                        notaFiscalItem.Cfop = "6.006";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                    {
                        notaFiscalItem.Cfop = "6.007";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                    {
                        notaFiscalItem.Cfop = "6.008";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                    {
                        notaFiscalItem.Cfop = "6.009";
                    }
                    else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                    {
                        notaFiscalItem.Cfop = "6.010";
                    }
                    if (this.EstadoDestino == this.EstadoOrigem)
                    {
                        notaFiscalItem.TipoIcms     = "60";
                        notaFiscalItem.AliquotaIcms = 0.18;
                    }
                    else
                    {
                        notaFiscalItem.TipoIcms     = "10";
                        notaFiscalItem.AliquotaIcms = 0.17;
                    }
                    if (notaFiscalItem.Cfop == "6.009")
                    {
                        notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                    }
                    else
                    {
                        notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                    }
                    notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                    if (itemPedido.Brinde)
                    {
                        notaFiscalItem.TipoIcms     = "60";
                        notaFiscalItem.AliquotaIcms = 0.18;
                        notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                        notaFiscalItem.BaseIPI     = itemPedido.ValorItemPedido;
                        notaFiscalItem.AliquotaIPI = 0;
                        notaFiscalItem.ValorIPI    = 0;
                    }
                    else
                    {
                        notaFiscalItem.BaseIPI     = itemPedido.ValorItemPedido;
                        notaFiscalItem.AliquotaIPI = 0.1;
                        notaFiscalItem.ValorIPI    = notaFiscalItem.BaseIPI * notaFiscalItem.AliquotaIPI;
                    }
                    notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                    notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                    this.ItensDaNotaFiscal.Add(notaFiscalItem);
                }

                XmlSerializer serializer = new XmlSerializer(this.GetType());
                using (StreamWriter writer = new StreamWriter("C:\\NotasFiscais\\" + this.NumeroNotaFiscal + ".xml"))
                {
                    serializer.Serialize(writer, this);
                }

                using (SqlConnection con = new SqlConnection("Server=(localdb)\\Lourival;Database=teste;Trusted_Connection=True;"))
                {
                    using (SqlCommand cmd = new SqlCommand("P_NOTA_FISCAL", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("@pId", SqlDbType.Int).Value = this.Id;
                        cmd.Parameters.Add("@pNumeroNotaFiscal", SqlDbType.Int).Value  = this.NumeroNotaFiscal;
                        cmd.Parameters.Add("@pSerie", SqlDbType.Int).Value             = this.Serie;
                        cmd.Parameters.Add("@pNomeCliente", SqlDbType.VarChar).Value   = this.NomeCliente;
                        cmd.Parameters.Add("@pEstadoDestino", SqlDbType.VarChar).Value = this.EstadoDestino;
                        cmd.Parameters.Add("@pEstadoOrigem", SqlDbType.VarChar).Value  = this.EstadoOrigem;
                        cmd.Parameters.Add("@pDesconto", SqlDbType.Int).Value          = this.Desconto;

                        con.Open();
                        cmd.ExecuteNonQuery();

                        foreach (NotaFiscalItem item in this.ItensDaNotaFiscal)
                        {
                            using (SqlCommand cmd2 = new SqlCommand("P_NOTA_FISCAL_ITEM", con))
                            {
                                cmd2.CommandType = CommandType.StoredProcedure;

                                cmd2.Parameters.Add("@pId", SqlDbType.Int).Value                = item.Id;
                                cmd2.Parameters.Add("@pIdNotaFiscal", SqlDbType.Int).Value      = item.IdNotaFiscal;
                                cmd2.Parameters.Add("@pCfop", SqlDbType.VarChar).Value          = item.Cfop;
                                cmd2.Parameters.Add("@pTipoIcms", SqlDbType.Decimal).Value      = item.TipoIcms;
                                cmd2.Parameters.Add("@pBaseIcms", SqlDbType.Decimal).Value      = item.BaseIcms;
                                cmd2.Parameters.Add("@pAliquotaIcms", SqlDbType.Decimal).Value  = item.AliquotaIcms;
                                cmd2.Parameters.Add("@pValorIcms", SqlDbType.Decimal).Value     = item.ValorIcms;
                                cmd2.Parameters.Add("@pBaseIPI", SqlDbType.Decimal).Value       = item.BaseIPI;
                                cmd2.Parameters.Add("@pAliquotaIPI", SqlDbType.Decimal).Value   = item.AliquotaIPI;
                                cmd2.Parameters.Add("@pValorIPI", SqlDbType.Decimal).Value      = item.ValorIPI;
                                cmd2.Parameters.Add("@pNomeProduto", SqlDbType.VarChar).Value   = item.NomeProduto;
                                cmd2.Parameters.Add("@pCodigoProduto", SqlDbType.VarChar).Value = item.CodigoProduto;

                                cmd2.ExecuteNonQuery();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 27
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            //Exercicio 1 e 2

            ItensDaNotaFiscal = new List <NotaFiscalItem>();
            NotaFiscal notaFiscal = this;

            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            //Exercicio 5
            this.EstadoDestino = pedido.EstadoDestino;
            this.EstadoOrigem  = pedido.EstadoOrigem;

            string        strCon = "Data Source=ERON-PC\\SQLEXPRESS;Initial Catalog=Teste;Integrated Security=SSPI;User ID=Eron-PC\\Eron;Password=ev258074;";
            SqlConnection conn   = new SqlConnection(strCon);

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "SP") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RJ"))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PE"))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "MG"))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PB"))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PR"))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PI"))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "RO"))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "TO"))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "SE"))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == "MG") && (this.EstadoDestino == "PA"))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }
                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }
                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                }
                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;

                //Exercicio 3

                notaFiscalItem.BaseCalculoIPI = itemPedido.ValorItemPedido;
                if (itemPedido.Brinde == true)
                {
                    notaFiscalItem.AliquotaIPI = 0;
                }
                else
                {
                    notaFiscalItem.AliquotaIPI = 0.10;
                }
                notaFiscalItem.ValorIPI = notaFiscalItem.BaseCalculoIPI * notaFiscalItem.AliquotaIPI;

                string        dirXML     = ConfigurationManager.AppSettings["diretorioXML"] + "\\NF" + this.NumeroNotaFiscal + ".xml";
                StringWriter  writer     = new StringWriter();
                XmlSerializer serializer = new XmlSerializer(typeof(NotaFiscalItem));

                using (FileStream st = File.Open(dirXML, FileMode.Create, FileAccess.Write))
                {
                    serializer.Serialize(writer, notaFiscalItem);
                }
                XmlDocument xdoc = new XmlDocument();
                xdoc.LoadXml(writer.ToString());
                xdoc.Save(dirXML);
                writer.Close();


                try
                {
                    conn.Open();
                    SqlCommand cmd2 = new SqlCommand("P_NOTA_FISCAL_ITEM", conn);
                    cmd2.CommandType = CommandType.StoredProcedure;
                    cmd2.Parameters.AddWithValue("@pId", 0);
                    cmd2.Parameters.AddWithValue("@pIdNotaFiscal", notaFiscalItem.IdNotaFiscal);
                    cmd2.Parameters.AddWithValue("@pCfop", notaFiscalItem.Cfop);
                    cmd2.Parameters.AddWithValue("@pTipoIcms", notaFiscalItem.TipoIcms);
                    cmd2.Parameters.AddWithValue("@pBaseIcms", notaFiscalItem.BaseIcms);
                    cmd2.Parameters.AddWithValue("@pAliquotaIcms", notaFiscalItem.AliquotaIcms);
                    cmd2.Parameters.AddWithValue("@pValorIcms", notaFiscalItem.ValorIcms);
                    cmd2.Parameters.AddWithValue("@pNomeProduto", notaFiscalItem.NomeProduto);
                    cmd2.Parameters.AddWithValue("@pCodigoProduto", notaFiscalItem.CodigoProduto);
                    cmd2.Parameters.AddWithValue("@pBaseCalculoIPI", notaFiscalItem.BaseCalculoIPI);
                    cmd2.Parameters.AddWithValue("@pAliquotaIPI", notaFiscalItem.AliquotaIPI);
                    cmd2.Parameters.AddWithValue("@pValorIPI", notaFiscalItem.ValorIPI);
                    cmd2.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    conn.Close();
                }
            }
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("P_NOTA_FISCAL", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@pId", this.Id);
                cmd.Parameters.AddWithValue("@pNumeroNotaFiscal", this.NumeroNotaFiscal);
                cmd.Parameters.AddWithValue("@pSerie", this.Serie);
                cmd.Parameters.AddWithValue("@pNomeCliente", this.NomeCliente);
                cmd.Parameters.AddWithValue("@pEstadoOrigem", this.EstadoOrigem);
                cmd.Parameters.AddWithValue("@pEstadoDestino", this.EstadoDestino);
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }
Ejemplo n.º 28
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem  = pedido.EstadoDestino;


            List <NotaFiscalItem> list = new List <NotaFiscalItem>();

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

                if (Desconto.TemDesconto(this.EstadoDestino))
                {
                    itemPedido.ValorItemPedido = itemPedido.ValorItemPedido * 0.9;
                }

                if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.RJ.ToString()))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.PE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.MG.ToString()))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.PB.ToString()))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.PR.ToString()))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.PI.ToString()))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.RO.ToString()))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.SE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.TO.ToString()))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.SE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == Estado.SP.ToString()) && (this.EstadoDestino == Estado.PA.ToString()))
                {
                    notaFiscalItem.Cfop = "6.010";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.RJ.ToString()))
                {
                    notaFiscalItem.Cfop = "6.000";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.PE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.001";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.MG.ToString()))
                {
                    notaFiscalItem.Cfop = "6.002";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.PB.ToString()))
                {
                    notaFiscalItem.Cfop = "6.003";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.PR.ToString()))
                {
                    notaFiscalItem.Cfop = "6.004";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.PI.ToString()))
                {
                    notaFiscalItem.Cfop = "6.005";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.RO.ToString()))
                {
                    notaFiscalItem.Cfop = "6.006";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.SE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.007";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.TO.ToString()))
                {
                    notaFiscalItem.Cfop = "6.008";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.SE.ToString()))
                {
                    notaFiscalItem.Cfop = "6.009";
                }
                else if ((this.EstadoOrigem == Estado.MG.ToString()) && (this.EstadoDestino == Estado.PA.ToString()))
                {
                    notaFiscalItem.Cfop = "6.010";
                }

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.Cfop         = "6.006";
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                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.10;
                }

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

                ItensDaNotaFiscal.Add(notaFiscalItem);
            }
        }