Пример #1
0
 public static DataRowView BTN_BUSCA(string vnm_colunas,
                                     EditDefault[] EditResult,
                                     CamadaDados.TDataQuery vclasse,
                                     string vParamFixo)
 {
     return(BTN_BUSCA(vnm_colunas, EditResult, vclasse, vParamFixo, string.Empty));
 }
Пример #2
0
        private static string modo = "N"; //NORMAL OU LISTA

        public static void BTN_BUSCALISTA(string vnm_colunas, EditDefault edit, CamadaDados.TDataQuery vclasse, string vParamFixo)
        {
            modo = "L";

            BTN_BUSCA(vnm_colunas, new EditDefault[] { edit }, vclasse, vParamFixo);

            modo = "N";
        }
Пример #3
0
 public static DataRow EDIT_LeaveCliforC(string vCond, EditDefault[] EditResult, CamadaDados.TDataQuery vClasse)
 {
     return(EDIT_LEAVE(vCond, EditResult, vClasse));
 }
Пример #4
0
 public static DataRow EDIT_LeaveClifor(string vCond, EditDefault[] EditResult, CamadaDados.TDataQuery vClasse)
 {
     if (!string.IsNullOrEmpty(vCond))
     {
         vCond += ";isnull(a.st_registro, 'A')|<>|'C'";
     }
     return(EDIT_LEAVE(vCond, EditResult, vClasse));
 }
Пример #5
0
 public static DataRow EDIT_LEAVEProduto(string vCond, EditDefault[] EditResult, CamadaDados.TDataQuery vClasse)
 {
     vCond += ";isnull(a.st_registro, 'A')|<>|'C'";
     return(EDIT_LEAVE(vCond, EditResult, vClasse));
 }
Пример #6
0
 public static DataRow EDIT_LEAVE(string vnm_colunas
                                  , EditDefault[] EditResult
                                  , CamadaDados.TDataQuery vclasse)
 {
     if (EditResult != null && (EditResult.Length > 0))
     {
         if (EditResult[0].Text.Trim() != "")
         {
             string[]  vCampos = vnm_colunas.Split(new Char[] { ';' });
             TpBusca[] vBusca  = new TpBusca[vCampos.Length];
             for (int i = 0; i < vCampos.Length; i++)
             {
                 string[] vPropriedades = vCampos[i].Split(new Char[] { '|' });
                 vBusca[i].vNM_Campo = vPropriedades[0];
                 vBusca[i].vVL_Busca = vPropriedades[2];
                 vBusca[i].vOperador = vPropriedades[1];
             }
             DataTable tabela = vclasse.Buscar(vBusca, 1);
             if (tabela != null)
             {
                 if (tabela.Rows.Count > 0)
                 {
                     if (EditResult != null)
                     {
                         for (int i = 0; i < EditResult.Length; i++)
                         {
                             EditResult[i].Text = tabela.Rows[0][EditResult[i].NM_CampoBusca].ToString().Trim();
                         }
                     }
                     return(tabela.Rows[0]);
                 }
                 else
                 {
                     if (EditResult != null)
                     {
                         for (int i = 0; i < EditResult.Length; i++)
                         {
                             if (EditResult[i].Text.Trim() != "0")
                             {
                                 EditResult[i].Text = string.Empty;
                             }
                         }
                     }
                     return(null);
                 }
             }
             else
             {
                 return(null);
             }
         }
         else
         {
             return(null);
         }
     }
     else
     {
         return(null);
     }
 }
