Example #1
0
 public static string GerarChaveLMC(TRegistro_LMC val)
 {
     return(val.Dt_emissao.Value.ToString("yyyyMMdd") +
            val.Cnpj_empresa.SoNumero() +
            val.Id_lmc.Value.ToString().FormatStringEsquerda(5, '0') +
            Utils.Estruturas.Mod11(val.Dt_emissao.Value.ToString("yyyyMMdd") +
                                   val.Cnpj_empresa.SoNumero() +
                                   val.Id_lmc.Value.ToString().FormatStringEsquerda(5, '0'), 9, false, 0));
 }
Example #2
0
        public static string Gravar(TRegistro_LMC val, BancoDados.TObjetoBanco banco)
        {
            bool    st_transacao = false;
            TCD_LMC qtb_lmc      = new TCD_LMC();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lmc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lmc.Banco_Dados = banco;
                }
                val.Id_lmcstr = CamadaDados.TDataQuery.getPubVariavel(qtb_lmc.Gravar(val), "@P_ID_LMC");
                //Gravar Movimento
                val.lMov.ForEach(p =>
                {
                    p.Cd_empresa = val.Cd_empresa;
                    p.Id_lmc     = val.Id_lmc;
                    TCN_MovLMC.Gravar(p, qtb_lmc.Banco_Dados);
                });
                if (st_transacao)
                {
                    qtb_lmc.Banco_Dados.Commit_Tran();
                }
                return(val.Id_lmcstr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lmc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar LMC: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lmc.deletarBanco_Dados();
                }
            }
        }
Example #3
0
        public static string Excluir(TRegistro_LMC val, BancoDados.TObjetoBanco banco)
        {
            bool    st_transacao = false;
            TCD_LMC qtb_lmc      = new TCD_LMC();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lmc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lmc.Banco_Dados = banco;
                }
                //Excluir Movimento
                val.lMov.ForEach(p => TCN_MovLMC.Excluir(p, qtb_lmc.Banco_Dados));
                //Excluir LMC
                qtb_lmc.Excluir(val);
                if (st_transacao)
                {
                    qtb_lmc.Banco_Dados.Commit_Tran();
                }
                return(val.Id_lmcstr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lmc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir LMC: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lmc.deletarBanco_Dados();
                }
            }
        }
Example #4
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);
        }