Ejemplo n.º 1
0
        public static string GerarChave(infNFe infNFe)
        {
            var cpfcnpj = String.IsNullOrEmpty(infNFe.emit.CNPJ) ? Regex.Match(infNFe.emit.CPF, @"\d+").Value : Regex.Match(infNFe.emit.CNPJ, @"\d+").Value;

            var tipoEmissao   = "";
            var tamanhocNf    = 9;
            var anoMesEmissao = Convert.ToDateTime(infNFe.ide.dhEmi).ToString("yyMM");

            if (Decimal.Parse(infNFe.versao, CultureInfo.InvariantCulture) == 2) //Se a versão for 2, usar o campo dEmi ao invés de dhEmi
            {
                anoMesEmissao = Convert.ToDateTime(infNFe.ide.dEmi).ToString("yyMM");
            }


            if (Decimal.Parse(infNFe.versao, CultureInfo.InvariantCulture) >= 2) //De acordo com o manual de oriantação v5.0 pág. 92
            {
                tipoEmissao = ((int)infNFe.ide.tpEmis).ToString();
                tamanhocNf  = 8;
            }

            var chave =
                ((int)infNFe.ide.cUF).ToString().PadLeft(2, '0') + //cUF - Código da UF do emitente do Documento Fisca
                anoMesEmissao +                                    //AAMM - Ano e Mês de emissão da NF-e
                cpfcnpj.PadLeft(14, '0') +                         //CNPJ - CNPJ do emitente
                ((int)infNFe.ide.mod).ToString().PadLeft(2, '0') + //mod - Modelo do Documento Fiscal
                infNFe.ide.serie.ToString().PadLeft(3, '0') +      //serie - Série do Documento Fiscal
                infNFe.ide.nNF.ToString().PadLeft(9, '0') +        //nNF - Número do Documento Fiscal
                tipoEmissao +                                      //tpEmis – forma de emissão da NF-e
                infNFe.ide.cNF.PadLeft(tamanhocNf, '0');           //cNF - Código Numérico que compõe a Chave de Acesso

            var cDv = GerarDigitoVerificadorNFe(chave);

            return(chave + cDv);
        }
Ejemplo n.º 2
0
        private infNFe ObterInf(int numero)
        {
            var infNFe = new infNFe
            {
                versao = versaoDoServico.VersaoServicoParaString(),
                ide    = GetIdentificacao(numero),
                emit   = GetEmitente(),
                dest   = GetDestinatario(versaoDoServico, modeloDoDocumento),
                transp = GetTransporte()
            };

            for (var i = 0; i < 5; i++)
            {
                infNFe.det.Add(GetDetalhe(i, infNFe.emit.CRT, modeloDoDocumento));
            }

            infNFe.total = GetTotal(versaoDoServico, infNFe.det);

            if (infNFe.ide.mod == ModeloDocumento.NFe & (versaoDoServico == VersaoServico.ve400))
            {
                infNFe.cobr = GetCobranca(infNFe.total.ICMSTot); //V3.00 e 4.00 Somente
            }
            if (infNFe.ide.mod == ModeloDocumento.NFCe || (infNFe.ide.mod == ModeloDocumento.NFe & versaoDoServico == VersaoServico.ve400))
            {
                infNFe.pag = GetPagamento(infNFe.total.ICMSTot); //NFCe Somente
            }
            return(infNFe);
        }
Ejemplo n.º 3
0
        protected virtual infNFe GetInf(int numero, ModeloDocumento modelo, VersaoServico versao)
        {
            var infNFe = new infNFe
            {
                versao = Auxiliar.VersaoServicoParaString(versao),
                ide    = GetIdentificacao(numero, modelo, versao),
                emit   = GetEmitente(),
                dest   = GetDestinatario(versao),
                total  = GetTotal(versao),
                transp = GetTransporte()
            };

            if (infNFe.ide.mod == ModeloDocumento.NFe & versao == VersaoServico.ve310)
            {
                infNFe.cobr = GetCobranca(); //V3.00 Somente
            }
            if (infNFe.ide.mod == ModeloDocumento.NFCe)
            {
                infNFe.pag = GetPagamento(); //NFCe Somente
            }
            for (var i = 0; i < 1; i++)
            {
                infNFe.det.Add(GetDetalhe(i));
            }

            return(infNFe);
        }
