示例#1
0
        //DRE
        private static void GerarRegistroJ150(TRegistro_Empresa rEmpresa,
                                              decimal Id_dre,
                                              DateTime?Dt_ini,
                                              DateTime?Dt_fin,
                                              StringBuilder SpedContabil,
                                              ThreadEspera tEspera)
        {
            if (tEspera != null)
            {
                tEspera.Msg("Gerando registro J150...");
            }
            decimal cont = decimal.Zero;

            TCN_LanContabil.GerarDRE(rEmpresa.Cd_empresa, Id_dre.ToString(), Dt_fin.Value.Year).ForEach(p =>
            {
                string regJ150 = "|J150|";
                //Codigo Aglutinação
                regJ150 += (p.Cd_conta_ctb.HasValue ? p.Cd_conta_ctb.Value.ToString() : p.Classificacao.Trim()) + "|";
                //Nivel Aglutinação
                regJ150 += p.Nivel.ToString() + "|";
                //Descrição Aglutinação
                regJ150 += (!string.IsNullOrEmpty(p.Ds_contactb) ? p.Ds_contactb.Trim() : p.Ds_param.Trim()) + "|";
                //Valor Conta
                regJ150 += Math.Abs(p.Tp_conta.Trim().ToUpper().Equals("A") ? p.Sd_atual : p.Tot_atual).ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|";
                //Indicador do Valor
                regJ150 += (p.Tp_conta.Trim().ToUpper().Equals("R") ? (p.Tp_conta.Trim().ToUpper().Equals("A") ? p.Sd_atual : p.Tot_atual) >= decimal.Zero ? "P" : "N" : p.Operador.Trim().ToUpper().Equals("S") ? "R" : "D") + "|";
                //Saldo Anterior
                regJ150 += Math.Abs(p.Tp_conta.Trim().ToUpper().Equals("A") ? p.Sd_ant : p.Tot_ant).ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|";
                //Indicador do Valor
                regJ150 += (p.Tp_conta.Trim().ToUpper().Equals("R") ? (p.Tp_conta.Trim().ToUpper().Equals("A") ? p.Sd_ant : p.Tot_ant) >= decimal.Zero ? "P" : "N" : p.Operador.Trim().ToUpper().Equals("S") ? "R" : "D") + "|";

                SpedContabil.AppendLine(regJ150);
                Qtd_linhaJ++;
                cont++;
            });
            if (cont > decimal.Zero)
            {
                RegArq.Adiciona(new TRegistro_RegArquivo()
                {
                    Registro = "J150", Qtd_linha = cont
                });
            }
        }
