string preparaDeclaracionProvisional(string xmlDeclaracion, string rfc, string idDeclaracion, DeclaracionTemporal temporal, out string mensaje) { string uriBlob = string.Empty; mensaje = string.Empty; try { TransformadorSATMessage procesaMensaje = new TransformadorSATMessage(); RespuestaServicioDyP respuestaProceso = procesaMensaje.EnviarMensajeSAT(xmlDeclaracion, idDeclaracion, rfc); if (respuestaProceso.Procesado) { if (string.IsNullOrEmpty(new DeterminacionPagoDyP().ConsultarOpcPagoISREnClasificador(temporal.Ejercicio, rfc))) { /*Apartado para determinar si el contribuyente seleccionó ingreso menos gasto o coeficiente de utilidad en el formulario de ISR*/ try { XDocument xdocTmp = XDocument.Parse(xmlDeclaracion); var nodoISR = xdocTmp.XPathSelectElement("//*[local-name()='modeloDatos']/*[local-name()='entidad' and @tipo='SAT_DETERMINACION_IMPUESTO' and @claveimpuesto='" + TipoObligacion.ISR.ToDescription() + "']/*[local-name()='propiedad' and @claveinformativa='OCISR']"); if (nodoISR != null) { string misr = nodoISR.Value == "1" ? "CU" : "IG"; var pago = new DeterminacionPagoDyP(); pago.AgregarOpcPagoISR(temporal.Ejercicio, rfc, misr); pago.MarcarComoCerrada(temporal.Ejercicio, rfc); } } catch (Exception _ex) { RegistraEvento.Instancia.EscribeEvento(_ex); RegistroEvento.Error(ref _ex, CodigoEvento.ErrorDatos, GetType().Name); } } uriBlob = respuestaProceso.PDF; var declaraProvisional = new DeclaracionProvisional { rfc = rfc, ejercicio = temporal.Ejercicio, idDeclaracion = idDeclaracion, NoReforma = temporal.VersionReforma, periodicidad = temporal.Periodicidad, periodicidadDescripcion = temporal.PeriodicidadDescripcion, periodo = temporal.Periodo, tipoDeclaracion = temporal.TipoDeclaracion, tipoDeclaracionDescripcion = temporal.TipoDeclaracionDescripcion, periodoDescripcion = temporal.PeriodoDescripcion, tipoComplementaria = temporal.TipoComplementaria, tipoComplementariaDescripcion = temporal.TipoComplementariaDescripcion, }; uriBlob = AlmacenarDeclaracionProvisional(declaraProvisional, xmlDeclaracion, respuestaProceso.XmlMessage, respuestaProceso.PDF, respuestaProceso.HTML); EliminarDeclaracionTemporal(rfc, idDeclaracion); using (AdministradorEnvioDeclaracionConceptos administrador = new AdministradorEnvioDeclaracionConceptos()) { try { administrador.EnviarMensaje(rfc, idDeclaracion); } catch (Exception ex) { RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, "Generacion del mensaje de recepción de declaracion."); } } try { using (var administrador = new AdministradorDeclaracionClasificador()) { //var declaracionClasificador = administrador.ObtenerDeclaracionPorDypLlave(rfc, idDeclaracion); //declaracionClasificador.EstadoActual = (int)Sat.DyP.Clasificador.Entidades.Enumeraciones.EstadoDeclaracion.Enviada; //administrador.AgregarActualizarDeclaracion(declaracionClasificador); // var declaracionAlmacenada = DeclaracionClasificadorComplementos.MarcarComoDeclaracionEnviada(rfc, idDeclaracion, temporal.VersionReforma); if (declaracionAlmacenada != null) { administrador.EncolarCfdisReportes(declaracionAlmacenada.RowKey); } } } catch (Exception ex) { RegistroEvento.Error(ref ex, CodigoEvento.ErrorNegocio, "Marcar como enviada y crear petición para worker de datos."); } } else { mensaje = respuestaProceso.Mensaje + respuestaProceso.PDF; } } catch (Exception ex) { throw ex; } return(uriBlob); }