Esempio n. 1
0
        public static string ConsultaRetRecepcao(CamadaDados.Frota.Cadastros.TRegistro_CfgFrota rCfgCte)
        {
            string msg = string.Empty;

            new CamadaDados.Faturamento.CTRC.TCD_LoteCTe().Select(
                new Utils.TpBusca[]
            {
                new Utils.TpBusca()
                {
                    vNM_Campo = "a.cd_empresa",
                    vOperador = "=",
                    vVL_Busca = "'" + rCfgCte.Cd_empresa.Trim() + "'"
                },
                new Utils.TpBusca()
                {
                    vNM_Campo = "a.status",
                    vOperador = "=",
                    vVL_Busca = "103"
                },
                new Utils.TpBusca()
                {
                    vNM_Campo = "a.nr_recibo",
                    vOperador = "is not",
                    vVL_Busca = "null"
                }
            }, 0, string.Empty, string.Empty).ForEach(p =>
            {
                StringBuilder xml = new StringBuilder();
                xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                xml.Append("<consReciCTe versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\" xmlns=\"http://www.portalfiscal.inf.br/cte\">");
                xml.Append("<tpAmb>");
                xml.Append(rCfgCte.Tp_ambiente);
                xml.Append("</tpAmb>");
                xml.Append("<nRec>");
                xml.Append(p.Nr_recibo.Value.ToString().PadLeft(15, '0'));
                xml.Append("</nRec>");
                xml.Append("</consReciCTe>");

                //Validar schema xml
                Utils.ValidaSchema.ValidaXML2.validaXML(xml.ToString(),
                                                        rCfgCte.Path_schemas.SeparadorDiretorio() + "consReciCte_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd",
                                                        "CTE");
                if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
                {
                    throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno);
                }

                //Conectar Web Service
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.ToString());
                rCfgCte.St_ctecontingencia = !p.Tp_emissaocte.Trim().Equals("1");
                XmlNode retorno            = ConectarWebService(doc.DocumentElement, rCfgCte);

                //Tratar retorno
                if (retorno["cStat"].InnerText.Trim().Equals("104"))
                {
                    p.Status      = Convert.ToDecimal(retorno["cStat"].InnerText);
                    p.Ds_mensagem = retorno["xMotivo"].InnerText;
                    CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Gravar(p, null);
                    msg += "Lote: " + p.Id_lote.ToString() + "\r\nMensagem: " + retorno["xMotivo"].InnerText.Trim() + "\r\n";
                    //Tratar as Notas do Lote
                    foreach (XmlNode no in retorno.ChildNodes)
                    {
                        if (no.Name.Trim().Equals("protCTe"))
                        {
                            DateTime?dt_rec = null;
                            try
                            {
                                dt_rec = Convert.ToDateTime(no["infProt"]["dhRecbto"].InnerText);
                            }
                            catch { }
                            decimal nprot = decimal.Zero;
                            try
                            {
                                nprot = Convert.ToDecimal(no["infProt"]["nProt"].InnerText);
                            }
                            catch { }
                            decimal status = decimal.Zero;
                            try
                            {
                                status = Convert.ToDecimal(no["infProt"]["cStat"].InnerText);
                            }
                            catch { }
                            //Buscar CTe
                            new CamadaDados.Faturamento.CTRC.TCD_Lote_X_CTe().Select(
                                new TpBusca[]
                            {
                                new TpBusca()
                                {
                                    vNM_Campo = "a.cd_empresa",
                                    vOperador = "=",
                                    vVL_Busca = "'" + rCfgCte.Cd_empresa.Trim() + "'"
                                },
                                new TpBusca()
                                {
                                    vNM_Campo = "a.id_lote",
                                    vOperador = "=",
                                    vVL_Busca = p.Id_lotestr
                                },
                                new TpBusca()
                                {
                                    vNM_Campo = "b.chaveacesso",
                                    vOperador = "=",
                                    vVL_Busca = "'" + no["infProt"]["chCTe"].InnerText.Trim() + "'"
                                }
                            }, 1, string.Empty).ForEach(v =>
                            {
                                v.Dt_processamento = dt_rec;
                                v.Nr_protocolo     = nprot;
                                v.Digval           = status.Equals(100) ? no["infProt"]["digVal"].InnerText : string.Empty;
                                v.Status           = status;
                                v.Ds_mensagem      = no["infProt"]["xMotivo"].InnerText;
                                v.VerAplic         = no["infProt"]["verAplic"].InnerText;
                                CamadaNegocio.Faturamento.CTRC.TCN_Lote_X_CTe.Gravar(v, null);
                            });
                        }
                    }
                }
                else
                {
                    p.Status      = Convert.ToDecimal(retorno["cStat"].InnerText);
                    p.Ds_mensagem = retorno["xMotivo"].InnerText;
                    CamadaNegocio.Faturamento.CTRC.TCN_LoteCTe.Gravar(p, null);
                }
            });
            return(msg);
        }
