Example #1
0
 public override void Gravar()
 {
     SintegraReg74 t = new SintegraReg74();
     t.Data = new Random().DateTime();
     t.CodigoProduto = "123232432";
     t.Quantidade = new Random().NextDouble(12, 50);
     t.Valor = new Random().NextDouble(12, 50);
     t.CodigoPosse = Enuns.Arquivo.Sintegra.CodigoPosse.EmPoder;
     t.CNPJ = "54337206000130";
     t.InscrEstadual = "12121";
     t.UF = UF.Alagoas;
     GUID = t.Save();
 }
Example #2
0
 public override void Popular()
 {
     SintegraReg74 t = new SintegraReg74(GUID);
     DumpElement(t);
 }
Example #3
0
 public override void Editar()
 {
     SintegraReg74 t = new SintegraReg74(GUID);
     t.Save();
 }
Example #4
0
        /// <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();
            }
        }