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(); } } }
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(); } } }