示例#1
0
        private void buttonGerarNotaFiscal_Click(object sender, EventArgs e)
        {
            Pedido pedido = new Pedido();
            NotaFiscalService service = new NotaFiscalService();

            pedido.EstadoOrigem = cboEstadoOrigem.Text;
            pedido.EstadoDestino = cboEstadoDestino.Text;
            pedido.NomeCliente = textBoxNomeCliente.Text;

            DataTable table = (DataTable)dataGridViewPedidos.DataSource;
            foreach (DataRow row in table.Rows)
            {
                pedido.ItensDoPedido.Add(
                    new PedidoItem()
                    {
                        Brinde = Convert.ToBoolean(row["Brinde"]),
                        CodigoProduto =  row["Codigo do produto"].ToString(),
                        NomeProduto = row["Nome do produto"].ToString(),
                        ValorItemPedido = Convert.ToDouble(row["Valor"].ToString())
                    });
            }

            service.GerarNotaFiscal(pedido);

            MessageBox.Show("Operação efetuada com sucesso", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Information);

            LimparTela();
            textBoxNomeCliente.Focus();
        }
示例#2
0
        public void TestarAliquotaIcms()
        {
            //Realiza o teste entre todas as possibilidades de estados Origem e Destino (com item brinde e não)
            //Regra: Estado origem = destino ou item é brinde -> Aliq. ICMS 0.18 caso contrário Aliq. ICMS 0.17
            Pedido pedido = new Pedido();
            pedido.ItensDoPedido.Add(new PedidoItem());

            for (int i = 0; i < 2; i++)
            {
                pedido.ItensDoPedido[0].Brinde = (i == 0);

                foreach (var ufOrigem in Estados)
                {
                    pedido.EstadoOrigem = ufOrigem;

                    foreach (var UfDestino in Estados)
                    {
                        pedido.EstadoDestino = UfDestino;

                        NotaFiscal notaFiscal = new NotaFiscalService().EmitirNotaFiscal(pedido);

                        if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem || pedido.ItensDoPedido[0].Brinde)
                            Assert.AreEqual(0.18, notaFiscal.ItensDaNotaFiscal[0].AliquotaIcms, "Alíquota de ICMS inválida!");
                        else
                            Assert.AreEqual(0.17, notaFiscal.ItensDaNotaFiscal[0].AliquotaIcms, "Alíquota de ICMS inválida!");
                    }
                }

            }
        }
示例#3
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;
        }
示例#4
0
 private NotaFiscal CriarNotaFiscal(string nomeCliente, string estadoOrigem, string estadoDestino,  string nomeProduto, string codigoProduto, double Valor)
 {
     Pedido pedido = new Pedido();
     pedido.NomeCliente = nomeCliente;
     pedido.EstadoOrigem = estadoOrigem;
     pedido.EstadoDestino = estadoDestino;
     PedidoItem item = new PedidoItem();
     item.NomeProduto = "Teste";
     item.CodigoProduto = "123456789";
     item.ValorItemPedido = 250.0;
     item.Brinde = false;
     pedido.ItensDoPedido.Add(item);
     NotaFiscal notaFiscal = new NotaFiscal();
     notaFiscal.EmitirNotaFiscal(pedido);
     return notaFiscal;
 }
示例#5
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);
        }
示例#6
0
        public void TestarValorIpi()
        {
            //Realiza testes no valor do ipi
            //Regra: Valor do ipi = base ipi * aliquota ipi [Aliquota do ipi brinde = 0 caso contrário 10%]

            for (int i = 0; i < 2; i++)
            {
                Pedido pedido = new Pedido();
                pedido.ItensDoPedido.Add(new PedidoItem() { ValorItemPedido = 19.75, Brinde = (i == 0) });
                NotaFiscal notaFiscal = new NotaFiscalService().EmitirNotaFiscal(pedido);

                if (pedido.ItensDoPedido[0].Brinde)
                    Assert.AreEqual(0, notaFiscal.ItensDaNotaFiscal[0].ValorIpi, "Valor do IPI divergente para Brindes!");
                else
                {
                    double valor = pedido.ItensDoPedido[0].ValorItemPedido * 0.1;
                    Assert.AreEqual(valor, notaFiscal.ItensDaNotaFiscal[0].ValorIpi, "Valor do IPI divergente!");
                }
            }
        }
示例#7
0
        public void TestValorIpi()
        {
            Pedido pedido = new Pedido();
            pedido.NomeCliente = "teste";
            pedido.EstadoOrigem = "SP";
            pedido.EstadoDestino = "RJ";
            pedido.ItensDoPedido = new List<PedidoItem>();

            pedido.ItensDoPedido.Add(new PedidoItem { CodigoProduto = "001", NomeProduto = "teste", Brinde = false, ValorItemPedido = 150 });

            NotaFiscal notaFiscal = new NotaFiscal();
            notaFiscal.EmitirNotaFiscal(pedido);
            double esperado = 15;
            double resultado = 0;
            foreach (NotaFiscalItem item in notaFiscal.ItensDaNotaFiscal)
            {
                resultado = item.ValorIpi;
            }
            Assert.AreEqual(esperado, resultado, 0.001, "Valor do Ipi incorreto!");
        }
示例#8
0
        public Pedido GerarPedido(string cliente, string ufOrigem, string ufDestino, DataTable itens )
        {
            if (String.IsNullOrEmpty(cliente))
            {
                throw new Exception("Favor informar o cliente para o pedido");
            }
            if (String.IsNullOrEmpty(ufOrigem))
            {
                throw new Exception("Favor informar o estado de origem do pedido");
            }
            if (String.IsNullOrEmpty(ufDestino))
            {
                throw new Exception("Favor informar o estado de destino do pedido");
            }
            if (itens.Rows.Count == 0)
            {
                throw new Exception("Não foi informado itens para o pedido");
            }

            Pedido pedido = new Pedido();

            pedido.EstadoOrigem = ufOrigem;
            pedido.EstadoDestino = ufDestino;
            pedido.NomeCliente = cliente;

            foreach (DataRow row in itens.Rows)
            {
                pedido.ItensDoPedido.Add(
                    new PedidoItem()
                    {
                        Brinde = Convert.ToBoolean(row["Brinde"]),
                        CodigoProduto = row["Codigo do produto"].ToString(),
                        NomeProduto = row["Nome do produto"].ToString(),
                        ValorItemPedido = Convert.ToDouble(row["Valor"].ToString())
                    });
            }

            return pedido;
        }
示例#9
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();
        }
示例#10
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;
        }
示例#11
0
 public void GerarNotaFiscal(Pedido pedido)
 {
     NotaFiscal notaFiscal = new NotaFiscal();
     notaFiscal.EmitirNotaFiscal(pedido);
 }
示例#12
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);
            }
        }
示例#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;
            }
        }
示例#14
0
 public void GerarNotaFiscal(Pedido pedido)
 {
     NotaFiscal notaFiscal = EmitirNotaFiscal(pedido);
     GerarNotaFiscalXML(notaFiscal);
     GravarNotaFiscal(notaFiscal);
 }