Esempio n. 2
0
        public static string EnviarEvento(CamadaDados.Faturamento.CTRC.TRegistro_EventoCTe rEvento,
                                          CamadaDados.Frota.Cadastros.TRegistro_CfgFrota rCfgCte)
        {
            decimal seqEvento = 1;

            if (rEvento.Tp_evento.Trim().ToUpper().Equals("CC"))
            {
                object obj = new CamadaDados.Faturamento.CTRC.TCD_EventoCTe().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_empresa",
                        vOperador = "=",
                        vVL_Busca = "'" + rEvento.Cd_empresa.Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.nr_lanctoCTR",
                        vOperador = "=",
                        vVL_Busca = rEvento.Nr_lanctoctrstr
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.st_registro, 'A')",
                        vOperador = "=",
                        vVL_Busca = "'T'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "d.tp_evento",
                        vOperador = "=",
                        vVL_Busca = "'CC'"
                    }
                }, "count(*)");
                if (obj != null)
                {
                    seqEvento += decimal.Parse(obj.ToString());
                }
            }
            StringBuilder xml = new StringBuilder();

            xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            #region eventoCTe
            xml.Append("<eventoCTe xmlns=\"http://www.portalfiscal.inf.br/cte\" versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\">");
            #region infEvento
            xml.Append("<infEvento Id=\"ID" + rEvento.Cd_eventostr + rEvento.Chaveacesso.Trim() + "01\">");
            #region cOrgao
            xml.Append("<cOrgao>");
            xml.Append(rCfgCte.Cd_uf_empresa.Trim());
            xml.Append("</cOrgao>");
            #endregion
            #region tpAmb
            xml.Append("<tpAmb>");
            xml.Append(rCfgCte.Tp_ambiente.Trim());
            xml.Append("</tpAmb>");
            #endregion
            #region CNPJ
            xml.Append("<CNPJ>");
            xml.Append(rCfgCte.Cnpj_empresa.SoNumero());
            xml.Append("</CNPJ>");
            #endregion
            #region chCTe
            xml.Append("<chCTe>");
            xml.Append(rEvento.Chaveacesso.Trim());
            xml.Append("</chCTe>");
            #endregion
            #region dhEvento
            xml.Append("<dhEvento>");
            xml.Append(rEvento.Dt_evento.Value.ToString("yyyy-MM-ddTHH:mm:sszzz"));
            xml.Append("</dhEvento>");
            #endregion
            #region tpEvento
            xml.Append("<tpEvento>");
            xml.Append(rEvento.Cd_eventostr);
            xml.Append("</tpEvento>");
            #endregion
            #region nSeqEvento
            xml.Append("<nSeqEvento>");
            xml.Append(seqEvento.ToString());
            xml.Append("</nSeqEvento>");
            #endregion
            #region detEvento
            xml.Append("<detEvento versaoEvento=\"" + rCfgCte.Cd_versaolayout.Trim() + "\">");
            //Especifico Cancelamento
            #region evCancCTe
            if (rEvento.Tp_evento.Trim().ToUpper().Equals("CA"))
            {
                xml.Append("<evCancCTe>");
                #region descEvento
                xml.Append("<descEvento>");
                xml.Append(rEvento.Ds_evento.Trim());
                xml.Append("</descEvento>");
                #endregion
                #region nProt
                xml.Append("<nProt>");
                xml.Append(rEvento.Nr_protocolo_ctestr.FormatStringEsquerda(15, '0'));
                xml.Append("</nProt>");
                #endregion
                #region xJust
                xml.Append("<xJust>");
                xml.Append(rEvento.Justificativa.RemoverCaracteres().Trim());
                xml.Append("</xJust>");
                #endregion
                xml.Append("</evCancCTe>");
            }
            #endregion
            //Especifico Carta Correção
            #region evCCeCTe
            if (rEvento.Tp_evento.Trim().ToUpper().Equals("CC"))
            {
                xml.Append("<evCCeCTe>");
                #region descEvento
                xml.Append("<descEvento>");
                xml.Append(rEvento.Ds_evento.Trim());
                xml.Append("</descEvento>");
                #endregion
                #region infCorrecao
                xml.Append("<infCorrecao>");
                CamadaNegocio.Faturamento.CTRC.TCN_CamposCC.Buscar(rEvento.Cd_empresa,
                                                                   rEvento.Nr_lanctoctrstr,
                                                                   rEvento.Id_eventostr,
                                                                   null).ForEach(p =>
                {
                    #region grupoAlterado
                    xml.Append("<grupoAlterado>");
                    xml.Append(p.Ds_grupo.Trim());
                    xml.Append("</grupoAlterado>");
                    #endregion
                    #region campoAlterado
                    xml.Append("<campoAlterado>");
                    xml.Append(p.Ds_campo.Trim());
                    xml.Append("</campoAlterado>");
                    #endregion
                    #region valorAlterado
                    xml.Append("<valorAlterado>");
                    xml.Append(p.ValorAlterado.Trim());
                    xml.Append("</valorAlterado>");
                    #endregion
                });
                xml.Append("</infCorrecao>");
                #endregion
                #region xCondUso
                xml.Append("<xCondUso>");
                xml.Append(rCfgCte.Ds_condusoCCe.Trim());
                xml.Append("</xCondUso>");
                #endregion
                xml.Append("</evCCeCTe>");
            }
            #endregion
            xml.Append("</detEvento>");
            #endregion
            xml.Append("</infEvento>");
            #endregion
            xml.Append("</eventoCTe>");
            #endregion
            //Assinar documento XML
            string xmlassinado =
                new Utils.Assinatura.TAssinatura2(rCfgCte.Nr_seriecertificado,
                                                  Utils.Assinatura.TAssinatura2.TTpArq.tpEventoCTe,
                                                  xml.ToString()).Assinar();

            //Validar Schema XML
            Utils.ValidaSchema.ValidaXML2.validaXML(xmlassinado,
                                                    rCfgCte.Path_schemas.SeparadorDiretorio() + "eventoCTe_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd", "CTE");
            if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
            {
                throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno.Trim());
            }
            //Enviar arquivo para Receita
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlassinado);
            if (rEvento.Tp_evento.Trim().ToUpper().Equals("CA"))
            {
                rCfgCte.St_ctecontingencia = new CamadaDados.Faturamento.CTRC.TCD_LoteCTe().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from tb_ctr_lote_x_cte x " +
                                    "where x.cd_empresa = a.cd_empresa " +
                                    "and x.id_lote = a.id_lote " +
                                    "and x.cd_empresa = '" + rEvento.Cd_empresa.Trim() + "' " +
                                    "and x.nr_lanctoctr = " + rEvento.Nr_lanctoctrstr + ")"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.status",
                        vOperador = "=",
                        vVL_Busca = "'104'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_emissaoCTe",
                        vOperador = "<>",
                        vVL_Busca = "'1'"
                    }
                }, "1") != null;
            }
            XmlNode retorno = ConectarWebService(doc.DocumentElement, rCfgCte);
            //Tratar retorno
            if (retorno != null)
            {
                if (retorno["infEvento"]["cStat"].InnerText.Trim().Equals("135"))
                {
                    rEvento.St_registro = "T";
                    try
                    {
                        rEvento.Nr_protocolo = decimal.Parse(retorno["infEvento"]["nProt"].InnerText);
                    }
                    catch { }
                    rEvento.Xml_evento   = xmlassinado;
                    rEvento.Xml_retevent = retorno.OuterXml;
                    CamadaNegocio.Faturamento.CTRC.TCN_EventoCTe.Gravar(rEvento, null);
                    return(string.Empty);
                }
                else
                {
                    return(retorno["infEvento"]["xMotivo"].InnerText);
                }
            }
            else
            {
                throw new Exception("Ocorreu um erro ao enviar EVENTO para receita.");
            }
        }
