//Plano Contas Referencial private static void GerarRegistroI051(TRegistro_Empresa rEmpresa, CamadaDados.Contabil.TRegistro_BalancoSintetico rConta, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I051..."); } string regI051 = "|I051|"; //Instituição Responsavel Plano Referencial regI051 += rEmpresa.Tp_InstPlanoRef.Trim() + "|"; //Centro Custo regI051 += "|"; //Codigo Conta Referencial regI051 += rConta.Cd_referencia.Trim() + "|"; SpedContabil.AppendLine(regI051); Qtd_linhaI++; RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I051", Qtd_linha = 1 }); }
//Demonstrações Contabeis private static void GerarRegistroJ005(List <CamadaDados.Contabil.TRegistro_BalancoSintetico> balanco, TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, decimal Id_dre, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro J005..."); } string regJ005 = "|J005|"; //Data Inicial regJ005 += Dt_ini.Value.ToString("ddMMyyyy") + "|"; //Data Final regJ005 += Dt_fin.Value.ToString("ddMMyyyy") + "|"; //Identificação Demonstração regJ005 += "1|"; //Cabeçalho regJ005 += "|"; SpedContabil.AppendLine(regJ005); Qtd_linhaJ++; GerarRegistroJ100(balanco, SpedContabil, tEspera); GerarRegistroJ150(rEmpresa, Id_dre, Dt_ini, Dt_fin, SpedContabil, tEspera); RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "J005", Qtd_linha = 1 }); }
//Abertura Arquivo Digital private static void GerarRegistro0000(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro 0000..."); } Qtd_linha = decimal.Zero; //Texto Fixo string reg0000 = "|0000|"; //Texto Fixo reg0000 += "LECD|"; //Data Inicial reg0000 += Dt_ini.Value.ToString("dd/MM/yyyy").SoNumero() + "|"; //Data Final reg0000 += Dt_fin.Value.ToString("dd/MM/yyyy").SoNumero() + "|"; //Nome Empresa reg0000 += rEmpresa.Nm_empresa.Trim() + "|"; //CNPJ Empresa reg0000 += rEmpresa.Cnpj.SoNumero() + "|"; //UF Empresa reg0000 += rEmpresa.Uf.Trim() + "|"; //Insc. Estadual Empresa reg0000 += rEmpresa.Insc_estadual.Trim() + "|"; //Cidade Empresa reg0000 += rEmpresa.Cd_cidade.Trim() + "|"; //Inscrição Municipal Empresa reg0000 += rEmpresa.Insc_municipal.Trim() + "|"; //Situação Especial reg0000 += "|"; //Situação Arquivo reg0000 += "0|"; //Inscrição Junta Comercial reg0000 += string.IsNullOrEmpty(rEmpresa.Cd_registrojunta) ? "0|" : "1|"; //Finalidade Escrituração reg0000 += "0|";//Original //Hash Escrituração Substituida reg0000 += "|"; //Nire Escrituração Substituida reg0000 += "|"; //Auditoria Independente reg0000 += "0|"; //Tipo ECD reg0000 += "0|"; //Identificação SCP reg0000 += "|"; //Identificação Moeda Funcional reg0000 += "N|"; SpedContabil.AppendLine(reg0000); Qtd_linha++; RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "0000", Qtd_linha = 1 }); }
//Plano de Contas private static void GerarRegistroI050(TRegistro_Empresa rEmpresa, List <CamadaDados.Contabil.TRegistro_BalancoSintetico> lContas, decimal?Id_dre, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I050..."); } decimal cont = decimal.Zero; lContas.ForEach(p => { string regI050 = "|I050|"; //Data Inclusão/Alteração regI050 += p.Dt_altconta.Value.ToString("ddMMyyyy") + "|"; //Código da Natureza regI050 += p.Tp_contasped.Trim() + "|"; //Tipo Conta Sintetica/Analitica regI050 += p.Tp_conta.Trim() + "|"; //Nivel Conta regI050 += p.Nivelconta.ToString() + "|"; //Código Conta regI050 += p.Cd_contaCTBstr + "|"; //Código Conta Pai regI050 += (p.Cd_contaCTBPai.HasValue ? p.Cd_contaCTBPai.ToString() : string.Empty) + "|"; //Nome da Conta regI050 += p.Ds_contactb.Trim() + "|"; SpedContabil.AppendLine(regI050); Qtd_linhaI++; cont++; if (p.Tp_conta.Trim().ToUpper().Equals("A")) { //Registro Plano Referencial if (!string.IsNullOrEmpty(p.Cd_referencia)) { GerarRegistroI051(rEmpresa, p, SpedContabil, tEspera); } //Registro Codigos Aglutinação GerarRegistroI052(p, Id_dre, SpedContabil, tEspera); } }); if (cont > decimal.Zero) { RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I050", Qtd_linha = cont }); } }
private static void GerarBloco0(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { GerarRegistro0000(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); GerarRegistro0001(SpedContabil, tEspera); GerarRegistro0007(SpedContabil, tEspera); GerarRegistro0990(SpedContabil, tEspera); }
//Detalhe dos saldos periodicos private static void GerarRegistroI155(TRegistro_Empresa rEmpresa, DateTime Dt_ini, DateTime Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I155..."); } decimal cont = decimal.Zero; new CamadaDados.Contabil.TCD_LanctosCTB().SelectBalancoSintetico(rEmpresa.Cd_empresa, string.Empty, string.Empty, Dt_ini, Dt_fin, true, false) .Where(p => p.Tp_conta.Trim().ToUpper().Equals("A")) .ToList() .ForEach(p => { string regI155 = "|I155|"; //Codigo da Conta regI155 += p.Cd_contaCTBstr + "|"; //Centro Custo regI155 += "|"; //Saldo Inicial Periodo regI155 += Math.Abs(p.Vl_saldoant).ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Indicador Saldo Inicial regI155 += (p.Vl_saldoant >= decimal.Zero ? p.Natureza.Trim() : p.Natureza.Trim().Equals("D") ? "C" : "D") + "|"; //Valor dos debitos regI155 += p.Vl_debito.ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Valor dos creditos regI155 += p.Vl_credito.ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Saldo Final regI155 += Math.Abs(p.Vl_atual).ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Indicador Saldo Final regI155 += (p.Vl_atual >= decimal.Zero ? p.Natureza.Trim() : p.Natureza.Trim().Equals("D") ? "C" : "D") + "|"; SpedContabil.AppendLine(regI155); Qtd_linhaI++; cont++; }); if (cont > decimal.Zero) { RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I155", Qtd_linha = cont }); } }
public static void GerarBlocoJ(TRegistro_Empresa rEmpresa, List <CamadaDados.Contabil.TRegistro_BalancoSintetico> balanco, DateTime?Dt_ini, DateTime?Dt_fin, decimal Id_dre, StringBuilder SpedContabil, ThreadEspera tEspera) { GerarRegistroJ001(SpedContabil, balanco.Count > 0, tEspera); if (balanco.Count > 0) { GerarRegistroJ005(balanco, rEmpresa, Dt_ini, Dt_fin, Id_dre, SpedContabil, tEspera); GerarRegistroJ900(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); } GerarRegistroJ990(SpedContabil, tEspera); }
//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 }); } }
private static void GerarBlocoI(TRegistro_Empresa rEmpresa, List <CamadaDados.Contabil.TRegistro_BalancoSintetico> balanco, DateTime?Dt_ini, DateTime?Dt_fin, decimal?Id_dre, StringBuilder SpedContabil, ThreadEspera tEspera) { GerarRegistroI001(SpedContabil, balanco.Count > 0, tEspera); if (balanco.Count > 0) { GerarRegistroI010(rEmpresa, SpedContabil, tEspera); GerarRegistroI030(rEmpresa, Dt_fin, SpedContabil, tEspera); GerarRegistroI050(rEmpresa, balanco, Id_dre, SpedContabil, tEspera); GerarRegistroI150(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); GerarRegistroI200(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); GerarRegistroI350(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); } GerarRegistroI990(SpedContabil, tEspera); }
//Termo de Abertura Livro private static void GerarRegistroI030(TRegistro_Empresa rEmpresa, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I030..."); } string regI030 = "|I030|"; regI030 += "TERMO DE ABERTURA|"; //Numero Livro regI030 += "{@NR_SPED}|"; //Natureza Livro regI030 += "DIÁRIO GERAL|"; //Quantidade Linhas Arquivo regI030 += "{@QTD_LINHAS}|"; //Nome Empresa regI030 += rEmpresa.Nm_empresa.Trim() + "|"; //Registro Junta Comercial regI030 += rEmpresa.Cd_registrojunta.Trim() + "|"; //CNPJ regI030 += rEmpresa.Cnpj.SoNumero() + "|"; //Data Abertura regI030 += (rEmpresa.Dt_abertura.HasValue ? rEmpresa.Dt_abertura.Value.ToString("dd/MM/yyyy").SoNumero() : string.Empty) + "|"; //Data Arquivamento regI030 += "|"; //Municipio regI030 += rEmpresa.Ds_cidade.Trim() + "|"; //Data Encerramento Exercicio regI030 += Dt_fin.Value.ToString("dd/MM/yyyy").SoNumero() + "|"; SpedContabil.AppendLine(regI030); Qtd_linhaI++; RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I030", Qtd_linha = 1 }); }
//Identificação da Escrituração Contabil private static void GerarRegistroI010(TRegistro_Empresa rEmpresa, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I010..."); } string regI010 = "|I010|"; //Forma Escrituração regI010 += rEmpresa.Tp_spedcontabil.Trim() + "|"; //Versão Layout regI010 += rEmpresa.Layoutspedcontabil.Trim() + "|"; SpedContabil.AppendLine(regI010); Qtd_linhaI++; RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I010", Qtd_linha = 1 }); }
//Identificação Periodo private static void GerarRegistroI150(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I150..."); } decimal cont = decimal.Zero; int mescorrente = Dt_ini.Value.Month; do { string regI150 = "|I150|"; //Data Inicio regI150 += new DateTime(Dt_ini.Value.Year, mescorrente, 1).ToString("dd/MM/yyyy").SoNumero() + "|"; //Data Final regI150 += new DateTime(Dt_ini.Value.Year, mescorrente, DateTime.DaysInMonth(Dt_ini.Value.Year, mescorrente)).ToString("dd/MM/yyyy").SoNumero() + "|"; SpedContabil.AppendLine(regI150); Qtd_linhaI++; cont++; //Gerar Registro I155 GerarRegistroI155(rEmpresa, new DateTime(Dt_ini.Value.Year, mescorrente, 1), new DateTime(Dt_ini.Value.Year, mescorrente, DateTime.DaysInMonth(Dt_ini.Value.Year, mescorrente)), SpedContabil, tEspera); }while(++mescorrente <= Dt_fin.Value.Month); if (cont > decimal.Zero) { RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I150", Qtd_linha = cont }); } }
//Detalhe Saldo das Contas de Resultado private static void GerarRegistroI355(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I355..."); } decimal cont = decimal.Zero; new TCD_I355().Select(rEmpresa.Cd_empresa, Dt_ini.Value, Dt_fin.Value).FindAll(p => !p.Vl_saldo.Equals(decimal.Zero)).ForEach(p => { string regI355 = "|I355|"; //Codigo Conta regI355 += p.Cd_contaCTB.Value.ToString() + "|"; //Centro Custo regI355 += "|"; //Saldo Conta regI355 += Math.Abs(p.Vl_saldo).ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Indicador Saldo Inicial regI355 += (p.Vl_saldo >= decimal.Zero ? p.Natureza.Trim() : p.Natureza.Trim().Equals("D") ? "C" : "D") + "|"; SpedContabil.AppendLine(regI355); Qtd_linhaI++; cont++; }); if (cont > decimal.Zero) { RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I355", Qtd_linha = cont }); } }
//Termo Encerramento private static void GerarRegistroJ900(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro J900..."); } string regJ900 = "|J900|"; //Texto Fixo regJ900 += "TERMO DE ENCERRAMENTO|"; //Numero Arquivo regJ900 += "{@NR_SPED}|"; //Natureza Livro regJ900 += "DIÁRIO GERAL|"; //Nome Empresa regJ900 += rEmpresa.Nm_empresa.Trim() + "|"; //Total Linhas Arquivo regJ900 += "{@QTD_LINHAS}|"; //Data Inicial regJ900 += Dt_ini.Value.ToString("ddMMyyyy") + "|"; //Data Final regJ900 += Dt_fin.Value.ToString("ddMMyyyy") + "|"; SpedContabil.AppendLine(regJ900); Qtd_linhaJ++; GerarRegistroJ930(rEmpresa, SpedContabil, tEspera); RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "J900", Qtd_linha = 1 }); }
//Saldo Contas de Resultado private static void GerarRegistroI350(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I350..."); } string regI350 = "|I350|"; //Data Apuração regI350 += Dt_fin.Value.ToString("ddMMyyyy") + "|"; SpedContabil.AppendLine(regI350); Qtd_linhaI++; GerarRegistroI355(rEmpresa, Dt_ini, Dt_fin, SpedContabil, tEspera); RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I350", Qtd_linha = 1 }); }
//Lançamento Contabil private static void GerarRegistroI200(TRegistro_Empresa rEmpresa, DateTime?Dt_ini, DateTime?Dt_fin, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro I200..."); } decimal cont = decimal.Zero; CamadaDados.Contabil.TList_LanContabil lLanctos = new CamadaDados.Contabil.TCD_LanctosCTB().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rEmpresa.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.data)))", vOperador = ">=", vVL_Busca = "'" + Dt_ini.Value.ToString("yyyyMMdd") + "'" }, new TpBusca() { vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), a.data)))", vOperador = "<=", vVL_Busca = "'" + Dt_fin.Value.ToString("yyyyMMdd") + "'" } }, 0, string.Empty, string.Empty); lLanctos.Where(p => p.D_c.Trim().ToUpper().Equals("D")).OrderBy(p => p.Data).ToList().ForEach(p => { string regI200 = "|I200|"; //Numero Lote regI200 += p.ID_LoteCTB.Value.ToString() + "|"; //Data Lançamento regI200 += p.Data.Value.ToString("ddMMyyyy") + "|"; //Valor Lançamento regI200 += p.Valor.ToString("N2").Replace(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator, string.Empty).Replace('.', ',') + "|"; //Tipo Lançamento N-Normal E-Encerramento regI200 += p.Tp_integracao.Trim().ToUpper().Equals("ZR") ? "E|" : "N|"; SpedContabil.AppendLine(regI200); Qtd_linhaI++; cont++; //Registro Filho I250 GerarRegistroI250(lLanctos.FindAll(v => v.ID_LoteCTB == p.ID_LoteCTB), SpedContabil, tEspera); }); if (cont > decimal.Zero) { RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "I200", Qtd_linha = cont }); } }
//Signatarios da escrituração private static void GerarRegistroJ930(TRegistro_Empresa rEmpresa, StringBuilder SpedContabil, ThreadEspera tEspera) { if (tEspera != null) { tEspera.Msg("Gerando registro J930..."); } decimal qtd_J930 = decimal.Zero; #region Contador string regJ930 = "|J930|"; //Nome Signatario regJ930 += rEmpresa.NM_contador.RemoverCaracteres() + "|"; //CPF Contador regJ930 += rEmpresa.Cpf_contador.SoNumero() + "|"; //Qualificação regJ930 += "CONTADOR|"; //Codigo qualificação regJ930 += "900|"; //CRC Contador regJ930 += rEmpresa.Nr_CRC.Trim() + "|"; //Email Contador regJ930 += rEmpresa.Email_contador.Trim() + "|"; //Fone Contador regJ930 += rEmpresa.Fone_contador.Trim() + "|"; //UF CRC Contador regJ930 += rEmpresa.UF_CRC.Trim() + "|"; //Sequencial CRC Contador regJ930 += rEmpresa.SequencialCRC.Trim() + "|"; //Validade CRC regJ930 += (rEmpresa.Dt_validadeCRC.HasValue ? rEmpresa.Dt_validadeCRC.Value.ToString("ddMMyyyy") : string.Empty) + "|"; //Administrador regJ930 += "N|"; SpedContabil.AppendLine(regJ930); Qtd_linhaJ++; qtd_J930++; #endregion #region Administrador CamadaDados.Diversos.TList_SociosEmpresa lSocio = new CamadaDados.Diversos.TCD_SociosEmpresa().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rEmpresa.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "isnull(a.st_responsavel, 'N')", vOperador = "=", vVL_Busca = "'S'" } }, 1, string.Empty); if (lSocio.Count > 0) { regJ930 = "|J930|"; //Nome Signatario regJ930 += lSocio[0].Nm_clifor.RemoverCaracteres() + "|"; //CPF Contador regJ930 += lSocio[0].Cpf_clifor.SoNumero() + "|"; //Qualificação regJ930 += "ADMINISTRADOR|"; //Codigo qualificação regJ930 += "205|"; //CRC Contador regJ930 += "|"; //Email Contador regJ930 += "|"; //Fone Contador regJ930 += "|"; //UF CRC Contador regJ930 += "|"; //Sequencial CRC Contador regJ930 += "|"; //Validade CRC regJ930 += "|"; //Administrador regJ930 += "S|"; SpedContabil.AppendLine(regJ930); Qtd_linhaJ++; qtd_J930++; } #endregion RegArq.Adiciona(new TRegistro_RegArquivo() { Registro = "J930", Qtd_linha = qtd_J930 }); }