예제 #1
0
        public static string StatusServico(TRegistro_CfgFrota rCfgCte, bool St_contingencia)
        {
            StringBuilder xml = new StringBuilder();

            xml.Append("<consStatServCte versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\" xmlns=\"http://www.portalfiscal.inf.br/cte\">");
            xml.Append("<tpAmb>");
            xml.Append(rCfgCte.Tp_ambiente.Trim());
            xml.Append("</tpAmb>");
            xml.Append("<xServ>");
            xml.Append("STATUS");
            xml.Append("</xServ>");
            xml.Append("</consStatServCte>");
            try
            {
                //Validar schema xml
                Utils.ValidaSchema.ValidaXML2.validaXML(xml.ToString(),
                                                        rCfgCte.Path_schemas.Trim().SeparadorDiretorio() + "consStatServCTe_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd",
                                                        "CTE");
                if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
                {
                    return(Utils.ValidaSchema.ValidaXML2.Retorno);
                }

                //Conectar Web Service
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.ToString());
                rCfgCte.St_ctecontingencia = St_contingencia;
                XmlNode retorno = ConectarWebService(doc.DocumentElement, rCfgCte);
                //Tratar retorno
                return(retorno["cStat"].InnerText);
            }
            catch (Exception ex)
            { return(ex.Message.Trim()); }
        }
예제 #2
0
        public static string ConsultaChave(string Chave_acesso, string Tp_ambiente, TRegistro_CfgFrota rCfgCte)
        {
            StringBuilder xml = new StringBuilder();

            xml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            xml.Append("<consSitCTe versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\" xmlns=\"http://www.portalfiscal.inf.br/cte\">");
            xml.Append("<tpAmb>");
            xml.Append(Tp_ambiente.Trim());
            xml.Append("</tpAmb>");
            xml.Append("<xServ>");
            xml.Append("CONSULTAR");
            xml.Append("</xServ>");
            xml.Append("<chCTe>");
            xml.Append(Chave_acesso.Trim());
            xml.Append("</chCTe>");
            xml.Append("</consSitCTe>");
            try
            {
                //Validar schema xml
                Utils.ValidaSchema.ValidaXML2.validaXML(xml.ToString(),
                                                        rCfgCte.Path_schemas.Trim().SeparadorDiretorio() + "consSitCTe_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd",
                                                        "CTE");
                if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
                {
                    return(Utils.ValidaSchema.ValidaXML2.Retorno);
                }

                //Conectar Web Service
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.ToString());
                //rCfgNfe.St_nfecontingencia = St_contingencia;
                XmlNode retorno = ConectarWebService(doc.DocumentElement, Tp_ambiente, rCfgCte);
                //Tratar retorno
                if (retorno != null)
                {
                    if (retorno["cStat"].InnerText.Trim().Equals("100") ||
                        retorno["cStat"].InnerText.Trim().Equals("110"))
                    {
                        return(retorno["protCTe"]["infProt"]["cStat"].InnerText + "|" +
                               retorno["protCTe"]["infProt"]["xMotivo"].InnerText + "|" +
                               retorno["protCTe"]["infProt"]["dhRecbto"].InnerText + "|" +
                               retorno["protCTe"]["infProt"]["nProt"].InnerText + "|" +
                               retorno["protCTe"]["infProt"]["digVal"].InnerText + "|" +
                               retorno["protCTe"]["infProt"]["verAplic"].InnerText);
                    }
                    else
                    {
                        return(string.Empty);
                    }
                }
                else
                {
                    return(string.Empty);
                }
            }
            catch (Exception ex)
            { return(ex.Message.Trim()); }
        }
예제 #3
0
        public static string Excluir(TRegistro_CfgFrota val, BancoDados.TObjetoBanco banco)
        {
            bool         st_transacao = false;
            TCD_CfgFrota qtb_cfg      = new TCD_CfgFrota();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_cfg.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_cfg.Banco_Dados = banco;
                }
                qtb_cfg.Excluir(val);
                if (st_transacao)
                {
                    qtb_cfg.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_cfg.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir configuração: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_cfg.deletarBanco_Dados();
                }
            }
        }
