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