示例#2
0
 public static string ProcessarSpedContabil(string Cd_empresa,
                                            DateTime?Dt_ini,
                                            DateTime?Dt_fin,
                                            decimal Id_dre,
                                            ThreadEspera tEspera)
 {
     try
     {
         StringBuilder SpedContabil = new StringBuilder();
         RegArq = new TList_RegArquivo();
         if (string.IsNullOrEmpty(Cd_empresa))
         {
             throw new Exception("Obrigatório informar empresa.");
         }
         if (Dt_ini == null)
         {
             throw new Exception("Obrigatorio informar data inicial.");
         }
         if (Dt_fin == null)
         {
             throw new Exception("Obrigatorio informar data final.");
         }
         List <TRegistro_Empresa> lEmpresa = new TCD_Empresa().Select(new TpBusca[] {
             new TpBusca()
             {
                 vNM_Campo = "a.cd_empresa",
                 vOperador = "=",
                 vVL_Busca = "'" + Cd_empresa.Trim() + "'"
             }
         });
         if (lEmpresa.Count > 0)
         {
             GerarBloco0(lEmpresa[0], Dt_ini, Dt_fin, SpedContabil, tEspera);
             List <CamadaDados.Contabil.TRegistro_BalancoSintetico> Balanco =
                 TCN_LanContabil.GerarBalanco(Cd_empresa, string.Empty, string.Empty, Dt_ini, Dt_fin, true, false, string.Empty, false, false);
             GerarBlocoI(lEmpresa[0], Balanco, Dt_ini, Dt_fin, Id_dre, SpedContabil, tEspera);
             GerarBlocoJ(lEmpresa[0], Balanco, Dt_ini, Dt_fin, Id_dre, SpedContabil, tEspera);
             GerarBloco9(SpedContabil, tEspera);
             string sped = SpedContabil.ToString().Trim().Replace("{@QTD_LINHAS}", (Qtd_linha + Qtd_linhaI + Qtd_linhaJ + Qtd_linha9).ToString());
             //Verificar numero do livro
             object obj = new TCD_SpedContabil().BuscarEscalar(new TpBusca[]
             {
                 new TpBusca()
                 {
                     vNM_Campo = "a.cd_empresa",
                     vOperador = "=",
                     vVL_Busca = "'" + Cd_empresa.Trim() + "'"
                 },
                 new TpBusca()
                 {
                     vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.dt_ini)))",
                     vOperador = "=",
                     vVL_Busca = "'" + Dt_ini.Value.ToString("yyyyMMdd") + "'"
                 },
                 new TpBusca()
                 {
                     vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.dt_fin)))",
                     vOperador = "=",
                     vVL_Busca = "'" + Dt_fin.Value.ToString("yyyyMMdd") + "'"
                 }
             }, "a.nr_sped");
             if (obj != null)
             {
                 sped = sped.Replace("{@NR_SPED}", obj.ToString());
             }
             else
             {
                 obj = new TCD_SpedContabil().BuscarEscalar(new TpBusca[]
                 {
                     new TpBusca()
                     {
                         vNM_Campo = "a.cd_empresa",
                         vOperador = "=",
                         vVL_Busca = "'" + Cd_empresa.Trim() + "'"
                     }
                 }, "isnull(max(a.nr_sped), 0)");
                 new TCD_SpedContabil().Gravar(new TRegistro_SpedContabil()
                 {
                     Cd_empresa = Cd_empresa,
                     Nr_sped    = decimal.Parse(obj.ToString()) + 1,
                     Dt_ini     = Dt_ini,
                     Dt_fin     = Dt_fin
                 });
                 sped = sped.Replace("{@NR_SPED}", (decimal.Parse(obj.ToString()) + 1).ToString());
             }
             return(sped);
         }
         else
         {
             throw new Exception("Não foi possivel encontrar os dados da empresa.");
         }
     }
     catch (Exception ex)
     { throw new Exception("Erro gerar sped contabil: " + ex.Message.Trim()); }
 }
示例#3
0
        public static void ProcessarContabilAvulso(TRegistro_Lan_CTB_LanMultiplo val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Lan_CTB_LanMultiplo qtb_lan = new TCD_Lan_CTB_LanMultiplo();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lan.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lan.Banco_Dados = banco;
                }
                //Gravar lote
                if (!val.Id_lotectb.HasValue)
                {
                    val.Id_lotectbstr = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "AV"
                    }, qtb_lan.Banco_Dados);
                }
                //Criar lista de lancamentos contabeis
                TList_LanContabil listaCre = new TList_LanContabil();
                TList_LanContabil listaDeb = new TList_LanContabil();
                val.lLanctoAvulso.ForEach(p =>
                {
                    if (p.D_C.Trim().ToUpper().Equals("D"))
                    {
                        listaDeb.Add(new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = val.Cd_empresa,
                            Data               = val.Dt_lan,
                            Ds_compl_historico = val.Complhistorico,
                            Nr_docto           = val.Nr_docto,
                            ID_LoteCTB         = val.Id_lotectb,
                            Valor              = p.Vl_lancto,
                            D_c          = "D",
                            Cd_conta_ctb = p.Cd_conta_ctb
                        });
                    }
                    else if (p.D_C.Trim().ToUpper().Equals("C"))
                    {
                        listaCre.Add(new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = val.Cd_empresa,
                            Data               = val.Dt_lan,
                            Ds_compl_historico = val.Complhistorico,
                            Nr_docto           = val.Nr_docto,
                            ID_LoteCTB         = val.Id_lotectb,
                            Valor              = p.Vl_lancto,
                            D_c          = "C",
                            Cd_conta_ctb = p.Cd_conta_ctb
                        });
                    }
                });
                //Grava registro contabil
                TCN_LanContabil.GravarContabil(listaDeb, listaCre, false, qtb_lan.Banco_Dados);
                //Altera status lan multiplo para processado
                val.St_registro = "P";//Processado
                qtb_lan.Grava(val);
                if (st_transacao)
                {
                    qtb_lan.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lan.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar registro: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lan.deletarBanco_Dados();
                }
            }
        }
