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));
            }
        }
Exemplo n.º 2
0
        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);
        }