예제 #1
0
        public void GerarR2099(decimal oidUsuario, decimal oidContribuinte, R2099Entidade r2099, string baseCaminhoArquivo)
        {
            // Busca contribuinte
            var contribuinte        = new ContribuinteProxy().BuscarPorChave(oidContribuinte);
            var usuarioContribuinte = new UsuarioContribuinteProxy().BuscarPorOidUsuarioOidContribuinte(oidUsuario, oidContribuinte);

            // Monta nome do arquivo
            var nomeArquivoZip     = "XML_R2099_" + 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 registro na R2099
            var R2099Proxy = new R2099Proxy();

            r2099.IND_SITUACAO_PROCESSAMENTO = DMN_SITUACAO_PROCESSAMENTO.PROCESSADO;
            r2099.IND_CPRB           = contribuinte.IND_DESONERACAO_CPRB;
            r2099.OID_USUARIO_ENVIO  = oidUsuario;
            r2099.OID_ARQUIVO_UPLOAD = oidArquivoUpload;
            var oidR2099 = R2099Proxy.Inserir(r2099);

            // Monta XML
            var templateFile = Path.Combine(baseCaminhoArquivo, "../TemplatesXml", "R2099.liquid");
            var template     = Template.Parse(File.OpenText(templateFile).ReadToEnd());
            var xmlR2099     = template.Render(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, r2099.OID_R2099.ToString().PadLeft(5, '0')),
                dta_periodo_apuracao = r2099.DTA_PERIODO_APURACAO.ToString("yyyy-MM"),
                ind_ambiente_envio   = r2099.IND_AMBIENTE_ENVIO,
                versao                    = Assembly.GetExecutingAssembly().GetName().Version.ToString(3),
                ind_tipo_inscricao        = contribuinte.IND_TIPO_INSCRICAO,
                cod_cnpj_cpf              = contribuinte.COD_CNPJ_CPF.Substring(0, 8),
                nom_contato               = contribuinte.NOM_CONTATO,
                cod_cpf_contato           = contribuinte.COD_CPF_CONTATO,
                cod_fone_celular_contato  = contribuinte.COD_FONE_CELULAR_CONTATO,
                txt_email_contato         = contribuinte.TXT_EMAIL_CONTATO,
                ind_contratacao_serv      = r2099.IND_CONTRATACAO_SERV.Substring(0, 1),
                ind_prestacao_serv        = r2099.IND_PRESTACAO_SERV.Substring(0, 1),
                ind_associacao_desportiva = r2099.IND_ASSOCIACAO_DESPORTIVA.Substring(0, 1),
                ind_repasse_assoc_desport = r2099.IND_REPASSE_ASSOC_DESPORT.Substring(0, 1),
                ind_producao_rural        = r2099.IND_PRODUCAO_RURAL.Substring(0, 1),
                ind_aquisicao_rural       = r2099.IND_AQUISICAO_RURAL.Substring(0, 1),
                ind_desoneracao_cprb      = contribuinte.IND_DESONERACAO_CPRB == "0" ? "N" : "S",
                ind_pagamentos_diversos   = r2099.IND_PAGAMENTOS_DIVERSOS.Substring(0, 1),
                dta_competencia_sem_mov   = r2099.DTA_COMPETENCIA_SEM_MOV == null ? null : Convert.ToDateTime(r2099.DTA_COMPETENCIA_SEM_MOV).ToString("yyyy-MM")
            });

            var caminhoArquivo = GerarArquivo("R2099_", baseCaminhoArquivo, xmlR2099);

            CompactarArquivo(caminhoArquivo, baseCaminhoArquivo, nomeArquivoZip);
        }
        public ActionResult GerarR2099(decimal oidContribuinte, [FromBody] R2099Entidade r2099)
        {
            try
            {
                string webRootPath = HostingEnvironment.ContentRootPath;
                string newPath     = Path.Combine(webRootPath, _folderName);

                new GeradorXml().GerarR2099(OidUsuario, oidContribuinte, r2099, newPath);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }