Ejemplo n.º 1
0
 public IList <ViewSpedNfeDetalheDTO> selectViewSpedNfeDetalhe(ViewSpedNfeDetalheDTO viewSpedNfeDetalhe)
 {
     try
     {
         IList <ViewSpedNfeDetalheDTO> resultado = null;
         using (ISession session = NHibernateHelper.getSessionFactory().OpenSession())
         {
             NHibernateDAL <ViewSpedNfeDetalheDTO> DAL = new NHibernateDAL <ViewSpedNfeDetalheDTO>(session);
             resultado = DAL.select(viewSpedNfeDetalhe);
         }
         return(resultado);
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message + (ex.InnerException != null ? " " + ex.InnerException.Message : ""));
     }
 }
        public void gerarArquivoSintegra(DateTime dataInicio, DateTime dataFim, int finalidadeArquivo, int naturezaInformacao, int codigoConvenio)
        {
            try
            {
                using (ServicoSintegraClient serv = new ServicoSintegraClient())
                {
                    Empresa = serv.selectEmpresaId(Empresa.Id);
                }

                Sintegra.Sintegra sintegra = new Sintegra.Sintegra(dataInicio, dataFim, 1);

                Reg10 registro10 = new Reg10();
                registro10.cnpj = Empresa.Cnpj;
                registro10.inscricaoestadual = Empresa.InscricaoEstadual;
                registro10.nomecontribuinte  = Empresa.RazaoSocial;
                registro10.municipio         = Empresa.endereco.cidade;
                registro10.uf = Empresa.endereco.uf;
                registro10.codigoFinalidadeArqMagnetico = finalidadeArquivo;
                registro10.codigoIdentificacaoNatOp     = naturezaInformacao;
                registro10.codigoIdentificacaoConvenio  = codigoConvenio;
                registro10.dataInicial = dataInicio;
                registro10.dataFinal   = dataFim;
                registro10.tipo        = 10;

                sintegra.reg10 = registro10;

                Reg11 registro11 = new Reg11();
                registro11.bairro      = Empresa.endereco.bairro;
                registro11.cep         = Empresa.endereco.cep;
                registro11.complemento = Empresa.endereco.complemento;
                registro11.logradouro  = Empresa.endereco.logradouro;
                registro11.numero      = int.Parse(Empresa.endereco.numero);
                registro11.nomeContato = Empresa.Contato;
                registro11.telefone    = Empresa.endereco.fone;
                registro11.tipo        = 11;

                sintegra.reg11 = registro11;

                List <Reg50> listaRegistro50 = new List <Reg50>();
                List <Reg54> listaRegistro54 = new List <Reg54>();
                List <Reg75> listaRegistro75 = new List <Reg75>();

                using (ServicoSintegraClient serv = new ServicoSintegraClient())
                {
                    List <NFeCabecalhoDTO> listaNFe = serv.selectNFeCabecalho(dataInicio, dataFim, new NFeCabecalhoDTO());

                    foreach (NFeCabecalhoDTO nfeCab in listaNFe)
                    {
                        Reg50 registro50 = new Reg50();
                        registro50.cnpj = Empresa.Cnpj;
                        registro50.inscricaoestadual      = Empresa.InscricaoEstadual;
                        registro50.dataEmissaoRecebimento = (DateTime)nfeCab.dataEmissao;
                        registro50.uf                   = Empresa.endereco.uf;
                        registro50.modelo               = nfeCab.codigoModelo;
                        registro50.numero               = int.Parse(nfeCab.numero);
                        registro50.serie                = nfeCab.serie;
                        registro50.cfop                 = "5929";
                        registro50.emitente             = "P";
                        registro50.valorTotal           = (decimal)nfeCab.valorTotal;
                        registro50.baseCalculoICMS      = (decimal)nfeCab.baseCalculoIcms;
                        registro50.valorICMS            = (decimal)nfeCab.valorIcms;
                        registro50.isentaOuNaoTributada = 1;
                        registro50.outras               = (decimal)nfeCab.valorDespesasAcessorias;
                        registro50.situacaoCancelamento = "N";
                        listaRegistro50.Add(registro50);

                        // REGISTRO TIPO 51 - TOTAL DE NOTA FISCAL QUANTO AO IPI
                        // REGISTRO TIPO 53 - SUBSTITUIÇÃO TRIBUTÁRIA
                        // Implementados a critério do Participante do T2Ti ERP

                        // REGISTRO TIPO 54 - PRODUTO
                        ViewSpedNfeDetalheDTO nfeDetalhe = new ViewSpedNfeDetalheDTO {
                            IdNfeCabecalho = nfeCab.id
                        };
                        List <ViewSpedNfeDetalheDTO> ListaNFeDetalhe = serv.selectViewSpedNfeDetalhe(nfeDetalhe);

                        foreach (ViewSpedNfeDetalheDTO detalhe in ListaNFeDetalhe)
                        {
                            Reg54 registro54 = new Reg54();
                            registro54.cnpj          = Empresa.Cnpj;
                            registro54.modelo        = nfeCab.codigoModelo;
                            registro54.serie         = nfeCab.serie;
                            registro54.numero        = int.Parse(nfeCab.numero);
                            registro54.cfop          = detalhe.Cfop.ToString();
                            registro54.cst           = detalhe.CstIcms;
                            registro54.numeroItem    = detalhe.NumeroItem.ToString();
                            registro54.codigoProduto = detalhe.Gtin;
                            registro54.qtd           = detalhe.QuantidadeComercial;
                            registro54.valorProduto  = detalhe.ValorTotal;
                            registro54.valorDescontoDespAcessoria = detalhe.ValorDesconto;
                            registro54.baseCalcICMS   = detalhe.BaseCalculoIcms;
                            registro54.baseCalcIcmsST = detalhe.ValorBaseCalculoIcmsSt;
                            registro54.valorIPI       = detalhe.ValorIpi;
                            registro54.aliqICMS       = detalhe.AliquotaIcms;
                            listaRegistro54.Add(registro54);


                            // REGISTRO TIPO 75 - CÓDIGO DE PRODUTO OU SERVIÇO
                            Reg75 registro75 = new Reg75();
                            registro75.dataInicial   = dataInicio;
                            registro75.dataInicial   = dataFim;
                            registro75.codigoProduto = detalhe.Gtin;
                            registro75.descricao     = detalhe.NomeProduto;
                            registro75.unidadeMedidaComercializacao = detalhe.UnidadeComercial;
                            registro75.aliqIPI  = detalhe.AliquotaIpi;
                            registro75.aliqICMS = detalhe.AliquotaIcms;
                            listaRegistro75.Add(registro75);
                        }
                        sintegra.regs54 = listaRegistro54;
                        sintegra.regs75 = listaRegistro75;
                    }
                }
                sintegra.regs50 = listaRegistro50;

                // REGISTRO TIPO 55 - GUIA NACIONAL DE RECOLHIMENTO DE TRIBUTOS ESTADUAIS
                // REGISTRO TIPO 56 - OPERAÇÕES COM VEÍCULOS AUTOMOTORES NOVOS
                // REGISTRO TIPO 57 - NÚMERO DE LOTE DE FABRICAÇÃO DE PRODUTO
                // Registro Tipo 60 - Mestre (60M): Identificador do equipamento
                // Registro Tipo 60 - Analítico (60A): Identificador de cada Situação Tributária no final do dia de cada equipamento emissor de cupom fiscal
                // Registro Tipo 60 - Resumo Diário (60D): Registro de mercadoria/produto ou serviço constante em documento fiscal emitido por Terminal Ponto de Venda (PDV) ou equipamento Emissor de Cupom Fiscal (ECF)
                // Registro Tipo 60 - Resumo Mensal (60R): Registro de mercadoria/produto ou serviço processado em equipamento Emissor de Cupom Fiscal
                // Registro Tipo 60 - Item (60I): Item do documento fiscal emitido por Terminal Ponto de Venda (PDV) ou equipamento Emissor de Cupom Fiscal (ECF)
                // Registro Tipo 61 - Resumo Mensal por Item (61R): Registro de mercadoria/produto ou serviço comercializados através de Nota Fiscal de Produtor ou Nota Fiscal de Venda a Consumidor não emitida por ECF
                // Implementados a critério do Participante do T2Ti ERP

                Reg90 registro90 = new Reg90();
                registro90.tipo = 90;
                registro90.cnpj = Empresa.Cnpj;
                registro90.inscricaoEstadual     = Empresa.InscricaoEstadual;
                registro90.numeroRegistrosTipo90 = "1";
                registro90.tipoTotalizado        = 50;
                registro90.totalRegistos         = listaRegistro50.Count + listaRegistro54.Count + listaRegistro75.Count;
                registro90.totalGeralRegistros   = listaRegistro50.Count + listaRegistro54.Count + listaRegistro75.Count + 3;

                sintegra.regs90 = new List <Reg90> {
                    registro90
                };

                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Filter           = "Arquivos SINTEGRA (*.txt) | *.txt";
                dialog.Title            = "Selecione o arquivo";
                dialog.InitialDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

                if (dialog.ShowDialog() == true)
                {
                    sintegra.gerarArquivoSintegra(dialog.FileName);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }