private void GerarBlocoC() { #region C400 IList<IRegistro01> registros01 = new Registro02().Find<IRegistro01>(new Where { {"DataCriacao Between @p1 AND @p2", new[]{ new Parameter { ParameterName = "@p1", GenericDbType = GenericDbType.DateTime, Value = ACBrSPED.DT_INI }, new Parameter { ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = ACBrSPED.DT_FIN } } } }); //------------------------------------------------------------------------- // Unir todos os registros 02 em uma única variável //------------------------------------------------------------------------- var registros02 = from x in registros01 from r in x.RegistrosR2 select new { Impressora = x.Impressora, CRZ = r.CRZ, COO = r.COO, CRO = r.CRO, DataMovimento = r.DataMovimento, DataHoraEmissao = r.DataHoraEmissao, VendaBrutaDiaria = r.VendaBrutaDiaria, Registros03 = r.Registros03, MeiosPagamentos = r.MeiosPagamentos, GrandeTotal = r.GrandeTotal, TotalPIS = r.TotalPIS, TotalCofins = r.TotalCofins, ParametroECFISSQN = r.ParametroECFISSQN }; var c400s = (from c in Cupons group c by c.Impressora.GUID into g select new { impressora = g.First().Impressora, data = Unimake.Convert.ToDateTime(g.First().DataHoraMovimento.ToShortDateString()), codigo = "2D", modelo = g.First().Impressora.ModeloDocumentoFiscal, serie = g.First().Impressora.Serie, caixa = g.First().Impressora.PDV.NumeroCaixa }); foreach(var c400 in c400s) { ACBrFramework.Sped.RegistroC400 regC400 = new ACBrFramework.Sped.RegistroC400 { COD_MOD = c400.codigo, ECF_MOD = c400.modelo, ECF_FAB = c400.serie, ECF_CX = c400.caixa }; ACBrSPED.Bloco_C.RegistroC001.RegistroC400.Add(regC400); #region 405 e filhos #region 405 var c405s = (from c in registros02 where c.Impressora.GUID == c400.impressora.GUID && c.DataMovimento.IsEqual(c400.data) select new { data = c.DataMovimento, cro = c.CRO, crz = c.CRZ, coo = c.COO, vendaBruta = (decimal)c.VendaBrutaDiaria, gt = (decimal)c.GrandeTotal }); foreach(var c405 in c405s) { RegistroC405 regC405 = new RegistroC405 { DT_DOC = c405.data, CRO = c405.cro, CRZ = c405.crz, NUM_COO_FIN = c405.coo, GT_FIN = c405.gt, VL_BRT = c405.vendaBruta }; regC400.RegistroC405.Add(regC405); #region 410 var c410s = (from c in Cupons where c.Impressora.GUID == c400.impressora.GUID && c.DataHoraMovimento.IsEqual(c400.data) && ( c.Itens.Sum(j => j.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.COFINS).Sum(k => k.VlrTributo)) > 0 || c.Itens.Sum(j => j.Tributos.Where(k=> k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.PIS).Sum(k=>k.VlrTributo)) > 0 ) from i in c.Itens select new { pis = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.PIS).Sum(k => k.VlrTributo), cofins = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.COFINS).Sum(k => k.VlrTributo) }); foreach(var c410 in c410s) { ACBrFramework.Sped.RegistroC410 regC410 = new ACBrFramework.Sped.RegistroC410(); regC410.VL_COFINS = c410.cofins; regC410.VL_PIS = c410.pis; regC405.RegistroC410.Add(regC410); } #endregion #endregion #region 420 regC405.RegistroC420.AddRange((from r3 in ( from r in registros02 where r.Impressora.GUID == c400.impressora.GUID && r.DataMovimento.IsEqual(c400.data) from r3 in r.Registros03 select r3) select new RegistroC420 { COD_TOT_PAR = r3.TotalizadorParcial, VLR_ACUM_TOT = (decimal)r3.ValorAcumulado }).ToArray<RegistroC420>()); #endregion #region 460 var c460s = (from c in Cupons where c.Impressora.GUID == c400.impressora.GUID && c.DataHoraMovimento.IsEqual(c400.data) select new { COD_MOD = "2D", COD_SIT = c.Situacao.ToSPED(), NUM_DOC = c.COO.ToString(), DT_DOC = c.DataHoraMovimento, VL_DOC = (decimal)c.ValorTotalLiquido, VL_PIS = (decimal)c.Itens.Sum(p => p.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.PIS).Sum(k=>k.VlrTributo)), VL_COFINS = (decimal)c.Itens.Sum(p => p.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.COFINS).Sum(k => k.VlrTributo)), CPF_CNPJ = Utilities.OnlyNumbers(c.DadoPessoa.Cliente.GetCPFCNPJ(), "-.", false).ToString(), NOM_ADQ = c.DadoPessoa.Cliente.RazaoSocial, itens = c.Itens }); foreach(var c460 in c460s) { RegistroC460 regC460 = new RegistroC460(); regC460.COD_MOD = "2D"; regC460.COD_SIT = c460.COD_SIT; regC460.NUM_DOC = c460.NUM_DOC; regC460.DT_DOC = c460.DT_DOC; regC460.VL_DOC = c460.VL_DOC; regC460.VL_PIS = c460.VL_PIS; regC460.VL_COFINS = c460.VL_COFINS; regC460.CPF_CNPJ = c460.CPF_CNPJ; regC460.NOM_ADQ = c460.NOM_ADQ; regC405.RegistroC460.Add(regC460); #region 470 //REGISTRO C470: ITENS DO DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02 e 2D). foreach(var c460Itens in c460.itens) { RegistroC470 regc470 = new RegistroC470(); regc470.COD_ITEM = c460Itens.ItemMovimentado.EGUID; regc470.QTD = (decimal)c460Itens.Quantidade; regc470.QTD_CANC = (decimal)c460Itens.Registro05.QuantidadeCancelada; regc470.UNID = c460Itens.Unidade.Descricao; regc470.VL_ITEM = (decimal)c460Itens.ValorTotalLiquido; regc470.CST_ICMS = c460Itens.CSTCSOSNCodigos.Where(k=>k.CSTCSOSNCod.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS).FirstOrDefault().CSTCSOSNCod.Codigo; regc470.CFOP = c460Itens.CFOP.CFOP; regc470.ALIQ_ICMS = (decimal)c460Itens.Tributos.Where(k=>k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS).FirstOrDefault().Aliquota.Valor; regc470.VL_PIS = (decimal)c460Itens.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.PIS).FirstOrDefault().Aliquota.Valor; regc470.VL_COFINS = (decimal)c460Itens.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.COFINS).FirstOrDefault().Aliquota.Valor; regC460.RegistroC470.Add(regc470); } #endregion #endregion } #region 490 regC405.RegistroC490.AddRange(( from x in (from c in Cupons from i in c.Itens select i) group x by new { cst = x.CSTCSOSNCodigos.Where(k=>k.CSTCSOSNCod.TipoTributo== TipoTributo.ICMS).FirstOrDefault().CSTCSOSNCod.Codigo, cfop = x.CFOP.CFOP, aliquota = x.Tributos.Where(k=>k.Aliquota.Parent.TipoTributo== TipoTributo.ICMS).FirstOrDefault().Aliquota.Valor } into g select new RegistroC490 { CST_ICMS = g.Key.cst, CFOP = g.Key.cfop, ALIQ_ICMS = (decimal)g.Key.aliquota, VL_OPR = (decimal)g.Sum(s => s.ValorTotalLiquido), VL_BC_ICMS = (decimal)g.Sum(s => s.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS).Sum(k => k.VlrBaseCalculo)), VL_ICMS = (decimal)g.Sum(s => s.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.PIS).Sum(k => k.VlrTributo)) }).ToArray<RegistroC490>()); #endregion } #endregion } #endregion }
private void CriaBlocoC() { int INotas; int IItens; int NNotas; int BNotas; // Alimenta o componente com informações para gerar todos os registros do // Bloco C. btnB_C.Enabled = false; btnB_D.Enabled = true; NNotas = Convert.ToInt32(edNotas.Text); BNotas = Convert.ToInt32(edBufNotas.Text); ProgressBar1.Visible = cbConcomitante.Checked; ProgressBar1.Maximum = NNotas; ProgressBar1.Value = 0; var blocoC = ACBrSPEDFiscal1.Bloco_C; var registroC001 = blocoC.RegistroC001; registroC001.IND_MOV = IndicadorMovimento.ComDados; for (INotas = 1; INotas <= NNotas; INotas++) { var registroC100 = new RegistroC100(); registroC100.IND_OPER = TipoOperacao.EntradaAquisicao; registroC100.IND_EMIT = Emitente.EmissaoPropria; registroC100.COD_PART = "001"; registroC100.COD_MOD = ""; registroC100.COD_SIT = SituacaoDocto.Regular; registroC100.SER = ""; registroC100.NUM_DOC = string.Format("11{0:000000}", INotas); registroC100.CHV_NFE = ""; registroC100.DT_DOC = blocoC.DT_INI.AddDays(INotas); registroC100.DT_E_S = blocoC.DT_INI.AddDays(INotas); registroC100.VL_DOC = 0; registroC100.IND_PGTO = TipoPagamento.SemPagamento; registroC100.VL_DESC = 0; registroC100.VL_ABAT_NT = 0; registroC100.VL_MERC = 0; registroC100.IND_FRT = TipoFrete.SemCobrancaFrete; registroC100.VL_SEG = 0; registroC100.VL_OUT_DA = 0; registroC100.VL_BC_ICMS = 0; registroC100.VL_ICMS = 0; registroC100.VL_BC_ICMS_ST = 0; registroC100.VL_ICMS_ST = 0; registroC100.VL_IPI = 0; registroC100.VL_PIS = 0; registroC100.VL_COFINS = 0; registroC100.VL_PIS_ST = 0; registroC100.VL_COFINS_ST = 0; registroC001.RegistroC100.Add(registroC100); // Gera registros específicos para notas emitidas por terceiros if (registroC100.IND_EMIT == Emitente.Terceiros) { var registroC110 = new RegistroC110(); registroC110.COD_INF = "000001"; registroC110.TXT_COMPL = ""; registroC100.RegistroC110.Add(registroC110); } // Gera o registro de importação apenas para notas de entrada if (registroC100.IND_OPER == TipoOperacao.EntradaAquisicao) { var registroC120 = new RegistroC120(); registroC120.COD_DOC_IMP = DoctoImporta.SimplificadaImport; registroC120.NUM_DOC__IMP = "1024879531"; registroC120.PIS_IMP = 0.00M; registroC120.COFINS_IMP = 0.00M; registroC120.NUM_ACDRAW = ""; registroC100.RegistroC120.Add(registroC120); } // Gera registros específicos para notas emitidas por terceiros e de prestação if ((registroC100.IND_EMIT == Emitente.Terceiros) && (registroC100.IND_OPER == TipoOperacao.SaidaPrestacao)) { var registroC130 = new RegistroC130(); registroC130.VL_SERV_NT = 10.12M; registroC130.VL_BC_ISSQN = 10.12M; registroC130.VL_ISSQN = 10.12M; registroC130.VL_BC_IRRF = 10.12M; registroC130.VL_IRRF = 10.12M; registroC130.VL_BC_PREV = 10.12M; registroC130.VL_PREV = 10.12M; registroC100.RegistroC130.Add(registroC130); } // REGISTRO C170: ITENS DO DOCUMENTO (CÓDIGO 01, 1B, 04 e 55). for (IItens = 1; IItens <= 10; IItens++) { var registroC170 = new RegistroC170(); // Inicio Adicionar os Itens: registroC170.NUM_ITEM = string.Format("{0:000}", IItens); registroC170.COD_ITEM = string.Format("{0:000000}", registroC170.NUM_ITEM); registroC170.DESCR_COMPL = string.Format("11{0:000000} ITEM {1}", INotas, registroC170.COD_ITEM); registroC170.QTD = 1; registroC170.UNID = "UN"; registroC170.VL_ITEM = 0; registroC170.VL_DESC = 0; registroC170.IND_MOV = MovimentacaoFisica.Nao; registroC170.CST_ICMS = "001"; registroC170.CFOP = "1252"; registroC170.COD_NAT = "64"; registroC170.VL_BC_ICMS = 0; registroC170.ALIQ_ICMS = 0; registroC170.VL_ICMS = 0; registroC170.VL_BC_ICMS_ST = 0; registroC170.ALIQ_ST = 0; registroC170.VL_ICMS_ST = 0; registroC170.IND_APUR = ApuracaoIPI.Mensal; registroC170.CST_IPI = ipiEntradaIsenta; registroC170.COD_ENQ = ""; registroC170.VL_BC_IPI = 0; registroC170.ALIQ_IPI = 0; registroC170.VL_IPI = 0; registroC170.CST_PIS = pisOutrasOperacoes; registroC170.VL_BC_PIS = 0; registroC170.ALIQ_PIS_PERC = 0; registroC170.QUANT_BC_PIS = 0; registroC170.ALIQ_PIS_R = 0; registroC170.VL_PIS = 0; registroC170.CST_COFINS = cofinsOutrasOperacoes; registroC170.VL_BC_COFINS = 0; registroC170.ALIQ_COFINS_PERC = 0; registroC170.QUANT_BC_COFINS = 0; registroC170.ALIQ_COFINS_R = 0; registroC170.VL_COFINS = 0; registroC170.COD_CTA = "000"; registroC100.RegistroC170.Add(registroC170); } // REGISTRO C170: ITENS DO DOCUMENTO (CÓDIGO 01, 1B, 04 e 55). for (IItens = 1; IItens <= 10; IItens++) { var registroC190 = new RegistroC190(); registroC190.CST_ICMS = "040"; registroC190.CFOP = "1252"; registroC190.ALIQ_ICMS = 0; registroC190.VL_OPR = 0; registroC190.VL_BC_ICMS = 0; registroC190.VL_ICMS = 0; registroC190.VL_BC_ICMS_ST = 0; registroC190.VL_ICMS_ST = 0; registroC190.VL_RED_BC = 0; registroC190.VL_IPI = 0; registroC190.COD_OBS = "000"; registroC100.RegistroC190.Add(registroC190); } } var registroC400 = new RegistroC400(); registroC400.COD_MOD = "2D"; registroC400.ECF_MOD = "DARUMA FS600"; registroC400.ECF_FAB = "21098765432123456789"; registroC400.ECF_CX = "001"; registroC001.RegistroC400.Add(registroC400); var registroC405 = new RegistroC405(); registroC405.DT_DOC = blocoC.DT_FIN; registroC405.CRO = 1; registroC405.CRZ = 1; registroC405.NUM_COO_FIN = 1; registroC405.GT_FIN = 105.00M; registroC405.VL_BRT = 105.00M; registroC400.RegistroC405.Add(registroC405); var registroC410 = new RegistroC410(); registroC410.VL_PIS = 0.00M; registroC410.VL_COFINS = 0.00M; registroC405.RegistroC410.Add(registroC410); var registroC420 = new RegistroC420(); registroC420.COD_TOT_PAR = "T1700"; registroC420.VLR_ACUM_TOT = 100.00M; registroC420.NR_TOT = 1; registroC420.DESCR_NR_TOT = "TOTALIZADOR T1700"; registroC405.RegistroC420.Add(registroC420); //Gera este registro somente para empresas do pergil B de apresentação if (ACBrSPEDFiscal1.Bloco_0.Registro0000.IND_PERFIL == Perfil.PerfilB) { var registroC425 = new RegistroC425(); registroC425.COD_ITEM = "000001"; registroC425.QTD = 1; registroC425.UNID = "PC"; registroC425.VL_ITEM = 100.00M; registroC425.VL_PIS = 0.00M; registroC425.VL_COFINS = 0.00M; registroC420.RegistroC425.Add(registroC425); } if (ACBrSPEDFiscal1.Bloco_0.Registro0000.IND_PERFIL != Perfil.PerfilB) { var registroC460 = new RegistroC460(); registroC460.COD_MOD = "2D"; registroC460.COD_SIT = SituacaoDocto.Regular; registroC460.NUM_DOC = "000001"; registroC460.DT_DOC = Convert.ToDateTime("30/11/2011"); registroC460.VL_DOC = 100.00M; registroC460.VL_PIS = 0.00M; registroC460.VL_COFINS = 0.00M; registroC460.CPF_CNPJ = "33333333333"; registroC460.NOM_ADQ = "TESTE"; registroC405.RegistroC460.Add(registroC460); var registroC470 = new RegistroC470(); registroC470.COD_ITEM = "000001"; registroC470.QTD = 1; registroC470.QTD_CANC = 0; registroC470.UNID = "UN"; registroC470.VL_ITEM = 100.00m; registroC470.CST_ICMS = "000"; registroC470.CFOP = "5102"; registroC470.ALIQ_ICMS = 17.00m; registroC470.VL_PIS = 0.00m; registroC470.VL_COFINS = 0.00m; registroC460.RegistroC470.Add(registroC470); } var registroC490 = new RegistroC490(); registroC490.CST_ICMS = "000"; registroC490.CFOP = "5102"; registroC490.ALIQ_ICMS = 17.00M; registroC490.VL_OPR = 100.00M; registroC490.VL_BC_ICMS = 100.00M; registroC490.VL_ICMS = 17.00M; registroC490.COD_OBS = "000001"; registroC405.RegistroC490.Add(registroC490); //Só envia este registro se o contribuinte for da BA if (ACBrSPEDFiscal1.Bloco_0.Registro0000.UF == "BA") { var registroC495 = new RegistroC495(); registroC495.ALIQ_ICMS = 17.00M; registroC495.COD_ITEM = "000001"; registroC495.QTD = 1.00M; registroC495.QTD_CANC = 0.00M; registroC495.UNID = "UN"; registroC495.VL_ITEM = 100.00M; registroC495.VL_DESC = 0.00M; registroC495.VL_CANC = 0.00M; registroC495.VL_ACMO = 0.00M; registroC495.VL_BC_ICMS = 100.00M; registroC495.VL_ICMS = 17.00M; registroC495.VL_ISEN = 0.00M; registroC495.VL_ICMS_ST = 0.00M; } }