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)); } }