Example #1
0
        public void CriarEnviarCTe2e3()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            var cteEletronico = new CteEletronico();

            #region infCte

            cteEletronico.infCte        = new infCte();
            cteEletronico.infCte.versao = config.ConfigWebService.Versao;

            #endregion

            #region ide

            cteEletronico.infCte.ide       = new ide();
            cteEletronico.infCte.ide.cUF   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cCT   = GetRandom();
            cteEletronico.infCte.ide.CFOP  = 5353;
            cteEletronico.infCte.ide.natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO";

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.forPag = forPag.Pago;
            }
            cteEletronico.infCte.ide.mod     = ModeloDocumento.CTe;
            cteEletronico.infCte.ide.serie   = config.ConfigWebService.Serie;
            cteEletronico.infCte.ide.nCT     = config.ConfigWebService.Numeracao;
            cteEletronico.infCte.ide.dhEmi   = DateTimeOffset.Now;
            cteEletronico.infCte.ide.tpImp   = tpImp.Retrado;
            cteEletronico.infCte.ide.tpEmis  = tpEmis.teNormal;
            cteEletronico.infCte.ide.tpAmb   = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você
            cteEletronico.infCte.ide.tpCTe   = tpCTe.Normal;
            cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte;
            cteEletronico.infCte.ide.verProc = "0.0.0.1";
            cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFEnv   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.modal   = modal.rodoviario;
            cteEletronico.infCte.ide.tpServ  = tpServ.normal;
            cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFIni   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFFim   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.retira  = retira.Nao;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms;
            }

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.tomaBase3 = new toma03
                {
                    toma = toma.Remetente
                };
            }

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.ide.tomaBase3 = new toma3
                {
                    toma = toma.Remetente
                };
            }


            #endregion

            #region emit

            cteEletronico.infCte.emit       = new emit();
            cteEletronico.infCte.emit.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.emit.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.emit.xNome = config.Empresa.Nome;
            cteEletronico.infCte.emit.xFant = config.Empresa.NomeFantasia;

            cteEletronico.infCte.emit.enderEmit         = new enderEmit();
            cteEletronico.infCte.emit.enderEmit.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.emit.enderEmit.nro     = config.Empresa.Numero;
            cteEletronico.infCte.emit.enderEmit.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.emit.enderEmit.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.emit.enderEmit.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.emit.enderEmit.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.emit.enderEmit.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.emit.enderEmit.UF      = config.Empresa.SiglaUf;
            cteEletronico.infCte.emit.enderEmit.fone    = config.Empresa.Telefone;

            #endregion

            // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente.
            #region rem
            cteEletronico.infCte.rem       = new rem();
            cteEletronico.infCte.rem.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.rem.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.rem.xNome = config.Empresa.Nome;
            cteEletronico.infCte.rem.xFant = config.Empresa.NomeFantasia;
            cteEletronico.infCte.rem.fone  = config.Empresa.Telefone;

            cteEletronico.infCte.rem.enderReme         = new enderReme();
            cteEletronico.infCte.rem.enderReme.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.rem.enderReme.nro     = config.Empresa.Numero;
            cteEletronico.infCte.rem.enderReme.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.rem.enderReme.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.rem.enderReme.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.rem.enderReme.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.rem.enderReme.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.rem.enderReme.UF      = config.Empresa.SiglaUf;
            #endregion

            // Destinatário
            #region dest

            cteEletronico.infCte.dest       = new dest();
            cteEletronico.infCte.dest.CNPJ  = config.Empresa.Cnpj;
            cteEletronico.infCte.dest.IE    = config.Empresa.InscricaoEstadual;
            cteEletronico.infCte.dest.xNome = config.Empresa.Nome;
            cteEletronico.infCte.dest.fone  = config.Empresa.Telefone;

            cteEletronico.infCte.dest.enderDest         = new enderDest();
            cteEletronico.infCte.dest.enderDest.xLgr    = config.Empresa.Logradouro;
            cteEletronico.infCte.dest.enderDest.nro     = config.Empresa.Numero;
            cteEletronico.infCte.dest.enderDest.xCpl    = config.Empresa.Complemento;
            cteEletronico.infCte.dest.enderDest.xBairro = config.Empresa.Bairro;
            cteEletronico.infCte.dest.enderDest.cMun    = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.dest.enderDest.xMun    = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.dest.enderDest.CEP     = long.Parse(config.Empresa.Cep);
            cteEletronico.infCte.dest.enderDest.UF      = config.Empresa.SiglaUf;

            #endregion

            #region vPrest

            cteEletronico.infCte.vPrest         = new vPrest();
            cteEletronico.infCte.vPrest.vTPrest = 100m;
            cteEletronico.infCte.vPrest.vRec    = 100m;

            #endregion

            #region imp

            cteEletronico.infCte.imp      = new imp();
            cteEletronico.infCte.imp.ICMS = new ICMS();

            var icmsSimplesNacional = new ICMSSN();

            cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                icmsSimplesNacional.CST = CST.ICMS90;
            }

            #endregion

            #region infCTeNorm

            cteEletronico.infCte.infCTeNorm                  = new infCTeNorm();
            cteEletronico.infCte.infCTeNorm.infCarga         = new infCarga();
            cteEletronico.infCte.infCTeNorm.infCarga.vCarga  = 1000m;
            cteEletronico.infCte.infCTeNorm.infCarga.proPred = "Linguiça com piqui";

            cteEletronico.infCte.infCTeNorm.infCarga.infQ = new List <infQ>();
            cteEletronico.infCte.infCTeNorm.infCarga.infQ.Add(new infQ
            {
                cUnid  = cUnid.KG,
                qCarga = 10000,
                tpMed  = "quilos gramas"
            });

            cteEletronico.infCte.infCTeNorm.infDoc        = new infDoc();
            cteEletronico.infCte.infCTeNorm.infDoc.infNFe = new List <infNFe>();
            cteEletronico.infCte.infCTeNorm.infDoc.infNFe.Add(new infNFe
            {
                chave = "52161021025760000123550010000087341557247948"
            });

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.seg = new List <seg>();
                cteEletronico.infCte.infCTeNorm.seg.Add(new seg
                {
                    respSeg = respSeg.Destinatario
                });
            }

            cteEletronico.infCte.infCTeNorm.infModal = new infModal();

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200;
            }

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
            }

            var rodoviario = new rodo();
            rodoviario.RNTRC = config.Empresa.RNTRC;

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                rodoviario.dPrev = DateTime.Now;
                rodoviario.lota  = lota.Nao;
            }


            cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;
            #endregion


            var numeroLote = InputBoxTuche("Número Lote");

            var servicoRecepcao = new ServicoCTeRecepcao();

            // Evento executado antes do envio do CT-e para o WebService
            // servicoRecepcao.AntesDeEnviar += AntesEnviarLoteCte;

            var retornoEnvio = servicoRecepcao.CTeRecepcao(int.Parse(numeroLote), new List <CteEletronico> {
                cteEletronico
            });

            OnSucessoSync(new RetornoEEnvio(retornoEnvio));

            config.ConfigWebService.Numeracao++;
            new ConfiguracaoDao().SalvarConfiguracao(config);
        }