示例#4
0
        public static void AjustarEstFixar(string Cd_empresa,
                                           string Cd_produto,
                                           DateTime Dt_lancto,
                                           decimal SaldoEstornar,
                                           decimal SaldoAjustar,
                                           string Tp_movimento,
                                           TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_AtualizaEstFixar qtb_atualiza = new TCD_AtualizaEstFixar();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_atualiza.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_atualiza.Banco_Dados = banco;
                }
                if (qtb_atualiza.BuscarEscalar(
                        new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_empresa",
                        vOperador = "=",
                        vVL_Busca = "'" + Cd_empresa.Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_produto",
                        vOperador = "=",
                        vVL_Busca = "'" + Cd_produto.Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_movimento",
                        vOperador = "=",
                        vVL_Busca = "'" + Tp_movimento.Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.dt_lancto)))",
                        vOperador = ">=",
                        vVL_Busca = "'" + Dt_lancto.ToString("yyyyMMdd") + "'"
                    }
                }, "1") != null)
                {
                    throw new Exception("Existe lançamento de atualização para periodo igual ou maior que o informado.");
                }
                //Buscar valor ajuste anterior
                //object obj = qtb_atualiza.BuscarEscalar(
                //                new TpBusca[]
                //                {
                //                    new TpBusca()
                //                    {
                //                        vNM_Campo = "a.cd_empresa",
                //                        vOperador = "=",
                //                        vVL_Busca = "'" + Cd_empresa.Trim() + "'"
                //                    },
                //                    new TpBusca()
                //                    {
                //                        vNM_Campo = "a.cd_produto",
                //                        vOperador = "=",
                //                        vVL_Busca = "'" + Cd_produto.Trim() + "'"
                //                    },
                //                    new TpBusca()
                //                    {
                //                        vNM_Campo = "a.tp_movimento",
                //                        vOperador = "=",
                //                        vVL_Busca = "'" + Tp_movimento.Trim() + "'"
                //                    },
                //                    new TpBusca()
                //                    {
                //                        vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.dt_lancto)))",
                //                        vOperador = "<",
                //                        vVL_Busca = "'" + Dt_lancto.ToString("yyyyMMdd") + "'"
                //                    },
                //                    new TpBusca()
                //                    {
                //                        vNM_Campo = "a.tp_registro",
                //                        vOperador = "=",
                //                        vVL_Busca = "'A'"
                //                    }
                //                }, "a.valor", string.Empty, "a.dt_lancto desc", null);
                //SaldoEstornar += obj == null ? decimal.Zero : decimal.Parse(obj.ToString());
                //Gravar estorno
                string ret = qtb_atualiza.Gravar(new TRegistro_AtualizaEstFixar
                {
                    Cd_empresa   = Cd_empresa,
                    Cd_produto   = Cd_produto,
                    Dt_lancto    = Dt_lancto,
                    Tp_registro  = "E",
                    Tp_movimento = Tp_movimento,
                    Valor        = SaldoEstornar
                });
                //Contabilizar estorno
                TList_ProcCompFixar lCont = TCN_Lan_ProcContabil.BuscarProc_CompFixar(Cd_empresa,
                                                                                      CamadaDados.TDataQuery.getPubVariavel(ret, "@P_ID_ATUALIZA"),
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      "E",
                                                                                      Tp_movimento,
                                                                                      Cd_produto,
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      decimal.Zero,
                                                                                      decimal.Zero,
                                                                                      false,
                                                                                      qtb_atualiza.Banco_Dados);
                if (lCont.Count > 0)
                {
                    if (lCont.Exists(p => p.CD_ContaCre.HasValue && p.CD_ContaDeb.HasValue))
                    {
                        TCN_LanContabil.ProcessaCTB_CompFixar(lCont, qtb_atualiza.Banco_Dados);
                    }
                }
                //Gravar atualização
                ret = qtb_atualiza.Gravar(new TRegistro_AtualizaEstFixar
                {
                    Cd_empresa   = Cd_empresa,
                    Cd_produto   = Cd_produto,
                    Dt_lancto    = Dt_lancto,
                    Tp_registro  = "A",
                    Tp_movimento = Tp_movimento,
                    Valor        = SaldoAjustar
                });
                //Contabilizar atualização
                lCont = TCN_Lan_ProcContabil.BuscarProc_CompFixar(Cd_empresa,
                                                                  CamadaDados.TDataQuery.getPubVariavel(ret, "@P_ID_ATUALIZA"),
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  "A",
                                                                  Tp_movimento,
                                                                  Cd_produto,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  decimal.Zero,
                                                                  decimal.Zero,
                                                                  false,
                                                                  qtb_atualiza.Banco_Dados);
                if (lCont.Count > 0)
                {
                    if (lCont.Exists(p => p.CD_ContaCre.HasValue && p.CD_ContaDeb.HasValue))
                    {
                        TCN_LanContabil.ProcessaCTB_CompFixar(lCont, qtb_atualiza.Banco_Dados);
                    }
                }
                if (st_transacao)
                {
                    qtb_atualiza.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_atualiza.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro ajustar estoque fixar: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_atualiza.deletarBanco_Dados();
                }
            }
        }