Пример #7
0
        public static DataRowView BTN_BUSCA(string vnm_colunas,
                                            EditDefault[] EditResult,
                                            CamadaDados.TDataQuery vclasse,
                                            string vParamFixo,
                                            string vParametroBusca)
        {
            TFBusca FBusca = new TFBusca();

            try
            {
                DataSet ds_config = new DataSet();
                try
                {
                    string vPath = Parametros.pubPathConfig;

                    if (!System.IO.Directory.Exists(vPath))
                    {
                        vPath = Parametros.pubPathAliance.Trim() + System.IO.Path.DirectorySeparatorChar;
                    }
                    if (vPath.Trim().Substring(vPath.Trim().Length - 1, 1) != System.IO.Path.DirectorySeparatorChar.ToString())
                    {
                        vPath += System.IO.Path.DirectorySeparatorChar.ToString();
                    }

                    if (System.IO.File.Exists(vPath + "configBusca.xml"))
                    {
                        ds_config.ReadXml(vPath + "configBusca.xml", XmlReadMode.ReadSchema);

                        if (EditResult != null)
                        {
                            object[] chave = new object[] { Parametros.pubLogin, EditResult[0].NM_CampoBusca };
                            DataRow  linha = ds_config.Tables[0].Rows.Find(chave);
                            if (linha != null)
                            {
                                FBusca.Location      = new System.Drawing.Point(Convert.ToInt32(linha["localx"].ToString().Trim()), Convert.ToInt32(linha["localy"].ToString().Trim()));
                                FBusca.Size          = new System.Drawing.Size(Convert.ToInt32(linha["sizex"].ToString().Trim()), Convert.ToInt32(linha["sizey"].ToString().Trim()));
                                FBusca.campoBusca    = linha["buscarpor"].ToString().Trim();
                                FBusca.nLinhas.Value = Convert.ToDecimal(linha["nlinhas"].ToString().Trim());
                            }
                            FBusca.login         = Parametros.pubLogin;
                            FBusca.campoChave    = EditResult[0].NM_CampoBusca;
                            FBusca.tb_configGrid = ds_config.Tables[1];
                        }
                    }
                }
                catch
                { }
                string[] vCampos = vnm_colunas.Split(new Char[] { ';' });
                FBusca.confBusca = new TpBusca[vCampos.Length];
                for (int i = 0; i < vCampos.Length; i++)
                {
                    string[] vPropriedades = vCampos[i].Split(new Char[] { '|' });
                    FBusca.confBusca[i].vNM_Campo   = vPropriedades[0];
                    FBusca.confBusca[i].vNM_Caption = vPropriedades[1];
                    FBusca.confBusca[i].vWidth      = Convert.ToInt16(vPropriedades[2]);
                    FBusca.confBusca[i].vOperador   = "like";
                }
                if (!(vParamFixo == null))
                {
                    if (vParamFixo.Length > 0)
                    {
                        vCampos            = vParamFixo.Split(new char[] { ';' });
                        FBusca.aParamBusca = new TpBusca[vCampos.Length];
                        for (int i = 0; i < vCampos.Length; i++)
                        {
                            string[] vParam = vCampos[i].Split(new char[] { '|' });
                            FBusca.aParamBusca[i].vNM_Campo = vParam[0];
                            FBusca.aParamBusca[i].vVL_Busca = vParam[2];
                            FBusca.aParamBusca[i].vOperador = vParam[1];
                        }
                    }
                }
                FBusca.NM_DatClass     = vclasse;
                FBusca.pParametroBusca = vParametroBusca;
                if (FBusca.ShowDialog() == DialogResult.OK)
                {
                    if (modo == "N")
                    {
                        if (FBusca.gBusca.CurrentRow != null)
                        {
                            if (FBusca.gBusca.CurrentRow.Index > -1)
                            {
                                if (EditResult != null)
                                {
                                    for (int i = 0; i < EditResult.Length; i++)
                                    {
                                        EditResult[i].Text = FBusca.gBusca["f" + EditResult[i].NM_CampoBusca,
                                                                           FBusca.gBusca.CurrentRow.Index].Value.ToString().Trim();
                                    }
                                }
                                return(FBusca.bSource.Current as DataRowView);
                            }
                            else
                            {
                                return(null);
                            }
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else if (EditResult != null)
                    {
                        string t = string.Empty;
                        string v = string.Empty;
                        foreach (DataGridViewRow row in FBusca.gBusca.SelectedRows)
                        {
                            t += v + "'" + row.DataGridView["f" + EditResult[0].NM_CampoBusca, row.Index].Value.ToString().Trim() + "'";
                            v  = ", ";
                        }
                        EditResult[0].Text = "(" + t + ")";
                        return(null);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                try
                {
                    DataSet ds    = new DataSet();
                    string  vPath = Parametros.pubPathConfig;
                    if (!System.IO.Directory.Exists(vPath))
                    {
                        vPath = Parametros.pubPathAliance.Trim() + System.IO.Path.DirectorySeparatorChar;
                    }
                    if (vPath.Trim().Substring(vPath.Trim().Length - 1, 1) != System.IO.Path.DirectorySeparatorChar.ToString())
                    {
                        vPath += System.IO.Path.DirectorySeparatorChar.ToString();
                    }
                    if (System.IO.File.Exists(vPath + "configBusca.xml"))
                    {
                        ds.ReadXml(vPath + "configBusca.xml");
                    }
                    else
                    {
                        DataTable dt_config     = new DataTable("tb_config");
                        DataTable dt_configGrid = new DataTable("tb_configGrid");
                        ds.Tables.Add(dt_config);
                        ds.Tables.Add(dt_configGrid);
                        DataColumn   vlogin = new DataColumn("login", Type.GetType("System.String"));
                        DataColumn   codigo = new DataColumn("codigo", Type.GetType("System.String"));
                        DataColumn[] pk     = new DataColumn[] { vlogin, codigo };
                        dt_config.Columns.Add(vlogin);
                        dt_config.Columns.Add(codigo);
                        dt_config.Columns.Add("localx", Type.GetType("System.Int32"));
                        dt_config.Columns.Add("localy", Type.GetType("System.Int32"));
                        dt_config.Columns.Add("sizex", Type.GetType("System.Int32"));
                        dt_config.Columns.Add("sizey", Type.GetType("System.Int32"));
                        dt_config.Columns.Add("buscarpor", Type.GetType("System.String"));
                        dt_config.Columns.Add("nlinhas", Type.GetType("System.Decimal"));
                        dt_config.PrimaryKey = pk;

                        DataColumn   nLogin    = new DataColumn("login", Type.GetType("System.String"));
                        DataColumn   nCodigo   = new DataColumn("codigo", Type.GetType("System.String"));
                        DataColumn   nm_coluna = new DataColumn("nm_coluna", Type.GetType("System.String"));
                        DataColumn[] npk       = new DataColumn[] { nLogin, nCodigo, nm_coluna };
                        dt_configGrid.Columns.Add(nLogin);
                        dt_configGrid.Columns.Add(nCodigo);
                        dt_configGrid.Columns.Add(nm_coluna);
                        dt_configGrid.PrimaryKey = npk;
                        dt_configGrid.Columns.Add("index", Type.GetType("System.Int32"));
                        dt_configGrid.Columns.Add("tamanho", Type.GetType("System.Int32"));
                    }
                    DataRow linha = linha = ds.Tables[0].NewRow();
                    linha["login"]     = Parametros.pubLogin;
                    linha["codigo"]    = EditResult != null ? EditResult[0].NM_CampoBusca : string.Empty;
                    linha["localx"]    = FBusca.Location.X;
                    linha["localy"]    = FBusca.Location.Y;
                    linha["sizex"]     = FBusca.Size.Width;
                    linha["sizey"]     = FBusca.Size.Height;
                    linha["buscarpor"] = FBusca.cbCampos.Text;
                    linha["nlinhas"]   = FBusca.nLinhas.Value;
                    object[] chave = new object[] { Parametros.pubLogin, (EditResult != null ? EditResult[0].NM_CampoBusca : string.Empty) };
                    if (ds.Tables[0].Rows.Contains(chave))
                    {
                        ds.Tables[0].Rows.Remove(ds.Tables[0].Rows.Find(chave));
                    }
                    ds.Tables[0].Rows.Add(linha);

                    int cont = FBusca.gBusca.Columns.Count;
                    for (int i = 0; i < cont; i++)
                    {
                        linha              = ds.Tables[1].NewRow();
                        linha["login"]     = Parametros.pubLogin;
                        linha["codigo"]    = EditResult != null ? EditResult[0].NM_CampoBusca.Trim() : string.Empty;
                        linha["nm_coluna"] = FBusca.gBusca.Columns[i].Name.Trim();
                        linha["index"]     = FBusca.gBusca.Columns[i].DisplayIndex;
                        linha["tamanho"]   = FBusca.gBusca.Columns[i].Width;
                        object[] nChave = new object[] { Parametros.pubLogin, (EditResult != null ? EditResult[0].NM_CampoBusca.Trim() : string.Empty), FBusca.gBusca.Columns[i].Name.Trim() };
                        if (ds.Tables[1].Rows.Contains(nChave))
                        {
                            ds.Tables[1].Rows.Remove(ds.Tables[1].Rows.Find(nChave));
                        }
                        ds.Tables[1].Rows.Add(linha);
                    }
                    ds.WriteXml(vPath + "configBusca.xml", XmlWriteMode.WriteSchema);
                }
                catch { }
                FBusca.Dispose();
            }
        }
Пример #8
0
        public static bool GerarXMLLMC(TRegistro_LMC val,
                                       TRegistro_CfgNfe rCfgNfe,
                                       ref string Msg)
        {
            bool ret = false;

            val.Chaveacesso = CamadaNegocio.PostoCombustivel.TCN_LMC.GerarChaveLMC(val);
            //Validar certificado
            srvNFE.ConsultaStatusServico.ConsultaStatusServico.ValidarCertificado(rCfgNfe);
            StringBuilder xml = new StringBuilder();

            xml.Append("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?> ");
            #region autorizacao
            xml.Append("<autorizacao xmlns=\"http://www.fazenda.pr.gov.br/sefaws\">");
            #region LivroCombustivel
            xml.Append("<livroCombustivel xmlns=\"http://www.fazenda.pr.gov.br/sefaws\">");
            #region infLivroCombustivel
            xml.Append("<infLivroCombustivel versao=\"" + rCfgNfe.Cd_versaoLMC.Trim() + "\" Id=\"LMC" + val.Chaveacesso.Trim() + "\">");
            #region Ambiente
            xml.Append("<tpAmb>");
            xml.Append(rCfgNfe.Tp_ambiente_lmc);
            xml.Append("</tpAmb>");
            #endregion
            #region Codigo LMC
            xml.Append("<cNumerico>");
            xml.Append(val.Id_lmcstr.FormatStringEsquerda(5, '0'));
            xml.Append("</cNumerico>");
            #endregion
            #region Codigo Digito Verificador Chave Acesso
            xml.Append("<cDV>");
            xml.Append(val.Chaveacesso.Substring(val.Chaveacesso.Length - 1, 1));
            xml.Append("</cDV>");
            #endregion
            #region Emitente LMC
            xml.Append("<emit>");
            #region Insc. Estadual
            xml.Append("<IE>");
            xml.Append(val.IE_empresa.SoNumero());
            xml.Append("</IE>");
            #endregion
            #region CNPJ
            xml.Append("<CNPJ>");
            xml.Append(val.Cnpj_empresa.SoNumero());
            xml.Append("</CNPJ>");
            #endregion
            #region Nome Emitente
            xml.Append("<xNome>");
            xml.Append(val.Nm_empresa.Trim().SubstCaracteresEsp());
            xml.Append("</xNome>");
            #endregion
            xml.Append("</emit>");
            #endregion
            #region Movimento
            xml.Append("<movimento dEmissao=\"" + val.Dt_emissao.Value.ToString("yyyy-MM-dd") + "\">");
            #region infMovimento
            CamadaNegocio.PostoCombustivel.TCN_MovLMC.Buscar(val.Cd_empresa, val.Id_lmcstr, string.Empty, null).ForEach(p =>
            {
                xml.Append("<infMovimento nrProduto=\"" + p.Tp_combustivel + "\">");
                //Volume Abertura
                xml.Append("<volEstoqueAbertura>");
                xml.Append(Convert.ToDecimal(string.Format("{0:N3}", p.Volumeabertura)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                xml.Append("</volEstoqueAbertura>");
                #region volumeRecebido
                p.lRec = CamadaNegocio.PostoCombustivel.TCN_MovRec.Buscar(p.Cd_empresa, p.Id_lmcstr, p.Id_movtostr, null);
                if (p.lRec.Count > 0)
                {
                    p.lRec.ForEach(v =>
                    {
                        xml.Append("<volumeRecebido>");
                        //CNPJ
                        xml.Append("<CNPJ>");
                        xml.Append(v.Cnpj_fornecedor.SoNumero());
                        xml.Append("</CNPJ>");
                        //Nota Fiscal
                        xml.Append("<nNF>");
                        xml.Append(v.Nr_notafiscalstr);
                        xml.Append("</nNF>");
                        //Data Nota
                        xml.Append("<dNF>");
                        xml.Append(v.Dt_saient.Value.ToString("yyyy-MM-dd"));
                        xml.Append("</dNF>");
                        //Volume Recebido
                        xml.Append("<volVolume>");
                        xml.Append(Convert.ToDecimal(string.Format("{0:N3}", v.VolumeRecebido)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                        xml.Append("</volVolume>");
                        //Tanque
                        xml.Append("<xTanque>");
                        xml.Append(v.Id_tanquestr);
                        xml.Append("</xTanque>");
                        xml.Append("</volumeRecebido>");
                    });
                }
                #endregion
                #region volumeVendido
                p.lVend = CamadaNegocio.PostoCombustivel.TCN_MovVend.Buscar(p.Cd_empresa, p.Id_lmcstr, p.Id_movtostr, null);
                if (p.lVend.Count > 0)
                {
                    p.lVend.ForEach(v =>
                    {
                        xml.Append("<volumeVendido>");
                        //Tanque
                        xml.Append("<xTanque>");
                        xml.Append(v.Id_tanquestr);
                        xml.Append("</xTanque>");
                        //Bico
                        xml.Append("<nrBico>");
                        xml.Append(v.Ds_labelbico);
                        xml.Append("</nrBico>");
                        //Fechamento
                        xml.Append("<volFechamento>");
                        xml.Append(Convert.ToDecimal(string.Format("{0:N3}", v.Volfechamento)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                        xml.Append("</volFechamento>");
                        //Abertura
                        xml.Append("<volAbertura>");
                        xml.Append(Convert.ToDecimal(string.Format("{0:N3}", v.Volabertura)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                        xml.Append("</volAbertura>");
                        //Afericoes
                        xml.Append("<volAfericoes>");
                        xml.Append(Convert.ToDecimal(string.Format("{0:N3}", v.Volafericao)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                        xml.Append("</volAfericoes>");
                        xml.Append("</volumeVendido>");
                    });
                }
                #endregion
                //Estoque Fechamento
                xml.Append("<volEstoqueFechamento>");
                xml.Append(Convert.ToDecimal(string.Format("{0:N3}", p.Volumefechamento)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                xml.Append("</volEstoqueFechamento>");
                //Valor Vendas Dia
                xml.Append("<valVendasDiaBomba>");
                xml.Append(Convert.ToDecimal(string.Format("{0:N2}", p.Vl_vendasdia)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                xml.Append("</valVendasDiaBomba>");
                //Vendas Acumuladas Mes
                xml.Append("<valAcumuladoMes>");
                xml.Append(Convert.ToDecimal(string.Format("{0:N2}", p.Vl_vendasdia)).ToString(new System.Globalization.CultureInfo("en-US", true)));
                xml.Append("</valAcumuladoMes>");
                //Observacoes
                xml.Append("<observacoes>");
                xml.Append(p.Obs.Trim().SubstCaracteresEsp());
                xml.Append("</observacoes>");
                xml.Append("</infMovimento>");
            });
            #endregion
            xml.Append("</movimento>");
            #endregion
            xml.Append("</infLivroCombustivel>");
            #endregion
            xml.Append("</livroCombustivel>");
            #endregion
            xml.Append("</autorizacao>");
            #endregion

            //Assinar documento XML
            string xmlassinado =
                new Utils.Assinatura.TAssinatura2(rCfgNfe.Nr_certificado_nfe,
                                                  Utils.Assinatura.TAssinatura2.TTpArq.tpLMCe,
                                                  xml.ToString()).Assinar();

            //Validar Schema XML
            Utils.ValidaSchema.ValidaXML2.validaXML(xmlassinado,
                                                    rCfgNfe.Path_nfe_schemas.SeparadorDiretorio() + "autorizacao_v" + rCfgNfe.Cd_versaoLMC.Trim() + ".xsd",
                                                    "LMC");
            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, rCfgNfe);
            if (retorno != null)
            {
                if (retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["cStat"].InnerText.Trim().Equals("100") ||
                    retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["cStat"].InnerText.Trim().Equals("101") ||
                    retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["cStat"].InnerText.Trim().Equals("1001"))
                {
                    try
                    {
                        CamadaDados.TDataQuery       query = new CamadaDados.TDataQuery();
                        System.Collections.Hashtable hs    = new System.Collections.Hashtable();
                        hs.Add("@P_CHAVE", val.Chaveacesso);
                        hs.Add("@P_RECEBIMENTO", DateTime.Parse(retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["dhRecbto"].InnerText));
                        hs.Add("@P_STATUS", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["cStat"].InnerText);
                        hs.Add("@P_XMOTIVO", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["xMotivo"].InnerText);
                        hs.Add("@P_NPROT", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["nProt"].InnerText);
                        hs.Add("@P_DIGVAL", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["digVal"].InnerText);
                        hs.Add("@P_XML", xmlassinado);
                        hs.Add("@P_EMPRESA", val.Cd_empresa);
                        hs.Add("@P_LMC", val.Id_lmc);
                        query.executarSql("update tb_pdc_lmc set " +
                                          "chaveacesso = @P_CHAVE, " +
                                          "dt_recebimento = @P_RECEBIMENTO, " +
                                          "status = @P_STATUS, " +
                                          "xMotivo = @P_XMOTIVO, " +
                                          "nProt = @P_NPROT, " +
                                          "digVal = @P_DIGVAL, " +
                                          "xml_lmc = @P_XML, " +
                                          "dt_alt = getdate() " +
                                          "where cd_empresa = @P_EMPRESA and id_lmc = @P_LMC", hs);
                        ret = true;
                        Msg = retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["xMotivo"].InnerText;
                    }
                    catch (Exception ex)
                    { throw new Exception("Erro gravar chave acesso LMC-e: " + ex.Message.Trim()); }
                }
                else
                {
                    try
                    {
                        CamadaDados.TDataQuery       query = new CamadaDados.TDataQuery();
                        System.Collections.Hashtable hs    = new System.Collections.Hashtable();
                        hs.Add("@P_STATUS", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["cStat"].InnerText);
                        hs.Add("@P_XMOTIVO", retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["xMotivo"].InnerText);
                        hs.Add("@P_EMPRESA", val.Cd_empresa);
                        hs.Add("@P_LMC", val.Id_lmc);
                        query.executarSql("update tb_pdc_lmc set " +
                                          "status = @P_STATUS, " +
                                          "xMotivo = @P_XMOTIVO, " +
                                          "dt_alt = getdate() " +
                                          "where cd_empresa = @P_EMPRESA and id_lmc = @P_LMC", hs);
                    }
                    catch (Exception ex)
                    { throw new Exception("Erro gravar chave acesso LMC-e: " + ex.Message.Trim()); }
                    Msg = retorno["autorizacaoRetorno"]["livroCombustivelRetorno"]["protLivroCombustivel"]["infProt"]["xMotivo"].InnerText;
                }
            }
            return(ret);
        }
Пример #9
0
        public static bool EnviarLote(decimal?Id_lote,
                                      List <CamadaDados.Faturamento.PDV.TRegistro_NFCe> lNFCe)
        {
            bool ret = false;

            if (lNFCe.Count > 0)
            {
                //Validar Certificado
                srvNFE.ConsultaStatusServico.ConsultaStatusServico.ValidarCertificado(lNFCe[0].rCfgNFCe);
                //Verificar status do servico junto a receita
                if (ConsultaStatusServico.TConsultaStatusServico.StatusServico(lNFCe[0].rCfgNFCe).Trim() != "107")
                {
                    throw new Exception("Serviço indisponivel no momento.\r\nAguarde alguns minutos e tente novamente.");
                }
                GerarXML.TGerarXML.GerarXML(lNFCe);

                StringBuilder xml = new StringBuilder();
                xml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
                #region enviNFe
                xml.Append("<enviNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"" + lNFCe[0].rCfgNFCe.Cd_versaonfce.Trim() + "\">\n");
                if (!Id_lote.HasValue)
                {
                    Id_lote = GerarIdLote(null,
                                          null,
                                          null,
                                          decimal.Zero,
                                          "A",
                                          null,
                                          string.Empty,
                                          lNFCe[0].rCfgNFCe);
                }
                if (!Id_lote.HasValue)
                {
                    throw new Exception("Erro gerar Id. do lote");
                }
                #region "idLote"
                xml.Append("<idLote>");
                xml.Append(Id_lote.ToString().PadLeft(15, '0'));
                xml.Append("</idLote>\n");
                #endregion
                #region indSinc
                xml.Append("<indSinc>");
                xml.Append(lNFCe.Count > 1 ? "0" : "1");
                xml.Append("</indSinc>");
                #endregion
                lNFCe.ForEach(p =>
                {
                    XmlDocument documento = new XmlDocument();
                    documento.LoadXml(p.XmlNFCe);
                    //Gravar lote x nota fiscal
                    GravarLoteXNFCe(Id_lote.Value,
                                    p,
                                    null,
                                    decimal.Zero,
                                    string.Empty,
                                    decimal.Zero,
                                    string.Empty,
                                    string.Empty);
                    xml.Append(p.XmlNFCe + "\n");
                });
                xml.Append("</enviNFe>\n");
                #endregion

                //Validar Arquivo Lote
                Utils.ValidaSchema.ValidaXML2.validaXML(xml.ToString(),
                                                        lNFCe[0].rCfgNFCe.Path_nfe_schemas.SeparadorDiretorio() + "enviNFe_v" + lNFCe[0].rCfgNFCe.Cd_versaonfce.Trim() + ".xsd",
                                                        "NFE");
                if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno))
                {
                    throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno.Trim());
                }
                try
                {
                    //Enviar Lote para Receita
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(xml.ToString());
                    XmlNode retorno = ConectarWebService(doc.DocumentElement, lNFCe[0].rCfgNFCe);
                    //Tratar retorno
                    if (retorno != null)
                    {
                        if (retorno["cStat"].InnerText.Trim().Equals("103") ||
                            retorno["cStat"].InnerText.Trim().Equals("104"))
                        {
                            //Lote recebido com sucesso
                            //Gravar dados do lote no banco de dados
                            decimal? nRec     = null;
                            DateTime?dhRecbto = null;
                            decimal? tMed     = null;
                            try
                            {
                                dhRecbto = Convert.ToDateTime(retorno["dhRecbto"].InnerText);
                            }
                            catch { }
                            if (retorno.InnerXml.Contains("infRec"))
                            {
                                nRec = Convert.ToDecimal(retorno["infRec"]["nRec"].InnerText);
                                tMed = Convert.ToDecimal(retorno["infRec"]["tMed"].InnerText);
                            }
                            else if (retorno.InnerXml.Contains("protNFe"))
                            {
                                DateTime?dt_rec = null;
                                try
                                {
                                    dt_rec = Convert.ToDateTime(retorno["protNFe"]["infProt"]["dhRecbto"].InnerText);
                                    lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Dt_processamento = dt_rec;
                                }
                                catch { }
                                decimal nprot = decimal.Zero;
                                try
                                {
                                    nprot = Convert.ToDecimal(retorno["protNFe"]["infProt"]["nProt"].InnerText);
                                    lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Nr_protocolo = nprot;
                                }
                                catch { }
                                decimal status = decimal.Zero;
                                try
                                {
                                    status = Convert.ToDecimal(retorno["protNFe"]["infProt"]["cStat"].InnerText);
                                    if (status.Equals(100))
                                    {
                                        lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Digval =
                                            retorno["protNFe"]["infProt"]["digVal"].InnerText;
                                    }
                                }
                                catch { }
                                GravarLoteXNFCe(Id_lote.Value,
                                                lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)),
                                                dt_rec,
                                                nprot,
                                                (status.Equals(100) ? retorno["protNFe"]["infProt"]["digVal"].InnerText : string.Empty),
                                                status,
                                                retorno["protNFe"]["infProt"]["xMotivo"].InnerText,
                                                retorno["protNFe"]["infProt"]["verAplic"].InnerText);
                                if (lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Id_contingencia.HasValue&&
                                    lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).St_registro.Trim().ToUpper().Equals("C"))
                                {
                                    try
                                    {
                                        //Buscar evento de cancelamento
                                        CamadaDados.Faturamento.PDV.TList_EventoNFCe lEvento =
                                            CamadaNegocio.Faturamento.PDV.TCN_EventoNFCe.Buscar(lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Cd_empresa,
                                                                                                lNFCe.Find(p => p.Chave_acesso.Trim().Equals(retorno["protNFe"]["infProt"]["chNFe"].InnerText)).Id_nfcestr,
                                                                                                string.Empty,
                                                                                                null);
                                        if (lEvento.Count > 0)
                                        {
                                            if (!lEvento[0].St_registro.Trim().ToUpper().Equals("T"))
                                            {
                                                lEvento[0].Chave_acesso_nfce = retorno["protNFe"]["infProt"]["chNFe"].InnerText;
                                                NFCe.EventoNFCe.TEventoNFCe.EnviarEvento(lEvento[0], lNFCe[0].rCfgNFCe);
                                            }
                                        }
                                    }
                                    catch { }
                                }
                                ret = true;
                            }
                            GerarIdLote(Id_lote,
                                        nRec,
                                        dhRecbto,
                                        tMed,
                                        ret ? "P" : "E",
                                        Convert.ToDecimal(retorno["cStat"].InnerText),
                                        retorno["xMotivo"].InnerText,
                                        lNFCe[0].rCfgNFCe);
                            //Gravar xml e chave acesso no banco
                            lNFCe.ForEach(p =>
                            {
                                CamadaDados.TDataQuery query    = new CamadaDados.TDataQuery();
                                System.Collections.Hashtable hs = new System.Collections.Hashtable(3);
                                hs.Add("@CHAVE", p.Chave_acesso);
                                hs.Add("@CD_EMPRESA", p.Cd_empresa);
                                hs.Add("@ID_NFCE", p.Id_nfce);
                                query.executarSql("update tb_pdv_nfce set chave_acesso = @CHAVE, dt_alt = getdate() " +
                                                  "where cd_empresa = @CD_EMPRESA and id_nfce = @ID_NFCE", hs);
                                new CamadaDados.Faturamento.PDV.TCD_XML_NFCe()
                                .Gravar(new CamadaDados.Faturamento.PDV.TRegistro_XML_NFCe
                                {
                                    Cd_empresa = p.Cd_empresa,
                                    Id_nfce    = p.Id_nfce,
                                    Xml_nfce   = p.XmlNFCe
                                });
                            });
                        }
                        else
                        {
                            //Erro no envio do lote
                            //Gravar mensagem de erro de envio do lote
                            GerarIdLote(Id_lote,
                                        null,
                                        null,
                                        null,
                                        "A",
                                        Convert.ToDecimal(retorno["cStat"].InnerText),
                                        retorno["xMotivo"].InnerText,
                                        lNFCe[0].rCfgNFCe);
                        }
                    }
                    else
                    {
                        throw new Exception("Serviço Enviar NFC-e indisponivel no momento.");
                    }
                }
                catch (Exception ex)
                {
                    DeletarNFCeLotesProblemas(lNFCe[0].rCfgNFCe);
                    DeletarLotesProblemas(lNFCe[0].rCfgNFCe);
                    throw new Exception(ex.Message.Trim());
                }
            }
            return(ret);
        }