Example #2
0
        private void GetRodoviarioPrincipal()
        {
            try
            {
                objRodo = new rodo();
                foreach (DataRow row in daoManifesto.GetVeiculoTracao(objManifesto.sequencia).Rows)
                {
                    objRodo.RNTRC = row["RNTRC"].ToString();
                    objRodo.CIOT  = row["CIOT"].ToString();
                    if (objRodo.CIOT == "")
                    {
                        objRodo.CIOT = null;
                    }

                    objRodo.veicTracao       = new rodoVeicTracao();
                    objRodo.veicTracao.cInt  = row["cInt"].ToString();
                    objRodo.veicTracao.placa = row["placa"].ToString();
                    objRodo.veicTracao.tara  = row["tara"].ToString();
                    objRodo.veicTracao.capKG = row["capKG"].ToString();
                    objRodo.veicTracao.capM3 = row["capM3"].ToString();
                    if (row["st_veiculo"].ToString().Equals("N"))
                    {
                        objRodo.veicTracao.prop = daoManifesto.GetVeiculoProp(objManifesto.sequencia).AsEnumerable().Select(c => new rodoVeicTracaoProp
                        {
                            IE     = c["IE"].ToString().Replace(".", "").Trim(),
                            RNTRC  = c["RNTRC"].ToString(),
                            tpProp = c["tpProp"].ToString().Equals("P") ? rodoVeicTracaoPropTpProp.Item0 : rodoVeicTracaoPropTpProp.Item1,
                            UF     = c["UF"].ToString(),
                            xNome  = c["xNome"].ToString(),
                            Item   = Util.RetiraCaracterCNPJ(c["CNPJ"].ToString()),
                        }).FirstOrDefault();

                        objRodo.veicTracao.prop.ItemElementName = objRodo.veicTracao.prop.Item.ToString().Count() == 14 ? ItemChoiceType.CNPJ : ItemChoiceType.CPF;

                        objRodo.veicTracao.condutor = daoManifesto.GetMotorista(objManifesto.sequencia).AsEnumerable().Select(c => new rodoVeicTracaoCondutor
                        {
                            xNome = c["xNome"].ToString(),
                            CPF   = Util.RetiraCaracterCNPJ(c["cpf"].ToString())
                        }).ToArray();
                    }
                }

                objRodo.veicReboque = new List <rodoVeicReboque>();
                foreach (DataRow c in daoManifesto.GetVeiculoReboque(objManifesto.sequencia).AsEnumerable())
                {
                    rodoVeicReboque reboc = new rodoVeicReboque
                    {
                        capKG = c["capKG"].ToString(),
                        capM3 = c["capM3"].ToString(),
                        cInt  = c["cInt"].ToString(),
                        placa = c["placa"].ToString(),
                        tara  = c["tara"].ToString(),
                        tpCar = c["tpCar"].ToString().Equals("0") ? rodoVeicReboqueTpCar.Item00 : rodoVeicReboqueTpCar.Item01, //VERIFICAR
                        UF    = c["UF"].ToString()
                    };

                    if (c["st_proprietario"].ToString().Equals("S"))
                    {
                        reboc.prop                 = new rodoVeicReboqueProp();
                        reboc.prop.Item            = Util.RetiraCaracterCNPJ(c["CNPJ"].ToString());
                        reboc.prop.ItemElementName = reboc.prop.Item.ToString().Count() == 14 ? ItemChoiceType1.CNPJ : ItemChoiceType1.CPF;
                        reboc.prop.RNTRC           = c["RNTRC"].ToString();
                        reboc.prop.xNome           = c["xNome"].ToString();
                        reboc.prop.IE              = c["IE"].ToString().Replace(".", "").Trim();
                        reboc.prop.UF              = c["UF"].ToString();
                        reboc.prop.tpProp          = c["tpProp"].ToString().Equals("0") ? rodoVeicReboquePropTpProp.Item0 : rodoVeicReboquePropTpProp.Item1;
                    }
                    objRodo.veicReboque.Add(reboc);
                }


                foreach (DataRow c in daoManifesto.GetValePed(objManifesto.sequencia).Rows)
                {
                    if (objRodo.valePed == null)
                    {
                        objRodo.valePed = new List <rodoDisp>();
                    }
                    objRodo.valePed.Add(new rodoDisp
                    {
                        CNPJForn = Util.RetiraCaracterCNPJ(c["CNPJForn"].ToString()),
                        CNPJPg   = Util.RetiraCaracterCNPJ(c["CNPJPg"].ToString()),
                        nCompra  = c["nCompra"].ToString()
                    });;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        private static async Task CriarEnviarCTeConsultaReciboAutomatico2e3()
        {
            var config = new ConfiguracaoDao().BuscarConfiguracao();

            CarregarConfiguracoes(config);

            #region infCte

            var cteEletronico = new CteEletronico
            {
                infCte = new infCte
                {
                    versao = config.ConfigWebService.Versao,
                    ide    = new ide
                    {
                        cUF   = config.Empresa.SiglaUf,
                        cCT   = GetRandom(),
                        CFOP  = 5353,
                        natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO"
                    }
                }
            };

            #endregion

            #region ide

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.ide.forPag = forPag.Pago;
            }
            cteEletronico.infCte.ide.mod     = ModeloDocumento.CTe;
            cteEletronico.infCte.ide.serie   = config.ConfigWebService.Serie;
            cteEletronico.infCte.ide.nCT     = config.ConfigWebService.Numeracao;
            cteEletronico.infCte.ide.dhEmi   = DateTime.Now;
            cteEletronico.infCte.ide.tpImp   = tpImp.Retrado;
            cteEletronico.infCte.ide.tpEmis  = tpEmis.teNormal;
            cteEletronico.infCte.ide.tpAmb   = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você
            cteEletronico.infCte.ide.tpCTe   = tpCTe.Normal;
            cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte;
            cteEletronico.infCte.ide.verProc = "0.0.0.1";
            cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFEnv   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.modal   = modal.rodoviario;
            cteEletronico.infCte.ide.tpServ  = tpServ.normal;
            cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFIni   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio;
            cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio;
            cteEletronico.infCte.ide.UFFim   = config.Empresa.SiglaUf;
            cteEletronico.infCte.ide.retira  = retira.Nao;

            switch (config.ConfigWebService.Versao)
            {
            case versao.ve300:
                cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms;
                cteEletronico.infCte.ide.tomaBase3 = new toma3
                {
                    toma = toma.Remetente
                };
                break;

            case versao.ve200:
                cteEletronico.infCte.ide.tomaBase3 = new toma03
                {
                    toma = toma.Remetente
                };
                break;
            }

            #endregion

            #region emit

            cteEletronico.infCte.emit = new emit
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                xFant     = config.Empresa.NomeFantasia,
                enderEmit = new enderEmit
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf,
                    fone    = config.Empresa.Telefone
                }
            };

            #endregion

            // Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente.

            #region rem

            cteEletronico.infCte.rem = new rem
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                xFant     = config.Empresa.NomeFantasia,
                fone      = config.Empresa.Telefone,
                enderReme = new enderReme
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf
                }
            };

            #endregion

            // Destinatário

            #region dest

            cteEletronico.infCte.dest = new dest
            {
                CNPJ      = config.Empresa.Cnpj,
                IE        = config.Empresa.InscricaoEstadual,
                xNome     = config.Empresa.Nome,
                fone      = config.Empresa.Telefone,
                enderDest = new enderDest
                {
                    xLgr    = config.Empresa.Logradouro,
                    nro     = config.Empresa.Numero,
                    xCpl    = config.Empresa.Complemento,
                    xBairro = config.Empresa.Bairro,
                    cMun    = config.Empresa.CodigoIbgeMunicipio,
                    xMun    = config.Empresa.NomeMunicipio,
                    CEP     = long.Parse(config.Empresa.Cep),
                    UF      = config.Empresa.SiglaUf
                }
            };

            #endregion

            #region vPrest

            cteEletronico.infCte.vPrest = new vPrest {
                vTPrest = 100m, vRec = 100m
            };

            #endregion

            #region imp

            cteEletronico.infCte.imp = new imp {
                ICMS = new ICMS()
            };

            var icmsSimplesNacional = new ICMSSN();

            cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional;

            if (config.ConfigWebService.Versao == versao.ve300)
            {
                icmsSimplesNacional.CST = CST.ICMS90;
            }

            #endregion

            #region infCTeNorm

            cteEletronico.infCte.infCTeNorm = new infCTeNorm
            {
                infCarga = new infCarga
                {
                    vCarga  = 1000m,
                    proPred = "Linguiça com piqui",
                    infQ    = new List <infQ> {
                        new infQ {
                            cUnid = cUnid.KG, qCarga = 10000, tpMed = "quilos gramas"
                        }
                    }
                }
            };


            cteEletronico.infCte.infCTeNorm.infDoc = new infDoc
            {
                infNFe = new List <infNFe> {
                    new infNFe {
                        chave = "52161021025760000123550010000087341557247948"
                    }
                }
            };

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                cteEletronico.infCte.infCTeNorm.seg = new List <seg> {
                    new seg {
                        respSeg = respSeg.Destinatario
                    }
                }
            }
            ;

            cteEletronico.infCte.infCTeNorm.infModal = new infModal();

            switch (config.ConfigWebService.Versao)
            {
            case versao.ve200:
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200;
                break;

            case versao.ve300:
                cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
                break;
            }

            var rodoviario = new rodo {
                RNTRC = config.Empresa.RNTRC
            };

            if (config.ConfigWebService.Versao == versao.ve200)
            {
                rodoviario.dPrev = DateTime.Now;
                rodoviario.lota  = lota.Nao;
            }


            cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;

            #endregion


            var numeroLote = RequisitarInput("Número Lote");

            var servico = new ServicoEnviarCte();

            var retorno = await servico.Enviar(Convert.ToInt32(numeroLote), cteEletronico);

            var xmlRetorno = string.Empty;

            if (retorno.CteProc != null)
            {
                xmlRetorno = retorno.CteProc.ObterXmlString();
            }

            if (retorno.RetConsReciCTe.protCTe[0].infProt.cStat != 100)
            {
                xmlRetorno = retorno.RetConsReciCTe.RetornoXmlString;
            }

            OnSucessoSync(new RetornoEEnvio(retorno.RetEnviCte.EnvioXmlString, xmlRetorno));

            config.ConfigWebService.Numeracao++;
            new ConfiguracaoDao().SalvarConfiguracao(config);
        }
