public override void Gravar() { SintegraReg60A t = new SintegraReg60A(); t.DataEmissao = new Random().DateTime(); t.NumeroSerie = "123"; t.SituacaoTributaria = SituacaoTributaria.ISSQN; GUID = t.Save(); }
/// <summary> /// Cria o registro 60A /// </summary> private void CriaRegistro60A() { ISintegraReg60A reg60A = null; #region Registro 60A #region 60A ICMS foreach (ACBrFramework.ECF.Aliquota aliquota in DadosReducaoZ.ICMS) { if (aliquota.Total > 0) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = aliquota.ValorAliquota.ToString("N2"); reg60A.ValorTotalParcial = (double)aliquota.Total; reg60A.Save(); } } if (DadosReducaoZ.IsentoICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.Isento; reg60A.ValorTotalParcial = (double)DadosReducaoZ.IsentoICMS; reg60A.Save(); } if (DadosReducaoZ.NaoTributadoICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.NaoTributado; reg60A.ValorTotalParcial = (double)DadosReducaoZ.NaoTributadoICMS; reg60A.Save(); } if (DadosReducaoZ.SubstituicaoTributariaICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.SubstituicaoTributaria; reg60A.ValorTotalParcial = (double)DadosReducaoZ.SubstituicaoTributariaICMS; reg60A.Save(); } if (DadosReducaoZ.CancelamentoICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.Cancelamento; reg60A.ValorTotalParcial = (double)DadosReducaoZ.CancelamentoICMS; reg60A.Save(); } if (DadosReducaoZ.AcrescimoICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.Acrescimo; reg60A.ValorTotalParcial = (double)DadosReducaoZ.AcrescimoICMS; reg60A.Save(); } if (DadosReducaoZ.DescontoICMS > 0M) { reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.Desconto; reg60A.ValorTotalParcial = (double)DadosReducaoZ.DescontoICMS; reg60A.Save(); } #endregion #region 60A ISSQN reg60A = new SintegraReg60A(); reg60A.DataEmissao = DadosReducaoZ.DataDoMovimento; reg60A.NumeroSerie = NumeroSerie; reg60A.SituacaoTributaria = SituacaoTributaria.ISSQN; foreach (ACBrFramework.ECF.Aliquota aliquota in DadosReducaoZ.ISSQN) if (aliquota.Total > 0) reg60A.ValorTotalParcial += (double)aliquota.Total; if (DadosReducaoZ.IsentoISSQN > 0M) reg60A.ValorTotalParcial += (double)DadosReducaoZ.IsentoISSQN; if (DadosReducaoZ.NaoTributadoISSQN > 0M) reg60A.ValorTotalParcial += (double)DadosReducaoZ.NaoTributadoISSQN; if (DadosReducaoZ.SubstituicaoTributariaISSQN > 0M) reg60A.ValorTotalParcial += (double)DadosReducaoZ.SubstituicaoTributariaISSQN; if (DadosReducaoZ.CancelamentoISSQN > 0M) reg60A.ValorTotalParcial -= (double)DadosReducaoZ.CancelamentoISSQN; if (DadosReducaoZ.AcrescimoISSQN > 0M) reg60A.ValorTotalParcial += (double)DadosReducaoZ.AcrescimoISSQN; if (DadosReducaoZ.DescontoISSQN > 0M) reg60A.ValorTotalParcial -= (double)DadosReducaoZ.DescontoISSQN; if (reg60A.ValorTotalParcial > 0) reg60A.Save(); #endregion #endregion }
/// <summary> /// Gera o arquivo magnético do sintegra /// </summary> public void GerarArquivoMagnetico() { Connection connection = null; try { connection = DbContext.CreateConnection(); #region Registro 10 Registro10.RazaoSocial = Settings.EmpresaAtual.RazaoSocial; Registro10.CNPJ = Unimake.Utilities.OnlyNumbers(Settings.EmpresaAtual.Juridica.CNPJ, "/-.").ToString(); Registro10.Inscricao = Settings.EmpresaAtual.Juridica.IE; Registro10.Cidade = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Cidade.Nome; Registro10.Estado = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF; Registro10.Telefone = Settings.EmpresaAtual.CanaisComunicacao.Where(w => w.TipoCanal == Enuns.Cadastro.Pessoa.TipoCanal.Telefone).FirstOrDefault().IdentificadorCanal; Registro10.CodigoConvenio = Unimake.Convert.ToInt(Enuns.Arquivo.Sintegra.CodigoEstruturaArquivo.ICMS_76_03); Registro10.NaturezaInformacoes = Unimake.Convert.ToInt(Enuns.Arquivo.Sintegra.CodigoIdentificacaoNatureza.Totalidade); #endregion #region Registro 11 Registro11.Endereco = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Endereco; Registro11.Numero = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Numero.ToString(); Registro11.Complemento = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Complemento; Registro11.Bairro = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Bairro.Descricao; Registro11.Cep = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.CEP; Registro11.Telefone = Settings.EmpresaAtual.CanaisComunicacao.Where(w => w.TipoCanal == Enuns.Cadastro.Pessoa.TipoCanal.Telefone).FirstOrDefault().IdentificadorCanal; Registro11.Responsavel = "Responsavel pela empresa"; #endregion #region Registro 50 IList<IMovimento> vendas = new Data.Faturamento.Lancamento.Movimento.NFe.NFe().Find<IMovimento>( new Where { { "fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2" }, { "fat_Lan.Tipo = @tipo" } }, new Parameter[] { new Parameter {ParameterName = "@p1", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter {ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal }, new Parameter { ParameterName = "@tipo", GenericDbType = GenericDbType.Integer, Value = (int)Tipo.NotaFiscalEletronica } }); foreach (IMovimento venda in vendas) { string CPFCNPJ = string.Empty; string IE = string.Empty; if (venda.DadoPessoa.Cliente.FisicaJuridica == Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica) { CPFCNPJ = Unimake.Utilities.OnlyNumbers(venda.DadoPessoa.Cliente.Fisica.CPF, ".-").ToString(); IE = "ISENTO"; } else { CPFCNPJ = Unimake.Utilities.OnlyNumbers(venda.DadoPessoa.Cliente.Juridica.CNPJ, ".-/").ToString(); IE = venda.DadoPessoa.Cliente.Juridica.IE == null ? "ISENTO" : venda.DadoPessoa.Cliente.Juridica.IE.ToString(); } Registro50.Add(new ACBrFramework.Sintegra.SintegraRegistro50() { Aliquota = Unimake.Convert.ToDecimal(venda.Itens.FirstOrDefault().Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor), BasedeCalculo = Unimake.Convert.ToDecimal(venda.Itens.FirstOrDefault().Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo), Cfop = venda.Itens.FirstOrDefault().CFOP.CFOP, DataDocumento = venda.DataEmissao, EmissorDocumento = venda.Emitente, Icms = Unimake.Convert.ToDecimal(venda.ValorICMS), Inscricao = IE, Isentas = Unimake.Convert.ToSByte(venda.ValorIsentaNaoTributado), Modelo = venda.Modelo, Numero = venda.EGUID.ToString().Substring(3, 6), Outras = Unimake.Convert.ToDecimal(venda.ValorOutra), Serie = venda.Serie.Serie, Situacao = venda.Situacao, UF = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF, ValorContabil = Unimake.Convert.ToDecimal(venda.ValorTotalLiquido), CPFCNPJ = CPFCNPJ }); if (venda.BaseCalculoICMSST > 0) { Registro53.Add(new ACBrFramework.Sintegra.SintegraRegistro53 { BaseST = (decimal)venda.BaseCalculoICMSST, Cfop = venda.Itens.FirstOrDefault().CFOP.CFOP, CodigoAntecipacao = ((int)venda.CodigoAntecipacao).ToString(), CPFCNPJ = CPFCNPJ, DataDocumento = venda.DataEmissao, Despesas = (decimal)venda.ValorDespesasAcessorias, Emitente = venda.Emitente, Estado = venda.Empresa.Enderecos.FirstOrDefault().Endereco.Estado.UF, IcmsRetido = (decimal)venda.ValorICMSRetido, Inscricao = IE, Modelo = venda.Modelo, Numero = venda.EGUID.ToString().Substring(3, 6), Serie = venda.Serie.Serie, Situacao = venda.Situacao }); } foreach (Model.Faturamento.Lancamento.Movimento.Item.NFe.IItem item in venda.Itens) { Registro54.Add(new ACBrFramework.Sintegra.SintegraRegistro54() { Aliquota = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor), BasedeCalculo = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo), BaseST = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMSST || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Count() == 0 ? 0 : item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMSST || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo), CFOP = venda.Itens.FirstOrDefault().CFOP.CFOP, Codigo = item.ItemMovimentado.EGUID, CPFCNPJ = CPFCNPJ, CST = item.CSTCSOSNCodigos.Where(k => k.CSTCSOSNCod.TipoTributo == TipoTributo.ICMS || k.CSTCSOSNCod.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().CSTCSOSNCod.Codigo, Descricao = item.ItemMovimentado.Descricao, Modelo = venda.Modelo, Numero = venda.EGUID.ToString().Substring(3, 6), NumeroItem = item.Ordem, Quantidade = Unimake.Convert.ToDecimal(item.Quantidade), Serie = venda.Serie.Serie, Valor = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrTributo)), ValorDescontoDespesa = Unimake.Convert.ToDecimal(item.ValorDescontoAcrescimo), ValorIpi = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.IPI || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrTributo)) }); } } #endregion #region Registros 60 #region 60M IList<ISintegraReg60M> regs60m = new SintegraReg60M().Find<ISintegraReg60M>( new Where { { "DataEmissao BETWEEN @dataInicial AND @dataFinal", new [] { new Parameter{ ParameterName = "@dataInicial", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter { ParameterName = "@dataFinal", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal } } } }); foreach (ISintegraReg60M reg60 in regs60m) { Registro60M.Add(new ACBrFramework.Sintegra.SintegraRegistro60M() { Emissao = reg60.DataEmissao, NumSerie = reg60.NumeroSerie, NumOrdem = reg60.NumeroOrdem, ModeloDoc = reg60.ModeloDocumento, CooInicial = reg60.COOInicial, CooFinal = reg60.COOFinal, CRZ = reg60.CRZ, CRO = reg60.CRO, VendaBruta = (decimal)reg60.ValorTotalBruto, ValorGT = (decimal)reg60.ValorTotalGeral }); } #endregion #region 60A IList<ISintegraReg60A> regs60a = new SintegraReg60A().Find<ISintegraReg60A>( new Where { { "arq_SintegraReg60A.DataEmissao BETWEEN @dataInicial AND @dataFinal", new [] { new Parameter { ParameterName = "@dataInicial", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter { ParameterName = "@dataFinal", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal } } } }); foreach (ISintegraReg60A reg60a in regs60a) { string aliquota = reg60a.SituacaoTributaria; if (aliquota.IsNumeric()) { aliquota = reg60a.SituacaoTributaria; aliquota = aliquota.Split(',').FirstOrDefault(); aliquota = aliquota.Replace(",", "").PadLeft(4, '0'); } Registro60A.Add(new ACBrFramework.Sintegra.SintegraRegistro60A() { Aliquota = aliquota, Emissao = reg60a.DataEmissao, NumSerie = reg60a.NumeroSerie, Valor = Unimake.Convert.ToDecimal(reg60a.ValorTotalParcial) }); } #endregion #region 60D IList<ISintegraReg60D> regs60d = new SintegraReg60D().Find<ISintegraReg60D>( new Where { { "arq_SintegraReg60D.DataEmissao BETWEEN @dataInicial AND @dataFinal", new [] { new Parameter { ParameterName = "@dataInicial", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter { ParameterName = "@dataFinal", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal } } } }); foreach (ISintegraReg60D reg60d in regs60d) { Registro60D.Add(new ACBrFramework.Sintegra.SintegraRegistro60D() { BaseDeCalculo = Unimake.Convert.ToDecimal(reg60d.ValorBaseCalculoICMS), Codigo = reg60d.CodigoProduto, Emissao = reg60d.DataEmissao, NumSerie = reg60d.NumeroSerie, Quantidade = Unimake.Convert.ToDecimal(reg60d.Quantidade), StAliquota = reg60d.SituacaoTributaria, Valor = Unimake.Convert.ToDecimal(reg60d.ValorBruto), ValorIcms = Unimake.Convert.ToDecimal(reg60d.ValorICMS) }); } #endregion #region 60R IList<IVendaCF> vendasCF = new Data.Faturamento.Lancamento.Movimento.VendaCF.VendaCF().Find<IVendaCF>( new Where { { "date(fat_LanMov.DataHoraMovimento) BETWEEN date(@p1) AND date(@p2)" }, { "fat_Lan.Status = @status" } }, new Parameter[] { new Parameter { ParameterName = "@p1", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter { ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal }, new Parameter { ParameterName = "@status", GenericDbType = GenericDbType.Integer, Value = (int)Status.ImpressoCupom } }); foreach (var r in (from x in (from cf in vendasCF from it in cf.Itens.Cast<Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem>() select new { Aliquota = it.SituacaoTributaria, BaseDeCalculo = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrBaseCalculo), Codigo = it.ItemMovimentado.EGUID.ToString(), MesAno = cf.DataEmissao.ToString("MMyyyy"), Qtd = (decimal)it.Quantidade, Valor = (decimal)it.ValorTotalLiquido }) group x by new { x.MesAno, x.Codigo } into g select new { Aliquota = g.FirstOrDefault().Aliquota, BaseDeCalculo = g.Sum(x => x.BaseDeCalculo), Codigo = g.Key.Codigo, MesAno = g.Key.MesAno, Qtd = g.Sum(x => x.Qtd), Valor = g.Sum(x => x.Valor) }).OrderBy(o => o.Codigo)) { string aliquota = r.Aliquota; aliquota = aliquota.Replace(",", "").PadLeft(4, '0'); Registro60R.Add(new ACBrFramework.Sintegra.SintegraRegistro60R { Aliquota = aliquota, BaseDeCalculo = r.BaseDeCalculo, Codigo = r.Codigo, MesAno = r.MesAno, Qtd = r.Qtd, Valor = r.Valor }); } #endregion #region 60I if (Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF.Sigla != UF.Parana) { foreach (var r in (from x in (from cf in vendasCF from it in cf.Itens.Cast<Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem>() select new { BaseDeCalculo = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL) .Sum(k => k.VlrBaseCalculo), Codigo = it.ItemMovimentado.EGUID, Cupom = cf.COO.ToString(), Emissao = cf.DataEmissao, Ordem = it.Ordem, ModeloDoc = cf.Modelo, NumSerie = cf.NumeroSerieECF, Quantidade = (decimal)it.Quantidade, StAliquota = it.SituacaoTributaria, Valor = (decimal)it.ValorUnitarioBruto, ValorIcms = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL) .Sum(k => k.VlrTributo) }) group x by new { x.Emissao, x.Cupom, x.Codigo } into g select new { BaseDeCalculo = g.Sum(x => x.BaseDeCalculo), Codigo = g.Key.Codigo, Cupom = g.Key.Cupom, Emissao = g.Key.Emissao, Ordem = g.First().Ordem, ModeloDoc = g.First().ModeloDoc, NumSerie = g.First().NumSerie, Quantidade = g.Sum(x => x.Quantidade), StAliquota = g.First().StAliquota, Valor = g.Sum(x => x.Valor), ValorIcms = g.Sum(x => x.ValorIcms) })) { Registro60I.Add(new ACBrFramework.Sintegra.SintegraRegistro60I() { BaseDeCalculo = r.BaseDeCalculo, Codigo = r.Codigo, Cupom = r.Cupom, Emissao = r.Emissao, Item = r.Ordem, ModeloDoc = r.ModeloDoc, NumSerie = r.NumSerie, Quantidade = r.Quantidade, StAliquota = r.StAliquota, Valor = r.Valor, ValorIcms = r.ValorIcms, }); } } #endregion #endregion #region Registro 61 IList<IMovimento> vendasManuais = new Data.Faturamento.Lancamento.Movimento.NFManual.NFManual().Find<IMovimento>( new Where { { "fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2" }, { "fat_Lan.Tipo = @tipo" } }, new Parameter[] { new Parameter {ParameterName = "@p1", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter {ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal }, new Parameter {ParameterName = "@tipo", GenericDbType = GenericDbType.Integer, Value = (int)Tipo.NotaFiscalManual } }); foreach (var v in (from m in vendasManuais group m by m.DataEmissao into g select new { Emissao = g.Key, Modelo = g.First().Modelo, Serie = g.First().Serie, SubSerie = g.First().Subserie, NumOrdemInicial = Unimake.Convert.ToInt(g.Min(m => m.EGUID.ToString().Substring(0, 6))), NumOrdemFinal = Unimake.Convert.ToInt(g.Max(m => m.EGUID.ToString().Substring(0, 6))), Valor = g.Sum(m => (decimal)m.ValorTotalBruto), BaseDeCalculo = g.Sum(m => (decimal)m.ValorBaseCalculo), ValorIcms = g.Sum(m => (decimal)m.ValorICMS), Isentas = g.Sum(m => (decimal)m.ValorIsentaNaoTributado), Outras = g.Sum(m => (decimal)m.ValorOutra), Aliquota = (decimal)g.First().AliquotaICMS })) { Registro61.Add(new ACBrFramework.Sintegra.SintegraRegistro61() { Emissao = v.Emissao, Modelo = v.Modelo, Serie = v.Serie.Serie, SubSerie = v.SubSerie, NumOrdemInicial = v.NumOrdemInicial, NumOrdemFinal = v.NumOrdemFinal, Valor = v.Valor, BaseDeCalculo = v.BaseDeCalculo, ValorIcms = v.ValorIcms, Isentas = v.Isentas, Outras = v.Outras, Aliquota = v.Aliquota }); } foreach (var itemManual in (from x in (from m in vendasManuais from i in m.Itens select new { MesAno = m.DataEmissao.ToString("MMyyyy"), Aliquota = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor, BaseDeCalculo = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS || k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrBaseCalculo), Codigo = i.ItemMovimentado.EGUID, Qtd = (decimal)i.Quantidade, Valor = (decimal)i.ValorTotalBruto }) group x by new { x.MesAno, x.Codigo } into g select new { Aliquota = g.First().Aliquota, BaseDeCalculo = (decimal)g.Sum(x => x.BaseDeCalculo), Codigo = g.Key.Codigo, MesAno = g.Key.MesAno, Qtd = (decimal)g.Sum(x => x.Qtd), Valor = (decimal)g.Sum(x => x.Valor) })) { Registro61R.Add(new ACBrFramework.Sintegra.SintegraRegistro61R() { Aliquota = itemManual.Aliquota, BaseDeCalculo = itemManual.Valor, Codigo = itemManual.Codigo, MesAno = itemManual.MesAno, Qtd = itemManual.Qtd, Valor = itemManual.Valor }); } #endregion #region Registro 74 if (GerarRegistro74) { IList<ISintegraReg74> regs74 = new SintegraReg74().Find<ISintegraReg74>(); foreach (ISintegraReg74 reg74 in regs74) { Registro74.Add(new ACBrFramework.Sintegra.SintegraRegistro74() { CNPJPossuidor = reg74.CNPJ, Codigo = reg74.CodigoProduto, CodigoPosse = reg74.CodigoPosse.ToString(), Data = reg74.Data, InscricaoPossuidor = reg74.InscrEstadual, Quantidade = Unimake.Convert.ToDecimal(reg74.Quantidade), UFPossuidor = reg74.UF, ValorProduto = Unimake.Convert.ToDecimal(reg74.Valor) }); } } #endregion #region Registro 75 DataReader dataReader = connection.ExecuteReader(@"SELECT cad_Item.Eguid AS Codigo, cad_NCM.NCM AS NCM, cad_Item.Descricao AS Descricao, cad_Unidade.Prefixo AS Prefixo, CASE WHEN cad_Tributo.TipoTributo = 0 THEN cad_TributoAliquota.Valor END AS AliquotaICMS, CASE WHEN cad_Tributo.TipoTributo = 2 THEN cad_TributoAliquota.Valor END AS AliquotaIPI, 0 AS RedBaseCalcICMS, 0 AS VlrBaseCalcSubTrib FROM fat_LanMovItem INNER JOIN cad_Item ON cad_Item.GUID = fat_LanMovItem.GUIDItem INNER JOIN cad_ItemProd ON cad_ItemProd.GUIDItem = cad_Item.GUID INNER JOIN cad_NCM ON cad_NCM.GUID = cad_ItemProd.GUIDNCM INNER JOIN cad_Unidade ON cad_Unidade.GUID = cad_ItemProd.GUIDUnidade INNER JOIN fat_LanMov ON fat_LanMov.GUIDLan = fat_LanMovItem.GUIDLanMov LEFT JOIN fat_LanMovItemTributo ON fat_LanMovItemTributo.GUIDLanMovItem = fat_LanMovItem.GUID LEFT JOIN cad_TributoAliquota ON cad_TributoAliquota.GUID = fat_LanMovItemTributo.GUIDAliquota LEFT JOIN cad_Tributo ON cad_Tributo.GUID = cad_TributoAliquota.GUID WHERE fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2", new[] { new Parameter { ParameterName= "@p1", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataInicial }, new Parameter { ParameterName= "@p2", GenericDbType = GenericDbType.DateTime, Value = Registro10.DataFinal } }); while (dataReader.Read()) { Registro75.Add(new ACBrFramework.Sintegra.SintegraRegistro75 { AliquotaICMS = dataReader.GetDecimal("AliquotaICMS"), AliquotaIpi = dataReader.GetDecimal("AliquotaIPI"), BaseST = dataReader.GetDecimal("VlrBaseCalcSubTrib"), Codigo = dataReader.GetString("Codigo"), DataFinal = Registro10.DataFinal, DataInicial = Registro10.DataInicial, Descricao = dataReader.GetString("Descricao"), NCM = dataReader.GetString("NCM"), Reducao = dataReader.GetDecimal("RedBaseCalcICMS"), Unidade = dataReader.GetString("Prefixo") }); } #endregion #region finalizar Ativo = true; VersaoValidador = ACBrFramework.Sintegra.VersaoValidador.V523; FileName = Path.Combine(Path.GetTempPath(), "ICMS.txt"); GeraArquivo(); #endregion } finally { connection.Close(); } }
public override void Popular() { SintegraReg60A t = new SintegraReg60A(GUID); DumpElement(t); }
public override void Editar() { SintegraReg60A t = new SintegraReg60A(GUID); t.Save(); }