Esempio n. 3
0
        private static XmlNode ConectarWebService(XmlNode cteDadosMsg,
                                                  CamadaDados.Frota.Cadastros.TRegistro_CfgFrota rCfgCte)
        {
            if (rCfgCte.St_ctecontingencia)
            {
                if (rCfgCte.Tp_ambiente.Trim().Equals("1"))                    //Producao
                {
                    if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("SP")) //SVC-Sao Paulo
                    {
                        br.gov.sp.fazenda.nfe.SVCRetRecepcao.CteRetRecepcao cte = new CTe.br.gov.sp.fazenda.nfe.SVCRetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.SVCRetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("RS"))//SVC-Rio Grande do Sul
                    {
                        br.gov.rs.sefaz.cte.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.rs.sefaz.cte.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }
                else//Homologacao
                {
                    if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("SP"))//SVC-Sao Paulo
                    {
                        br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else if (rCfgCte.Tp_ambientecont.Trim().ToUpper().Equals("RS"))//SVC-Rio Grande do Sul
                    {
                        br.gov.rs.sefaz.cte.homologacao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.rs.sefaz.cte.homologacao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.homologacao.RetRecepcao.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.cteRetRecepcao(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.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.mg.fazenda.cte.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.mg.fazenda.cte.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                case ("35"):                                    //São Paulo
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.sp.fazenda.nfe.SVCRetRecepcao.CteRetRecepcao cte = new CTe.br.gov.sp.fazenda.nfe.SVCRetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.SVCRetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else        //Homologacao
                    {
                        br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.sp.fazenda.nfe.homologacao.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                }

                case ("41"):                                    //Parana
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.pr.fazenda.cte.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.pr.fazenda.cte.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else        //Homologacao
                    {
                        br.gov.pr.fazenda.cte.homologacao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.pr.fazenda.cte.homologacao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.pr.fazenda.cte.homologacao.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                }

                case ("43"):                                    //Rio Grande do Sul
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.rs.sefaz.cte.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.rs.sefaz.cte.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else
                    {
                        br.gov.rs.sefaz.cte.homologacao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.rs.sefaz.cte.homologacao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.rs.sefaz.cte.homologacao.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                }

                case ("50"):                                    //Mato Grosso do Sul
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.ms.cte.producao.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.ms.cte.producao.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsg = new CTe.br.gov.ms.cte.producao.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                case ("51"):                                    //Mato Grosso
                {
                    if (rCfgCte.Tp_ambiente.Trim().Equals("1")) //Producao
                    {
                        br.gov.mt.sefaz.cte.RetRecepcao.CteRetRecepcao cte = new CTe.br.gov.mt.sefaz.cte.RetRecepcao.CteRetRecepcao();
                        cte.cteCabecMsgValue = new CTe.br.gov.mt.sefaz.cte.RetRecepcao.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.cteRetRecepcao(cteDadosMsg));
                    }
                    else
                    {
                        return(null);
                    }
                }

                default: return(null);
                }
            }
        }
Esempio n. 4
0
        public static string InutilizarCte(string Cd_uf,
                                           string Cnpj,
                                           string Nr_serie,
                                           string Cd_modelo,
                                           string Ano,
                                           decimal Cte_inicial,
                                           decimal Cte_final,
                                           string Justificativa,
                                           CamadaDados.Frota.Cadastros.TRegistro_CfgFrota rCfgCte)
        {
            StringBuilder xml = new StringBuilder();

            xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            xml.Append("<inutCTe xmlns=\"http://www.portalfiscal.inf.br/cte\" versao=\"" + rCfgCte.Cd_versaolayout.Trim() + "\">");
            xml.Append("<infInut Id=\"ID" +
                       Cd_uf.FormatStringEsquerda(2, '0') +
                       Cnpj.SoNumero() +
                       Cd_modelo.FormatStringEsquerda(2, '0') +
                       Nr_serie.FormatStringEsquerda(3, '0') +
                       Cte_inicial.ToString().FormatStringEsquerda(9, '0') +
                       Cte_final.ToString().FormatStringEsquerda(9, '0') + "\">");
            xml.Append("<tpAmb>");
            xml.Append(rCfgCte.Tp_ambiente);
            xml.Append("</tpAmb>");
            xml.Append("<xServ>");
            xml.Append("INUTILIZAR");
            xml.Append("</xServ>");
            xml.Append("<cUF>");
            xml.Append(Cd_uf.FormatStringEsquerda(2, '0'));
            xml.Append("</cUF>");
            xml.Append("<ano>");
            xml.Append(Ano.FormatStringEsquerda(2, '0'));
            xml.Append("</ano>");
            xml.Append("<CNPJ>");
            xml.Append(Cnpj.SoNumero());
            xml.Append("</CNPJ>");
            xml.Append("<mod>");
            xml.Append(Cd_modelo.FormatStringEsquerda(2, '0'));
            xml.Append("</mod>");
            xml.Append("<serie>");
            xml.Append(Nr_serie.Trim());
            xml.Append("</serie>");
            xml.Append("<nCTIni>");
            xml.Append(Cte_inicial.ToString());
            xml.Append("</nCTIni>");
            xml.Append("<nCTFin>");
            xml.Append(Cte_final.ToString());
            xml.Append("</nCTFin>");
            xml.Append("<xJust>");
            xml.Append(Justificativa.RemoverCaracteres());
            xml.Append("</xJust>");
            xml.Append("</infInut>");
            xml.Append("</inutCTe>");

            //Assinar documento XML
            string xmlassinado =
                new Utils.Assinatura.TAssinatura2(rCfgCte.Nr_seriecertificado,
                                                  Utils.Assinatura.TAssinatura2.TTpArq.tpInutiliza,
                                                  xml.ToString()).Assinar();

            //Validar Schema XML
            Utils.ValidaSchema.ValidaXML2.validaXML(xmlassinado,
                                                    rCfgCte.Path_schemas.SeparadorDiretorio() + "inutCTe_v" + rCfgCte.Cd_versaolayout.Trim() + ".xsd",
                                                    "CTE");
            if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
            {
                throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno.Trim());
            }

            //Enviar arquivo para Receita
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xmlassinado);
            XmlNode retorno = ConectarWebService(doc.DocumentElement, rCfgCte);

            if (retorno["infInut"]["cStat"].InnerText.Trim().Equals("102"))
            {
                //Gravar registro Inutilizacao
                try
                {
                    CamadaNegocio.Faturamento.Cadastros.TCN_SeqInutNFe.Gravar(
                        new CamadaDados.Faturamento.Cadastros.TRegistro_SeqInutNFe()
                    {
                        Nr_serie         = Nr_serie.Trim(),
                        Nr_nfinicial     = Cte_inicial,
                        Nr_nffinal       = Cte_final,
                        Ano              = Convert.ToInt32(Ano),
                        Dh_processamento = DateTime.Parse(retorno["infInut"]["dhRecbto"].InnerText),
                        Nr_protocolo     = decimal.Parse(retorno["infInut"]["nProt"].InnerText)
                    }, null);
                }
                catch { }
                return(retorno["infInut"]["cStat"].InnerText.Trim() + " - " +
                       retorno["infInut"]["xMotivo"].InnerText.Trim());
            }
            else
            {
                throw new Exception(retorno["infInut"]["cStat"].InnerText.Trim() + " - " +
                                    retorno["infInut"]["xMotivo"].InnerText.Trim());
            }
        }