예제 #4
0
        private static XmlNode ConectarWebService(XmlNode nfceDadosMsg,
                                                  string Tp_ambiente,
                                                  TRegistro_CfgFrota rCfgCte)
        {
            switch (rCfgCte.Cd_uf_empresa.Trim())
            {
            case "41":
            {
                if (Tp_ambiente.Trim().Equals("1"))        //Producao
                {
                    CTe.br.gov.pr.fazenda.cte.Consulta.CteConsulta cte = new CTe.br.gov.pr.fazenda.cte.Consulta.CteConsulta();
                    cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.Consulta.cteCabecMsg()
                    {
                        cUF         = rCfgCte.Cd_uf_empresa,
                        versaoDados = rCfgCte.Cd_versaolayout
                    };
                    cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                    cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                    return(cte.cteConsultaCT(nfceDadosMsg));
                }
                else        //Homologacao
                {
                    CTe.br.gov.pr.fazenda.cte.homologacao.Consulta.CteConsulta cte = new CTe.br.gov.pr.fazenda.cte.homologacao.Consulta.CteConsulta();
                    cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.homologacao.Consulta.cteCabecMsg()
                    {
                        cUF         = rCfgCte.Cd_uf_empresa,
                        versaoDados = rCfgCte.Cd_versaolayout
                    };
                    cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                    cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                    return(cte.cteConsultaCT(nfceDadosMsg));
                }
            }

            default: return(null);
            }
        }