示例#5
0
        public static void Zeramento(CamadaDados.Contabil.Cadastro.TRegistro_Cad_CTB_ParamZeramento rParam,
                                     DateTime?Dt_ini,
                                     DateTime?Dt_fin,
                                     string Complemento,
                                     BancoDados.TObjetoBanco banco)
        {
            bool          st_transacao  = false;
            TCD_Zeramento qtb_zeramento = new TCD_Zeramento();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_zeramento.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_zeramento.Banco_Dados = banco;
                }
                //Gerar Balanco no Periodo
                List <TRegistro_BalancoSintetico> Balanco =
                    TCN_LanContabil.GerarBalanco(rParam.Cd_empresa, string.Empty, string.Empty, Dt_ini, Dt_fin, true, false, string.Empty, false, false);

                //Lista Lancamento Contabeis Gerados
                TList_Zeramento_X_Lote lLoteZeramento = new TList_Zeramento_X_Lote();
                //Zerar Receitas
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifreceitas.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                //Zerar Despesas
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifdespesas.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                //Zerar Custos
                Balanco.Where(p => p.Tp_conta.Trim().ToUpper().Equals("A") &&
                              p.Classificacao.Trim().StartsWith(rParam.Cd_classifcusto.Trim())).ToList().ForEach(p =>
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? rParam.Cd_contaresultado : p.Cd_contaCTB
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(p.Vl_atual),
                            Cd_conta_ctb       = p.Vl_atual > decimal.Zero ? p.Cd_contaCTB : rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                });
                decimal resultado = Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifreceitas.Trim())).Vl_atual -
                                    Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifdespesas.Trim())).Vl_atual -
                                    Balanco.Find(p => p.Classificacao.Trim().Equals(rParam.Cd_classifcusto.Trim())).Vl_atual;
                if (resultado > decimal.Zero && rParam.Cd_cResultadoL.HasValue)
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = resultado,
                            Cd_conta_ctb       = rParam.Cd_contaresultado
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = resultado,
                            Cd_conta_ctb       = rParam.Cd_cResultadoL
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                }
                else if (resultado < decimal.Zero && rParam.Cd_cResultadoP.HasValue)
                {
                    //Gravar Lote
                    string id_loteCTB = TCN_LoteCTB.Gravar(new TRegistro_LoteCTB()
                    {
                        Tp_integracao = "ZR"
                    }, qtb_zeramento.Banco_Dados);
                    //Gravar Lancamentos Contabeis
                    TCN_LanContabil.GravarContabil(
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(resultado),
                            Cd_conta_ctb       = rParam.Cd_cResultadoP
                        }
                    },
                        new List <TRegistro_LanctosCTB>()
                    {
                        new TRegistro_LanctosCTB()
                        {
                            Cd_empresa         = rParam.Cd_empresa,
                            Data               = Dt_fin,
                            Ds_compl_historico = "Zeramento",
                            Nr_docto           = "ZR",
                            Id_lotectbstr      = id_loteCTB,
                            Valor              = Math.Abs(resultado),
                            Cd_conta_ctb       = rParam.Cd_contaresultado
                        }
                    }, false, qtb_zeramento.Banco_Dados);
                    lLoteZeramento.Add(new TRegistro_Zeramento_X_Lote()
                    {
                        Cd_empresa = rParam.Cd_empresa, Id_loteCTBstr = id_loteCTB
                    });
                }
                //Gravar Registro Zeramento
                string id_zeramento = Gravar(new TRegistro_Zeramento()
                {
                    Cd_empresa   = rParam.Cd_empresa,
                    Dt_zeramento = Dt_fin,
                    Complemento  = Complemento
                }, qtb_zeramento.Banco_Dados);
                lLoteZeramento.ForEach(p =>
                {
                    p.Id_zeramentostr = id_zeramento;
                    TCN_Zeramento_X_Lote.Gravar(p, qtb_zeramento.Banco_Dados);
                });
                if (st_transacao)
                {
                    qtb_zeramento.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_zeramento.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar zeramento: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_zeramento.deletarBanco_Dados();
                }
            }
        }