コード例 #1
0
        public IActionResult Buscar(decimal oidUsuarioContribuinte, string status)
        {
            try
            {
                if (string.IsNullOrEmpty(status) || status == "null")
                {
                    status = null;
                }

                var arquivosCSV = new ArquivoUploadProxy().BuscarPorOidUsuarioContribuinteStatus(oidUsuarioContribuinte, status)
                                  .Where(x => x.NOM_EXT_ARQUIVO.ToUpper().Replace(".", "") == "CSV")
                                  .ToList();

                return(Json(arquivosCSV));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #2
0
        public IActionResult BuscarArquivos(decimal oidContribuinte)
        {
            try
            {
                var R1000 = new ContribuinteEnvioProxy().BuscarPorOidContribuinte(oidContribuinte);
                var R1070 = new ArquivoUploadProxy().BuscarR1070PorOidContribuinteNaoEnviado(oidContribuinte);
                var R2098 = new R2098Proxy().BuscarPorOidContribuinte(oidContribuinte);
                var R2099 = new R2099Proxy().BuscarPorOidContribuinte(oidContribuinte);

                var R2010 = new ArquivoUploadProxy().BuscarR2010PorOidContribuinteNaoEnviado(oidContribuinte)
                            .Where(x => x.IND_SITUACAO_PROCESSAMENTO == DMN_SITUACAO_PROCESSAMENTO.PROCESSADO ||
                                   x.IND_SITUACAO_PROCESSAMENTO == DMN_SITUACAO_PROCESSAMENTO.ENVIADO ||
                                   x.IND_SITUACAO_PROCESSAMENTO == DMN_SITUACAO_PROCESSAMENTO.RETIFICADO)
                            .ToList();

                var listaArquivos = new List <ArquivoGerado>();

                // R-1000
                foreach (var item in R1000)
                {
                    listaArquivos.Add(new ArquivoGerado
                    {
                        Tipo             = "R-1000",
                        DataGeracao      = item.DTA_UPLOAD.Value,
                        Ambiente         = item.IND_TIPO_AMBIENTE == DMN_TIPO_AMBIENTE_EFD.PRODUCAO ? "Produção" : "Produção Restrita",
                        Status           = item.IND_STATUS == DMN_STATUS_EFD_UPLOAD.PROCESSADO ? "Processado" : "Gerado",
                        Usuario          = new UsuarioProxy().BuscarPorChave(item.OID_USUARIO_ENVIO).NOM_USUARIO,
                        OidArquivoUpload = item.OID_ARQUIVO_UPLOAD
                    });
                }

                // R-1070
                foreach (var item in R1070)
                {
                    listaArquivos.Add(new ArquivoGerado
                    {
                        Tipo             = "R-1070",
                        DataGeracao      = item.DTA_UPLOAD,
                        Ambiente         = item.IND_AMBIENTE_ENVIO == DMN_TIPO_AMBIENTE_EFD.PRODUCAO ? "Produção" : "Produção Restrita",
                        Status           = item.IND_STATUS == DMN_STATUS_EFD_UPLOAD.PROCESSADO ? "Processado" : "Gerado",
                        Usuario          = new UsuarioProxy().BuscarPorChave(item.OID_USUARIO_ENVIO).NOM_USUARIO,
                        OidArquivoUpload = item.OID_ARQUIVO_UPLOAD
                    });
                }

                // R-2010
                foreach (var item in R2010)
                {
                    listaArquivos.Add(new ArquivoGerado
                    {
                        Tipo             = "R-2010",
                        DataGeracao      = item.DTA_UPLOAD,
                        Ambiente         = item.IND_AMBIENTE_ENVIO == DMN_TIPO_AMBIENTE_EFD.PRODUCAO ? "Produção" : "Produção Restrita",
                        Status           = item.IND_STATUS == DMN_STATUS_EFD_UPLOAD.PROCESSADO ? "Processado" : "Gerado",
                        Usuario          = new UsuarioProxy().BuscarPorChave(item.OID_USUARIO_ENVIO).NOM_USUARIO,
                        OidArquivoUpload = item.OID_ARQUIVO_UPLOAD
                    });
                }

                // R-2098
                foreach (var item in R2098)
                {
                    listaArquivos.Add(new ArquivoGerado
                    {
                        Tipo             = "R-2098",
                        DataGeracao      = item.DTA_UPLOAD.Value,
                        Ambiente         = item.IND_AMBIENTE_ENVIO == DMN_TIPO_AMBIENTE_EFD.PRODUCAO ? "Produção" : "Produção Restrita",
                        Status           = item.IND_STATUS == DMN_STATUS_EFD_UPLOAD.PROCESSADO ? "Processado" : "Gerado",
                        Usuario          = new UsuarioProxy().BuscarPorChave(item.OID_USUARIO_ENVIO).NOM_USUARIO,
                        OidArquivoUpload = item.OID_ARQUIVO_UPLOAD
                    });
                }

                // R-2099
                foreach (var item in R2099)
                {
                    listaArquivos.Add(new ArquivoGerado
                    {
                        Tipo             = "R-2099",
                        DataGeracao      = item.DTA_UPLOAD.Value,
                        Ambiente         = item.IND_AMBIENTE_ENVIO == DMN_TIPO_AMBIENTE_EFD.PRODUCAO ? "Produção" : "Produção Restrita",
                        Status           = item.IND_STATUS == DMN_STATUS_EFD_UPLOAD.PROCESSADO ? "Processado" : "Gerado",
                        Usuario          = new UsuarioProxy().BuscarPorChave(item.OID_USUARIO_ENVIO).NOM_USUARIO,
                        OidArquivoUpload = item.OID_ARQUIVO_UPLOAD
                    });
                }

                listaArquivos = listaArquivos.OrderByDescending(x => x.DataGeracao).ToList();

                return(Json(listaArquivos));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #3
0
ファイル: GeradorXml.cs プロジェクト: mbponline/efd-reinf
        public void GerarR1000(decimal oidUsuario, decimal oidContribuinte, string tipoOperacao, string tipoAmbiente, string baseCaminhoArquivo)
        {
            // Busca contribuinte
            var contribuinte        = new ContribuinteProxy().BuscarPorChave(oidContribuinte);
            var usuarioContribuinte = new UsuarioContribuinteProxy().BuscarPorOidUsuarioOidContribuinte(oidUsuario, oidContribuinte);

            // Monta nome do arquivo
            var nomeArquivoZip     = "XML_R1000_" + Guid.NewGuid().ToString() + ".zip";
            var arquivoUploadProxy = new ArquivoUploadProxy();

            var oidArquivoUpload = arquivoUploadProxy.Inserir(new ArquivoUploadEntidade
            {
                DTA_UPLOAD               = DateTime.Now,
                IND_STATUS               = DMN_STATUS_EFD_UPLOAD.NAO_PROCESSADO,
                NOM_ARQUIVO_LOCAL        = "Upload/" + nomeArquivoZip,
                NOM_EXT_ARQUIVO          = ".zip",
                NOM_ARQUIVO_ORIGINAL     = nomeArquivoZip,
                NOM_DIRETORIO_LOCAL      = "Upload",
                OID_USUARIO_CONTRIBUINTE = usuarioContribuinte.OID_USUARIO_CONTRIBUINTE
            });

            // Cria novo ContribuinteEnvio
            var contribuinteEnvioProxy = new ContribuinteEnvioProxy();

            contribuinteEnvioProxy.Inserir(new ContribuinteEnvioEntidade
            {
                OID_CONTRIBUINTE   = oidContribuinte,
                OID_USUARIO_ENVIO  = oidUsuario,
                IND_TIPO_AMBIENTE  = tipoAmbiente,
                OID_ARQUIVO_UPLOAD = oidArquivoUpload
            });

            if (contribuinte.IND_TIPO_INSCRICAO == DMN_TIPO_INSCRICAO_EFD.PESSOA_FISICA)
            {
                if (!Validador.ValidarCPF(contribuinte.COD_CNPJ_CPF))
                {
                    throw new Exception("CPF inválido");
                }
            }
            else
            {
                if (!Validador.ValidarCNPJ(contribuinte.COD_CNPJ_CPF))
                {
                    throw new Exception("CNPJ inválido");
                }
            }

            var inscricao = contribuinte.COD_CNPJ_CPF.LimparMascara();

            // Monta XML
            var templateFile = Path.Combine(baseCaminhoArquivo, "../TemplatesXml", "R1000.liquid");
            var template     = Template.Parse(File.OpenText(templateFile).ReadToEnd());
            var xmlR1000     = template.Render(new
            {
                id = $"ID{contribuinte.IND_TIPO_INSCRICAO}{contribuinte.COD_CNPJ_CPF.Substring(0, 8).PadLeft(14, '0')}{DateTime.Now:yyyyMMddHHmmss}{oidArquivoUpload.ToString().PadLeft(5, '0')}",
                tipoAmbiente,
                abertura_tag_operacao = tipoOperacao == DMN_OPERACAO_REGISTRO.INCLUSAO ? "<inclusao>" : tipoOperacao == DMN_OPERACAO_REGISTRO.ALTERACAO ? "<alteracao>" : "<exclusao>",
                versao                  = Assembly.GetExecutingAssembly().GetName().Version.ToString(3),
                ind_tipo_inscricao      = contribuinte.IND_TIPO_INSCRICAO,
                cod_cnpj_cpf            = contribuinte.COD_CNPJ_CPF.Substring(0, 8),
                dta_inicio_validade     = contribuinte.DTA_INICIO_VALIDADE.ToString("yyyy-MM"),
                dta_fim_validade        = contribuinte.DTA_FIM_VALIDADE?.ToString("yyyy-MM"),
                ind_classif_tribut      = contribuinte.IND_CLASSIF_TRIBUT,
                ind_obrigada_ecd        = contribuinte.IND_OBRIGADA_ECD,
                ind_desoneracao_cprb    = contribuinte.IND_DESONERACAO_CPRB,
                ind_isencao_multa       = contribuinte.IND_ISENCAO_MULTA,
                ind_situacao_pj         = contribuinte.IND_SITUACAO_PJ,
                nom_contato             = contribuinte.NOM_CONTATO,
                cod_cpf_contato         = contribuinte.COD_CPF_CONTATO,
                cod_fone_fixo_contato   = contribuinte.COD_FONE_FIXO_CONTATO,
                txt_email_contato       = contribuinte.TXT_EMAIL_CONTATO,
                ind_efr                 = contribuinte.IND_EFR,
                cod_cnpj_efr            = contribuinte.COD_CNPJ_EFR,
                fechamento_tag_operacao = tipoOperacao == DMN_OPERACAO_REGISTRO.INCLUSAO ? "</inclusao>" : tipoOperacao == DMN_OPERACAO_REGISTRO.ALTERACAO ? "</alteracao>" : "</exclusao>"
            });

            var caminhoArquivo = GerarArquivo("R1000_", baseCaminhoArquivo, xmlR1000);

            CompactarArquivo(caminhoArquivo, baseCaminhoArquivo, nomeArquivoZip);
        }
コード例 #4
0
ファイル: GeradorXml.cs プロジェクト: mbponline/efd-reinf
        public void GerarR2010(decimal oidUsuario, decimal oidContribuinte, string tipoOperacao, string tipoAmbiente, DateTime dtaInicial, DateTime dtaFinal, string baseCaminhoArquivo)
        {
            var mesesEntreDatas = dtaInicial.MesesEntreDatas(dtaFinal, true);

            //Intervalo intervaloDeDatas = new Intervalo(dtaFinal, dtaInicial, new CalculoAnosMesesDiasAlgoritmo2());

            if (mesesEntreDatas > 1)
            {
                throw new Exception("Período inválido.");
            }

            // Busca Contribuinte
            var contribuinte        = new ContribuinteProxy().BuscarPorChave(oidContribuinte);
            var usuarioContribuinte = new UsuarioContribuinteProxy().BuscarPorOidUsuarioOidContribuinte(oidUsuario, oidContribuinte);

            // Monta nome do arquivo
            var nomeArquivoZip     = "XML_R2010_" + Guid.NewGuid().ToString() + ".zip";
            var arquivoUploadProxy = new ArquivoUploadProxy();

            var oidArquivoUpload = arquivoUploadProxy.Inserir(new ArquivoUploadEntidade
            {
                DTA_UPLOAD               = DateTime.Now,
                IND_STATUS               = DMN_STATUS_EFD_UPLOAD.NAO_PROCESSADO,
                NOM_ARQUIVO_LOCAL        = "Upload/" + nomeArquivoZip,
                NOM_EXT_ARQUIVO          = ".zip",
                NOM_ARQUIVO_ORIGINAL     = nomeArquivoZip,
                NOM_DIRETORIO_LOCAL      = "Upload",
                OID_USUARIO_CONTRIBUINTE = usuarioContribuinte.OID_USUARIO_CONTRIBUINTE
            });

            R2010Proxy proxy2010 = new R2010Proxy();
            IEnumerable <R2010Entidade> listRegistrosR2010;

            switch (tipoOperacao)
            {
            case DMN_EFD_RETIFICADORA.ORIGINAL:
                listRegistrosR2010 = proxy2010.BuscarPorOidContribuinteDtaInicioDtaFimIndSituacaoProcessamento(oidContribuinte, dtaInicial, dtaFinal, DMN_SITUACAO_PROCESSAMENTO.IMPORTADO);
                break;

            case DMN_EFD_RETIFICADORA.RETIFICADORA:
                listRegistrosR2010 = proxy2010.BuscarPorOidContribuinteMesEnvioAnoEnvio(oidContribuinte, dtaInicial.Month, dtaInicial.Year, DMN_SITUACAO_PROCESSAMENTO.IMPORTADO);
                break;

            default:
                throw new Exception("Tipo de operação inválido.");
            }

            if (listRegistrosR2010.Count() == 0)
            {
                throw new Exception("Não existem registros para geração de arquivo XML.");
            }

            var eventos = from x in listRegistrosR2010
                          group x by new { x.DTA_APURACAO.Month, x.DTA_APURACAO.Year, x.COD_CNPJ_PRESTADOR } into g
                select new
            {
                id = string.Format("ID{0}{1}{2:yyyyMMddHHmmss}{3}", contribuinte.IND_TIPO_INSCRICAO, contribuinte.COD_CNPJ_CPF.Substring(0, 8).PadRight(14, '0'), DateTime.Now, g.First().OID_R2010.ToString().PadLeft(5, '0')),
                ind_retificacao          = tipoOperacao,
                dta_apuracao             = string.Format("{0}-{1}", g.Key.Year, g.Key.Month.ToString().PadLeft(2, '0')),
                ind_ambiente_envio       = tipoAmbiente,
                versao                   = Assembly.GetExecutingAssembly().GetName().Version.ToString(3),
                ind_tipo_inscricao       = contribuinte.IND_TIPO_INSCRICAO,
                cod_cnpj_cpf             = contribuinte.COD_CNPJ_CPF.Substring(0, 8),
                cod_insc_estabelecimento = g.First().COD_INSC_ESTABELECIMENTO,
                cod_cnpj_cpf_obra        = g.First().COD_CNPJ_CPF_OBRA,
                ind_obra                 = g.First().IND_OBRA,
                cod_cnpj_prestador       = g.First().COD_CNPJ_PRESTADOR,
                val_total_bruto          = g.Sum(x => x.VAL_BRUTO_NF).ToString().Replace('.', ','),
                val_base_retencao        = g.Sum(x => x.VAL_BASE_RET_SERVICO).ToString().Replace('.', ','),
                val_total_retencao       = g.Sum(x => x.VAL_RETENCAO_SERVICO).ToString().Replace('.', ','),
                ind_cprb                 = g.First().IND_CPRB,
                notas_fiscais            = from y in listRegistrosR2010
                                           where y.DTA_APURACAO.Month == g.Key.Month &&
                                           y.DTA_APURACAO.Year == g.Key.Year &&
                                           y.COD_CNPJ_PRESTADOR == g.Key.COD_CNPJ_PRESTADOR
                                           group y by new { y.NUM_DOCUMENTO_NF } into z
                select new
                {
                    cod_serie_nf         = string.IsNullOrEmpty(z.First().COD_SERIE_NF) ? "1" : z.First().COD_SERIE_NF,
                    num_documento_nf     = z.Key.NUM_DOCUMENTO_NF,
                    dta_emissao_nf       = z.First().DTA_EMISSAO_NF.ToString("yyyy-MM-dd"),
                    val_bruto_nf         = z.First().VAL_BRUTO_NF.ToString().Replace('.', ','),
                    cod_tipo_servico     = z.First().COD_TIPO_SERVICO,
                    val_base_ret_servico = z.First().VAL_BASE_RET_SERVICO.ToString().Replace('.', ','),
                    val_retencao_servico = z.First().VAL_RETENCAO_SERVICO.ToString().Replace('.', ',')
                }
            };

            // Monta XML
            var templateFile = Path.Combine(baseCaminhoArquivo, "../TemplatesXml", "R2010.liquid");
            var template     = Template.Parse(File.OpenText(templateFile).ReadToEnd());
            var xmlR2010     = template.Render(new
            {
                eventos
            });

            var caminhoArquivo = GerarArquivo("R2010_", baseCaminhoArquivo, xmlR2010);

            CompactarArquivo(caminhoArquivo, baseCaminhoArquivo, nomeArquivoZip);

            foreach (var item in listRegistrosR2010)
            {
                item.IND_AMBIENTE_ENVIO         = tipoAmbiente;
                item.IND_RETIFICACAO            = tipoOperacao;
                item.IND_SITUACAO_PROCESSAMENTO = DMN_SITUACAO_PROCESSAMENTO.PROCESSADO;
                item.OID_ARQUIVO_UPLOAD         = oidArquivoUpload;
                item.OID_USUARIO_ENVIO          = oidUsuario;

                proxy2010.Atualizar(item);
            }
        }
コード例 #5
0
ファイル: GeradorXml.cs プロジェクト: mbponline/efd-reinf
        public void GerarR1070(decimal oidUsuario, decimal oidContribuinte, string tipoAmbiente, string baseCaminhoArquivo)
        {
            // Busca contribuinte
            var contribuinte        = new ContribuinteProxy().BuscarPorChave(oidContribuinte);
            var usuarioContribuinte = new UsuarioContribuinteProxy().BuscarPorOidUsuarioOidContribuinte(oidUsuario, oidContribuinte);

            // Monta nome do arquivo
            var nomeArquivoZip     = "XML_R1070_" + Guid.NewGuid().ToString() + ".zip";
            var arquivoUploadProxy = new ArquivoUploadProxy();

            var oidArquivoUpload = arquivoUploadProxy.Inserir(new ArquivoUploadEntidade
            {
                DTA_UPLOAD               = DateTime.Now,
                IND_STATUS               = DMN_STATUS_EFD_UPLOAD.NAO_PROCESSADO,
                NOM_ARQUIVO_LOCAL        = "Upload/" + nomeArquivoZip,
                NOM_EXT_ARQUIVO          = ".zip",
                NOM_ARQUIVO_ORIGINAL     = nomeArquivoZip,
                NOM_DIRETORIO_LOCAL      = "Upload",
                OID_USUARIO_CONTRIBUINTE = usuarioContribuinte.OID_USUARIO_CONTRIBUINTE
            });

            R1070Proxy proxyR1070 = new R1070Proxy();
            IEnumerable <R1070Entidade> listRegistrosR1070;

            listRegistrosR1070 = proxyR1070.BuscarPorOidContribuinteNaoEnviados(oidContribuinte);

            if (listRegistrosR1070.Count() == 0)
            {
                throw new Exception("Não existem registros para geração de arquivo XML.");
            }

            var eventos = from x in listRegistrosR1070
                          select new
            {
                id = string.Format("ID{0}{1}{2:yyyyMMddHHmmss}{3}", contribuinte.IND_TIPO_INSCRICAO, contribuinte.COD_CNPJ_CPF.Substring(0, 8).PadRight(14, '0'), DateTime.Now, x.OID_R1070.ToString().PadLeft(5, '0')),
                ind_ambiente_envio      = tipoAmbiente,
                versao                  = Assembly.GetExecutingAssembly().GetName().Version.ToString(3),
                ind_tipo_inscricao      = contribuinte.IND_TIPO_INSCRICAO,
                cod_cnpj_cpf            = contribuinte.COD_CNPJ_CPF.Substring(0, 8),
                abertura_tag_operacao   = x.IND_OPERACAO_REGISTRO == DMN_OPERACAO_REGISTRO.INCLUSAO ? "<inclusao>" : x.IND_OPERACAO_REGISTRO == DMN_OPERACAO_REGISTRO.ALTERACAO ? "<alteracao>" : "<exclusao>",
                ind_tipo_processo       = x.IND_TIPO_PROCESSO,
                num_processo            = x.NUM_PROCESSO,
                dta_inicio_validade     = x.DTA_INICIO_VALIDADE.ToString("yyyy-MM"),
                dta_fim_validade        = x.DTA_FIM_VALIDADE == null ? null : Convert.ToDateTime(x.DTA_FIM_VALIDADE).ToString("yyyy-MM"),
                ind_autoria_judicial    = x.IND_AUTORIA_JUDICIAL,
                cod_suspensao           = x.COD_SUSPENSAO,
                ind_suspensao           = x.IND_SUSPENSAO,
                dta_decisao             = x.DTA_DECISAO == null ? string.Empty : Convert.ToDateTime(x.DTA_DECISAO).ToString("yyyy-MM-dd"),
                ind_deposito_judicial   = x.IND_DEPOSITO_JUDICIAL,
                cod_uf_vara             = x.COD_UF_VARA,
                cod_municipio_vara      = x.COD_MUNICIPIO_VARA,
                cod_identificacao_vara  = x.COD_IDENTIFICACAO_VARA,
                fechamento_tag_operacao = x.IND_OPERACAO_REGISTRO == DMN_OPERACAO_REGISTRO.INCLUSAO ? "</inclusao>" : x.IND_OPERACAO_REGISTRO == DMN_OPERACAO_REGISTRO.ALTERACAO ? "</alteracao>" : "</exclusao>"
            };


            // Monta XML
            var templateFile = Path.Combine(baseCaminhoArquivo, "../TemplatesXml", "R1070.liquid");
            var template     = Template.Parse(File.OpenText(templateFile).ReadToEnd());
            var xmlR1070     = template.Render(new
            {
                eventos
            });

            var caminhoArquivo = GerarArquivo("R1070_", baseCaminhoArquivo, xmlR1070);

            CompactarArquivo(caminhoArquivo, baseCaminhoArquivo, nomeArquivoZip);

            //Atualizando a tabela R1070
            foreach (var rowR1070 in listRegistrosR1070)
            {
                rowR1070.OID_CONTRIBUINTE           = oidContribuinte;
                rowR1070.OID_USUARIO_ENVIO          = oidUsuario;
                rowR1070.IND_SITUACAO_PROCESSAMENTO = DMN_SITUACAO_PROCESSAMENTO.PROCESSADO;
                rowR1070.IND_AMBIENTE_ENVIO         = tipoAmbiente;
                rowR1070.OID_ARQUIVO_UPLOAD         = oidArquivoUpload;

                proxyR1070.Atualizar(rowR1070);
            }
        }