예제 #5
0
        private static XmlNode ConectarWebService(XmlNode cteDadosMsg,
                                                  TRegistro_CfgFrota rCfgCte)
        {
            if (rCfgCte.St_ctecontingencia)
            {
                if (rCfgCte.Tp_ambiente.Trim().ToUpper().Equals("1"))          //Producao
                {
                    if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("SP")) //SVC-Sao Paulo
                    {
                        br.gov.sp.fazenda.nfe.SVCStatusServico.CteStatusServico cte = new CTe.br.gov.sp.fazenda.nfe.SVCStatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.SVCStatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("RS"))//SVC-Rio Grande do Sul
                    {
                        br.gov.rs.sefaz.cte.StatusServico.CteStatusServico cte = new CTe.br.gov.rs.sefaz.cte.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }
                else//Homologacao
                {
                    if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("SP"))//SVC-Sao Paulo
                    {
                        br.gov.sp.fazenda.nfe.homologacao.StatusServico.CteStatusServico cte = new CTe.br.gov.sp.fazenda.nfe.homologacao.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.homologacao.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("RS"))//SVC-Rio Grande do Sul
                    {
                        br.gov.rs.sefaz.cte.homologacao.StatusServico.CteStatusServico cte = new CTe.br.gov.rs.sefaz.cte.homologacao.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.homologacao.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            else
            {
                switch (rCfgCte.Cd_uf_empresa.Trim())
                {
                case ("31"):                                    //Minas Gerais
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.mg.fazenda.cte.StatusServico.CteStatusServico cte = new CTe.br.gov.mg.fazenda.cte.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.mg.fazenda.cte.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                case ("35"):                                    //Sao Paulo
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.sp.fazenda.nfe.SVCStatusServico.CteStatusServico cte = new CTe.br.gov.sp.fazenda.nfe.SVCStatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.SVCStatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else        //Homologacao
                    {
                        br.gov.sp.fazenda.nfe.homologacao.StatusServico.CteStatusServico cte = new CTe.br.gov.sp.fazenda.nfe.homologacao.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.homologacao.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                }

                case ("41"):                                    //Parana
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.pr.fazenda.cte.Status.CteStatusServico cte = new CTe.br.gov.pr.fazenda.cte.Status.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.Status.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else        //Homologacao
                    {
                        br.gov.pr.fazenda.cte.homologacao.Status.CteStatusServico cte = new CTe.br.gov.pr.fazenda.cte.homologacao.Status.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.homologacao.Status.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                }

                case ("43"):                                    //Rio Grande do Sul
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.rs.sefaz.cte.StatusServico.CteStatusServico cte = new CTe.br.gov.rs.sefaz.cte.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else        //Homologacao
                    {
                        br.gov.rs.sefaz.cte.homologacao.StatusServico.CteStatusServico cte = new CTe.br.gov.rs.sefaz.cte.homologacao.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.homologacao.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                }

                case ("50"):                                    //Mato Grosso do Sul
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.ms.cte.producao.StatusServico.CteStatusServico cte = new CTe.br.gov.ms.cte.producao.StatusServico.CteStatusServico();
                        cte.cteCabecMsg = new CTe.br.gov.ms.cte.producao.StatusServico.CTeCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                case ("51"):                                    //Mato Grosso
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Produto
                    {
                        br.gov.mt.sefaz.cte.StatusServico.CteStatusServico cte = new CTe.br.gov.mt.sefaz.cte.StatusServico.CteStatusServico();
                        cte.cteCabecMsgValue = new CTe.br.gov.mt.sefaz.cte.StatusServico.cteCabecMsg()
                        {
                            cUF         = rCfgCte.Cd_uf_empresa,
                            versaoDados = rCfgCte.Cd_versaolayout
                        };
                        cte.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                        cte.ClientCertificates.Add(Utils.Assinatura.TAssinatura2.BuscaNroSerie(rCfgCte.Nr_seriecertificado));
                        return(cte.cteStatusServicoCT(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                default: return(null);
                }
            }
        }
예제 #6
0
 public static void EnviarLoteCte(List <CamadaDados.Faturamento.CTRC.TRegistro_ConhecimentoFrete> lCte,
                                  TRegistro_CfgFrota rCfgCte)
 {
     if (lCte != null)
     {
         //Verificar status do servico junto a receita
         if (CTe.StatusServico.TStatusServico.StatusServico(rCfgCte, false).Trim() != "107")
         {
             if (CTe.StatusServico.TStatusServico.StatusServico(rCfgCte, true).Trim().Equals("107"))
             {
                 rCfgCte.St_ctecontingencia = true;
             }
             else
             {
                 throw new Exception("Serviço indisponivel no momento.\r\nAguarde alguns minutos e tente novamente.");
             }
         }
         CamadaDados.Faturamento.CTRC.TRegistro_LoteCTe lote = new CamadaDados.Faturamento.CTRC.TRegistro_LoteCTe();
         try
         {
             lote.Cd_empresa    = rCfgCte.Cd_empresa;
             lote.Tp_ambiente   = rCfgCte.Tp_ambiente;
             lote.Tp_emissaocte = rCfgCte.St_ctecontingencia ? rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("RS") ? "7" : "8" : "1";
             CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Gravar(lote, null);
             CTe.GerarArq.TGerarArq.GerarArquivoXml(lCte, rCfgCte);
             StringBuilder xml = new StringBuilder();
             xml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
             xml.Append("<enviCTe xmlns=\"http://www.portalfiscal.inf.br/cte\" versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\">");
             xml.Append("<idLote>");
             xml.Append(lote.Id_lotestr);
             xml.Append("</idLote>");
             lCte.ForEach(p =>
             {
                 //Gravar lote x cte
                 CamadaNegocio.Faturamento.CTRC.TCN_Lote_X_CTe.Gravar(
                     new CamadaDados.Faturamento.CTRC.TRegistro_Lote_X_CTe()
                 {
                     Cd_empresa   = p.Cd_empresa,
                     Nr_lanctoctr = p.Nr_lanctoCTRC,
                     Id_lote      = lote.Id_lote
                 }, null);
                 xml.Append(p.Xml_cte);
             });
             xml.Append("</enviCTe>");
             //Validar arquivo lote
             Utils.ValidaSchema.ValidaXML2.validaXML(xml.ToString(),
                                                     rCfgCte.Path_schemas.SeparadorDiretorio() + "enviCte_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd",
                                                     "CTE");
             if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
             {
                 throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno.Trim());
             }
             //Enviar Lote para Receita
             XmlDocument doc = new XmlDocument();
             doc.LoadXml(xml.ToString());
             XmlNode retorno = ConectarWebService(doc.DocumentElement, rCfgCte);
             //Tratar retorno
             if (retorno != null)
             {
                 if (retorno["cStat"].InnerText.Trim().Equals("103"))
                 {
                     //Lote recebido com sucesso
                     //Gravar dados do lote no banco de dados
                     lote.Status      = decimal.Parse(retorno["cStat"].InnerText);
                     lote.Ds_mensagem = retorno["xMotivo"].InnerText;
                     if (retorno["infRec"].FirstChild != null)
                     {
                         try
                         {
                             lote.Dt_recebimento = DateTime.Parse(retorno["infRec"]["dhRecbto"].InnerText);
                         }
                         catch { }
                         lote.Nr_recibo = Convert.ToDecimal(retorno["infRec"]["nRec"].InnerText);
                     }
                     CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Gravar(lote, null);
                 }
                 else
                 {
                     lote.Status      = decimal.Parse(retorno["cStat"].InnerText);
                     lote.Ds_mensagem = retorno["xMotivo"].InnerText;
                     CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Gravar(lote, null);
                 }
             }
             else
             {
                 throw new Exception("Serviço Enviar CT-e indisponivel no momento.");
             }
         }
         catch (Exception ex)
         {
             CamadaNegocio.Faturamento.CTRC.TCN_Lote_X_CTe.Buscar(lote.Cd_empresa, lote.Id_lotestr, string.Empty, null).ForEach(p =>
                                                                                                                                CamadaNegocio.Faturamento.CTRC.TCN_Lote_X_CTe.Excluir(p, null));
             CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Excluir(lote, null);
             throw new Exception("Erro ao enviar Lote!" + ex.Message.Trim());
         }
     }
 }