Ejemplo n.º 4
0
        public void GerarXmlNfe()
        {
            // EXERCICIO: trate os retornos da Sefaz e armazene o status da nota de acordo
            NFeSelected.StatusNota = 4;
            SalvarAtualizarNFe();


            infNFe InfNFe = new infNFe
            {
                versao = Auxiliar.VersaoServicoParaString(_configuracoes.CfgServico.VersaoNFeAutorizacao),
                ide    = GetIdentificacao(),
                emit   = GetEmitente(),
                transp = GetTransporte()
            };

            if (NFeSelected.NfeDestinatario.CpfCnpj != null)
            {
                InfNFe.dest = GetDestinatario();
            }

            for (var i = 0; i < 1; i++)
            {
                InfNFe.det.Add(GetDetalhe(i, InfNFe.emit.CRT));
            }

            InfNFe.total = GetTotal();

            _nfe        = new NFe.Classes.NFe();
            _nfe.infNFe = InfNFe;

            _nfe.Assina();
            string nomeArquivoXml = @"C:\T2Ti\NFe\XML\" + NFeSelected.ChaveAcesso + NFeSelected.DigitoChaveAcesso + ".xml";

            _nfe.SalvarArquivoXml(nomeArquivoXml);
            var servicoNFe   = new ServicosNFe(_configuracoes.CfgServico);
            var retornoEnvio = servicoNFe.NFeAutorizacao(1, IndicadorSincronizacao.Assincrono, new List <NFe.Classes.NFe> {
                _nfe
            });

            // consultar protocolo
            var retornoConsulta = servicoNFe.NfeConsultaProtocolo(NFeSelected.ChaveAcesso + NFeSelected.DigitoChaveAcesso);

            _protocolo = retornoConsulta.Retorno.protNFe.infProt.nProt;

            string mensagem = "";

            foreach (var atributos in Funcoes.LerPropriedades(retornoEnvio.Retorno))
            {
                mensagem += atributos.Key + " = " + atributos.Value + "\r";
            }
            MessageBox.Show(mensagem, "Informação do Sistema", MessageBoxButton.OK, MessageBoxImage.Information);
        }
Ejemplo n.º 5
0
        private static infNFe GetInf(int numero, ModeloDocumento modelo, VersaoServico versao)
        {
            infNFe infNFe = new infNFe
            {
                versao = versao.VersaoServicoParaString(),
                ide    = GetIdentificacao(numero, modelo, versao),
                emit   = GetEmitente(),
                dest   = GetDestinatario(versao, modelo),
                transp = GetTransporte()
            };

            for (int i = 0; i < 5; i++)
            {
                infNFe.det.Add(GetDetalhe(i, infNFe.emit.CRT, modelo));
            }

            infNFe.total = GetTotal(versao, infNFe.det);

            if (infNFe.ide.mod == ModeloDocumento.NFe & (versao == VersaoServico.Versao310 || versao == VersaoServico.Versao400))
            {
                infNFe.cobr = GetCobranca(infNFe.total.ICMSTot); //V3.00 e 4.00 Somente
            }

            if (infNFe.ide.mod == ModeloDocumento.NFCe || (infNFe.ide.mod == ModeloDocumento.NFe & versao == VersaoServico.Versao400))
            {
                infNFe.pag = GetPagamento(infNFe.total.ICMSTot, versao); //NFCe Somente
            }

            if (infNFe.ide.mod == ModeloDocumento.NFCe & versao != VersaoServico.Versao400)
            {
                infNFe.infAdic = new infAdic()
                {
                    infCpl = "Troco: 10,00"
                };                                                          //Susgestão para impressão do troco em NFCe
            }

            return(infNFe);
        }
Ejemplo n.º 6
0
        protected virtual infNFe GetInf(int numero, ModeloDocumento modelo, VersaoServico versao)
        {
            var infNFe = new infNFe
            {
                versao = Auxiliar.VersaoServicoParaString(versao),
                ide    = GetIdentificacao(numero, modelo, versao),
                emit   = GetEmitente(),
                dest   = GetDestinatario(versao, modelo),
                transp = GetTransporte()
            };

            for (var i = 0; i < NFCe.lstProd.Count; i++)
            {
                infNFe.det.Add(GetDetalhe(i, infNFe.emit.CRT, modelo));
            }

            infNFe.total = GetTotal(versao, infNFe.det);

            if (infNFe.ide.mod == ModeloDocumento.NFe & versao == VersaoServico.ve310)
            {
                infNFe.cobr = GetCobranca(infNFe.total.ICMSTot); //V3.00 Somente
            }
            if (infNFe.ide.mod == ModeloDocumento.NFCe)
            {
                infNFe.pag = GetPagamento(infNFe.total.ICMSTot); //NFCe Somente
            }
            if (infNFe.ide.mod == ModeloDocumento.NFCe)
            {
                infNFe.infAdic = new infAdic()
                {
                    infCpl = "Troco: 10,00"
                }
            }
            ;                                                               //Susgestão para impressão do troco em NFCe

            return(infNFe);
        }
        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            NFe_HLP objNFe     = null;
            nfeProc objNfeProc = null;
            infNFe  nfe        = null;
            int     i          = 0;
            string  slblInfo   = "{0} de {1} Arquivo(s)...";

            foreach (HLP.GeraXml.UI.NFe.frmGeraArquivoNFe.DadosImpressao dados in objDadosImp)
            {
                CarregaDadosNFe(ref objNFe, ref objNfeProc, ref nfe, dados);
                if (dados.tipo == frmGeraArquivoNFe.TipoPDF.CANCELADO)
                {
                    objNFe.xCANC = "NFe CANCELADA";
                }
                GeraXMLtoPDF(objNFe);
                dados.xStatus = "Dados carregados em memória...";
                this.Invoke(new MethodInvoker(delegate()
                {
                    dgvNotas.CurrentCell = dgvNotas.Rows[i].Cells[2];
                    dgvNotas.CurrentRow.DefaultCellStyle.BackColor = Color.Aquamarine;
                    lblInfo.Text = string.Format(slblInfo, (i + 1).ToString(), objNFeToReport.Count());
                    dgvNotas.Refresh();
                    lblInfo.Refresh();
                }));
                i++;
            }

            string sFileSave = Pastas.Temp + "NFeToReport.xml";

            if (File.Exists(sFileSave))
            {
                File.Delete(sFileSave);
            }
            SerializeClassToXml.SerializeClasse <List <NFe_HLP> >(objNFeToReport, sFileSave);
        }
        void CarregaDadosNFe(ref NFe_HLP objNFe, ref nfeProc objNfeProc, ref infNFe nfe, HLP.GeraXml.UI.NFe.frmGeraArquivoNFe.DadosImpressao dados)
        {
            //"C:\\GeraXml\\Arquivos\\VIVABEM\\Contingencia\\\\35130947853981000183550010000001872000000665-nfe.xml"

            if (dados.tipo == frmGeraArquivoNFe.TipoPDF.CONTINGENCIA)
            {
                objNfeProc      = new nfeProc();
                objNfeProc.lNfe = new List <bel.NFe.ClassesSerializadas.NFe>();
                objNfeProc.lNfe.Add(SerializeClassToXml.DeserializeClasse <HLP.GeraXml.bel.NFe.ClassesSerializadas.NFe>(dados.sCaminhoXml));
            }
            else
            {
                objNfeProc = SerializeClassToXml.DeserializeClasse <nfeProc>(dados.sCaminhoXml);
            }



            if (objNfeProc != null)
            {
                nfe            = objNfeProc.lNfe.FirstOrDefault().lInfNfe.FirstOrDefault();
                objNFe         = new NFe_HLP();
                objNFe.Id      = nfe.Id.ToUpper().Replace("NFE", "").Trim();
                objNFe.tpEmis  = nfe.ideField.tpEmis.ToString().Replace("Item", "").Trim();
                objNFe.tipoPDF = dados.tipo.ToString();
                rowImg         = dsImg.Imagens.NewImagensRow();

                if (objNfeProc.protNFeField != null)
                {
                    objNFe.infprot_nprot = objNfeProc.protNFeField.FirstOrDefault().infProtField.FirstOrDefault().nProt;
                }
                objNFe.ide_nNF   = nfe.ideField.nNF;
                objNFe.natOP     = nfe.ideField.natOp;
                objNFe.ide_serie = nfe.ideField.serie;
                objNFe.ide_tpNF  = nfe.ideField.tpNF;
                if (nfe.ideField.dEmi != "")
                {
                    objNFe.ide_dEmi = nfe.ideField.dEmi.ToDateTime().ToShortDateString();
                }
                if (Convert.ToBoolean(Acesso.VISUALIZA_DATA_DANFE))
                {
                    if (nfe.ideField.dSaiEnt != "")
                    {
                        objNFe.ide_dSaiEnt = nfe.ideField.dSaiEnt.ToDateTime().ToShortDateString();
                    }
                }

                objNFe.emit_xNome        = nfe.emitField.xNome;
                objNFe.emit_xFant        = nfe.emitField.xFant;
                objNFe.emit_CPF_CNPJ     = nfe.emitField.Item;
                objNFe.emit_IE           = nfe.emitField.IE;
                objNFe.emit_IEST         = nfe.emitField.IEST;
                objNFe.enderEmit_xLgr    = nfe.emitField.enderEmit.xLgr;
                objNFe.enderEmit_nro     = nfe.emitField.enderEmit.nro;
                objNFe.enderEmit_xCpl    = nfe.emitField.enderEmit.xCpl;
                objNFe.enderEmit_xBairro = nfe.emitField.enderEmit.xBairro;
                objNFe.enderEmit_cMun    = nfe.emitField.enderEmit.cMun;
                objNFe.enderEmit_xMun    = nfe.emitField.enderEmit.xMun;
                objNFe.enderEmit_UF      = nfe.emitField.enderEmit.UF;
                objNFe.enderEmit_CEP     = nfe.emitField.enderEmit.CEP;
                objNFe.enderEmit_fone    = nfe.emitField.enderEmit.fone;


                objNFe.dest_xNome    = nfe.destField.xNome;
                objNFe.dest_CPF_CNPJ = nfe.destField.Item; // Verificar
                objNFe.dest_IE       = nfe.destField.IE;

                objNFe.enderDest_xLgr    = nfe.destField.enderDest.xLgr;
                objNFe.enderDest_nro     = nfe.destField.enderDest.nro;
                objNFe.enderDest_xCpl    = nfe.destField.enderDest.xCpl;
                objNFe.enderDest_xBairro = nfe.destField.enderDest.xBairro;
                objNFe.enderDest_cMun    = nfe.destField.enderDest.cMun;
                objNFe.enderDest_xMun    = nfe.destField.enderDest.xMun;
                objNFe.enderDest_UF      = nfe.destField.enderDest.UF;
                objNFe.enderDest_CEP     = nfe.destField.enderDest.CEP;
                objNFe.enderDest_fone    = nfe.destField.enderDest.fone;


                if (nfe.transpField != null)
                {
                    if (nfe.transpField.transporta != null)
                    {
                        objNFe.transp_xNome    = nfe.transpField.transporta.xNome;
                        objNFe.transp_modFrete = nfe.transpField.modFrete;
                        objNFe.transp_CFP_CNPJ = nfe.transpField.transporta.Item;
                        objNFe.transp_xEnder   = nfe.transpField.transporta.xEnder;
                        objNFe.transp_xMun     = nfe.transpField.transporta.xMun;
                        objNFe.transp_UF       = nfe.transpField.transporta.UF;
                        objNFe.transp_IE       = nfe.transpField.transporta.IE;

                        if (nfe.transpField.Items != null)
                        {
                            TVeiculo veic = nfe.transpField.Items.FirstOrDefault(c => c.GetType() == typeof(TVeiculo)) as TVeiculo;
                            if (veic != null)
                            {
                                objNFe.transp_RNTCVeic  = veic.RNTC;
                                objNFe.transp_placaVeic = veic.placa;
                                objNFe.transp_UFVeic    = veic.UF.ToString();
                            }
                        }
                        if (nfe.transpField.vol != null)
                        {
                            objNFe.transp_qVol  = nfe.transpField.vol.FirstOrDefault().qVol;
                            objNFe.transp_esp   = nfe.transpField.vol.FirstOrDefault().esp;
                            objNFe.transp_marca = nfe.transpField.vol.FirstOrDefault().marca;
                            objNFe.transp_nVol  = nfe.transpField.vol.FirstOrDefault().nVol;
                            objNFe.transp_PesoB = nfe.transpField.vol.FirstOrDefault().pesoB;
                            objNFe.transp_PesoL = nfe.transpField.vol.FirstOrDefault().pesoL;
                        }
                    }
                }

                objNFe.ICMSTot_vBC      = nfe.totalField.ICMSTot.vBC.Replace('.', ',');
                objNFe.ICMSTot_vICMS    = nfe.totalField.ICMSTot.vICMS.Replace('.', ',');
                objNFe.ICMSTot_vBCST    = nfe.totalField.ICMSTot.vBCST.Replace('.', ',');
                objNFe.ICMSTot_vST      = nfe.totalField.ICMSTot.vST.Replace('.', ',');
                objNFe.ICMSTot_vProd    = nfe.totalField.ICMSTot.vProd.Replace('.', ',');
                objNFe.ICMSTot_vFrete   = nfe.totalField.ICMSTot.vFrete.Replace('.', ',');
                objNFe.ICMSTot_vSeg     = nfe.totalField.ICMSTot.vSeg.Replace('.', ',');
                objNFe.ICMSTot_vDesc    = nfe.totalField.ICMSTot.vDesc.Replace('.', ',');
                objNFe.ICMSTot_vII      = nfe.totalField.ICMSTot.vII.Replace('.', ',');
                objNFe.ICMSTot_vIPI     = nfe.totalField.ICMSTot.vIPI.Replace('.', ',');
                objNFe.ICMSTot_vPIS     = nfe.totalField.ICMSTot.vPIS.Replace('.', ',');
                objNFe.ICMSTot_vCOFINS  = nfe.totalField.ICMSTot.vCOFINS.Replace('.', ',');
                objNFe.ICMSTot_vOutro   = nfe.totalField.ICMSTot.vOutro.Replace('.', ',');
                objNFe.ICMSTot_vNF      = nfe.totalField.ICMSTot.vNF.Replace('.', ',');
                objNFe.ICMSTot_vTotTrib = nfe.totalField.ICMSTot.vTotTrib.Replace('.', ',');
                if (nfe.infAdicField.infCpl != null)
                {
                    objNFe.xObs = nfe.infAdicField.infCpl.Replace(";", "." + Environment.NewLine);
                }


                if (nfe.totalField.ISSQNtot != null)
                {
                    objNFe.ISSQNtot_vBC   = nfe.totalField.ISSQNtot.vBC.Replace('.', ',');
                    objNFe.ISSQNtot_vServ = nfe.totalField.ISSQNtot.vServ.Replace('.', ',');
                    objNFe.ISSQNtot_vISS  = nfe.totalField.ISSQNtot.vISS.Replace('.', ',');
                }
                int iCount = 1;
                //  if (Acesso.IMPRIMI_FATURA)
                {
                    if (nfe.cobrField != null)
                    {
                        string sDupl = "Nº:{0}-{1}-R${2}";

                        objNFe.xDuplicatas = "";
                        string sDup = "";
                        foreach (TNFeInfNFeCobrDup dupli in nfe.cobrField.dup)
                        {
                            if (Acesso.NM_EMPRESA.Equals("GIWA"))
                            {
                                sDup = dupli.nDup.ToString().Insert(dupli.nDup.Count() - 1, "-");
                            }
                            else
                            {
                                sDup = dupli.nDup.ToString();
                            }

                            objNFe.xDuplicatas += string.Format(sDupl, sDup, Convert.ToDateTime(dupli.dVenc).ToString("dd/MM/yy"),
                                                                Convert.ToDecimal(dupli.vDup.Replace(".", ",")).ToString("#0.00").Replace(".", ",")).PadRight(33, ' ') + "|";
                            if (iCount == 3)
                            {
                                objNFe.xDuplicatas += Environment.NewLine;
                            }

                            iCount++;
                            if (iCount > 3)
                            {
                                iCount = 1;
                            }
                        }
                    }
                }

                objNFe.xDupli   = objNFe.xDuplicatas;
                objNFe.Produtos = new List <Produto>();
                Produto prod = null;
                iCount = 1;
                foreach (det item in nfe.lDet)
                {
                    prod       = new Produto();
                    prod.count = iCount;
                    iCount++;
                    prod.ide_nNF = objNFe.ide_nNF;
                    prod.cProd   = item.prodField.cProd.ToString().Trim();
                    prod.xProd   = item.prodField.xProd;
                    prod.ncm     = item.prodField.NCM;
                    prod.cfop    = item.prodField.CFOP;
                    prod.uCom    = item.prodField.uCom;
                    prod.qCom    = PopulaDs.FormataQtdeComercial(item.prodField.qCom.ToString().Replace('.', ','));
                    prod.vProd   = item.prodField.vProd.Replace('.', ',');
                    prod.vUnCom  = item.prodField.vUnCom.Replace('.', ',');
                    prod.cEAN    = item.prodField.cEAN;
                    prod.xObs    = item.infAdProd == null ? "" : item.infAdProd;


                    object icms = item.impostoField.Items.FirstOrDefault(c => c.GetType() == typeof(TNFeInfNFeDetImpostoICMS));
                    if (icms != null)
                    {
                        try
                        {
                            prod.vBC = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("vBC").ToString().Replace('.', ',');;
                        }
                        catch (Exception) { }
                        try
                        {
                            prod.vICMS = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("vICMS").ToString().Replace('.', ',');;
                        }
                        catch (Exception) { }
                        try
                        {
                            prod.pICMS = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("pICMS").ToString().Replace('.', ',');
                        }
                        catch (Exception) { }
                        string cst = "";
                        try
                        {
                            cst = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("CST").ToString();
                        }
                        catch (Exception)
                        {
                            cst = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("CSOSN").ToString();
                        }
                        cst      = (icms as TNFeInfNFeDetImpostoICMS).Item.GetPropertyValue("orig").ToString() + cst;
                        prod.cst = cst;
                    }

                    object ipi = item.impostoField.Items.FirstOrDefault(c => c.GetType() == typeof(TNFeInfNFeDetImpostoIPI));

                    if (ipi != null)
                    {
                        try
                        {
                            prod.vIPI = (ipi as TNFeInfNFeDetImpostoIPI).Item.GetPropertyValue("vIPI").ToString().Replace('.', ',');
                        }
                        catch (Exception) { }
                        try
                        {
                            prod.pIPI = (ipi as TNFeInfNFeDetImpostoIPI).Item.GetPropertyValue("pIPI").ToString().Replace('.', ',');
                        }
                        catch (Exception) { }
                    }
                    objNFe.Produtos.Add(prod);
                }
                Byte[] bimagem = SalvaCodBarras(objNFe.Id);
                rowImg.cod_barras = bimagem;
                rowImg.LogoTipo   = Util.CarregaLogoEmpresa();
                rowImg.id         = objNFe.Id;
                if (Convert.ToBoolean(Acesso.VISUALIZA_HORA_DANFE))
                {
                    rowImg.hora_impressao = DateTime.Now.ToString("HH:mm");
                }

                if (objNFe.tpEmis == "2")
                {
                    objNFe.dadosNFe = this.GeraChaveDadosNFe(objNFe);
                    Byte[] bImagemDadosNfe = SalvaCodBarras(objNFe.dadosNFe);
                    rowImg.cod_barras_contingencia = bImagemDadosNfe;
                }
                dsImg.Imagens.Rows.Add(rowImg);

                objNFeToReport.Add(objNFe);
            }
        }