Example #4
0
        private void btnImpressao_Click(object sender, EventArgs e)
        {
            try
            {
                List <PesquisaManifestosModel> objSelect = this.objPesquisa.resultado.Where(c =>
                                                                                            c.bEnviado == true &&
                                                                                            c.recibo != "" && c.bSeleciona && c.protocolo != ""
                                                                                            ).ToList();

                dsMdfe = new dsMDFe();
                foreach (PesquisaManifestosModel item in objSelect)
                {
                    rowMdfe = dsMdfe.MDFe.NewMDFeRow();
                    Byte[] bimagem = SalvaCodBarras(item.chaveMDFe);
                    rowMdfe.barras   = bimagem;
                    rowMdfe.logotipo = Util.CarregaLogoEmpresa();

                    string sPath = "";

                    if (item.bCancelado)
                    {
                        sPath = Util.BuscaCaminhoArquivoXml(item.chaveMDFe, 2, true);
                    }
                    else
                    {
                        sPath = Util.BuscaCaminhoArquivoXml(item.chaveMDFe, 2);
                    }
                    XmlDocument xml = new XmlDocument();
                    xml.Load(sPath);
                    XmlNodeList node = xml.GetElementsByTagName("infModal");

                    mdfeProc objEnvi = SerializeClassToXml.DeserializeClasse <mdfeProc>(sPath);
                    rodo     objRodo = SerializeClassToXml.DeserializeClasseString <rodo>(node[0].InnerXml.ToString());
                    rowMdfe.xEmpresa = string.Format("{0}{10}CNPJ:{1} - IE:{2}, RNTRC:{3} - Logradouro:{4}, nº{5} - Bairro:{6}, {7}/{8} Cep:{9}",
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.xNome,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.CNPJ,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.IE,
                                                     objRodo.RNTRC,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.xLgr,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.nro,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.xBairro,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.UF,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.xMun,
                                                     objEnvi.enviMDFe.MDFe.infMDFe.emit.enderEmit.CEP, Environment.NewLine);

                    rowMdfe.ufCarreg    = objEnvi.enviMDFe.MDFe.infMDFe.ide.UFIni;
                    rowMdfe.numero      = item.numero;
                    rowMdfe.chave       = item.chaveMDFe;
                    rowMdfe.protocolo   = item.protocolo;
                    rowMdfe.serie       = objEnvi.enviMDFe.MDFe.infMDFe.ide.serie;
                    rowMdfe.dataEmissao = Convert.ToDateTime(objEnvi.enviMDFe.MDFe.infMDFe.ide.dhEmi).ToShortDateString();
                    rowMdfe.CIOT        = objRodo.CIOT;
                    rowMdfe.qtdeCT      = objEnvi.enviMDFe.MDFe.infMDFe.tot.qCT == null ? "0" : objEnvi.enviMDFe.MDFe.infMDFe.tot.qCT.ToString();
                    rowMdfe.qtdeCTE     = objEnvi.enviMDFe.MDFe.infMDFe.tot.qCTe == null ? "0" : objEnvi.enviMDFe.MDFe.infMDFe.tot.qCTe;
                    rowMdfe.qtdeNF      = objEnvi.enviMDFe.MDFe.infMDFe.tot.qNF == null ? "0" : objEnvi.enviMDFe.MDFe.infMDFe.tot.qNF;
                    rowMdfe.qtdeNFe     = objEnvi.enviMDFe.MDFe.infMDFe.tot.qNFe == null ? "0" : objEnvi.enviMDFe.MDFe.infMDFe.tot.qNFe;
                    rowMdfe.pesoTotal   = objEnvi.enviMDFe.MDFe.infMDFe.tot.qCarga;

                    rowMdfe.veicPlaca = objRodo.veicTracao.placa + Environment.NewLine;
                    foreach (var v in objRodo.veicReboque)
                    {
                        rowMdfe.veicPlaca += v.placa + Environment.NewLine;
                    }

                    if (objRodo.veicTracao.prop != null)
                    {
                        rowMdfe.veicRNTRC = objRodo.veicTracao.prop.RNTRC + Environment.NewLine;
                    }

                    foreach (var v in objRodo.veicReboque)
                    {
                        if (v.prop != null)
                        {
                            rowMdfe.veicRNTRC += v.prop.RNTRC + Environment.NewLine;
                        }
                    }
                    if (objRodo.veicTracao.condutor != null)
                    {
                        foreach (var cond in objRodo.veicTracao.condutor)
                        {
                            rowMdfe.Condutor_cpf  += cond.CPF + Environment.NewLine;
                            rowMdfe.Condutor_Nome += cond.xNome + Environment.NewLine;
                        }
                    }

                    if (objRodo.valePed != null)
                    {
                        foreach (var vale in objRodo.valePed)
                        {
                            rowMdfe.Pedagio_Resp_cnp    += vale.CNPJPg + Environment.NewLine;
                            rowMdfe.Pedagio_Forn_cnpj   += vale.CNPJForn + Environment.NewLine;
                            rowMdfe.Pedagio_comprovante += vale.nCompra + Environment.NewLine;
                        }
                    }

                    string sDocEletronico = "{0} - Chave: {1}{2}";
                    rowMdfe.documentos_Fiscais = "";
                    foreach (var doc in objEnvi.enviMDFe.MDFe.infMDFe.infDoc)
                    {
                        if (doc.infCTe != null)
                        {
                            foreach (var cte in doc.infCTe)
                            {
                                rowMdfe.documentos_Fiscais += string.Format(sDocEletronico, "CTe", cte.chCTe, Environment.NewLine);
                            }
                        }
                        if (doc.infNFe != null)
                        {
                            foreach (var nfe in doc.infNFe)
                            {
                                rowMdfe.documentos_Fiscais += string.Format(sDocEletronico, "NFe", nfe.chNFe, Environment.NewLine);
                            }
                        }
                        if (doc.infNF != null)
                        {
                            foreach (var nf in doc.infNF)
                            {
                                rowMdfe.documentos_Fiscais += string.Format("{0} - CNPJ{1} - Serie:{2} - Nº {3}{4}", "NF", nf.CNPJ, nf.serie, nf.nNF, Environment.NewLine);
                            }
                        }
                        if (doc.infCT != null)
                        {
                            foreach (var ct in doc.infCT)
                            {
                                rowMdfe.documentos_Fiscais += string.Format("{0} - Serie:{1} - Nº {2}{3}", "CT", ct.serie, ct.nCT, Environment.NewLine);
                            }
                        }
                    }
                    if (objEnvi.enviMDFe.MDFe.infMDFe.infAdic != null)
                    {
                        rowMdfe.observacao = objEnvi.enviMDFe.MDFe.infMDFe.infAdic.infCpl;
                    }

                    if (item.bCancelado)
                    {
                        rowMdfe.observacao = "***** CONHECIMENTO CANCELADO *****" + Environment.NewLine + rowMdfe.observacao;
                    }

                    // objPrint.ldados.Add(obj);
                    dsMdfe.MDFe.Rows.Add(rowMdfe);
                }
                Print();
            }
            catch (Exception ex)
            {
                throw new HLPexception(ex);
            }
        }