public DocumentoVersionEstado CrearDocumentoVersionEstado(TipoDocumento tipoDocumento, string idEstado, string fechaEstado, Usuario usuarioLogin) { ServicioParametricas servParametricas = new ServicioParametricas(); DocumentoVersionEstado versionEstado = new DocumentoVersionEstado(); versionEstado.Fecha = fechaEstado.ConvertirDateTime(); EstadoDocumento estadoActual = servParametricas.EstadoDocumentoObtener(idEstado.ConvertirInt()); versionEstado.Estado = estadoActual; versionEstado.Usuario = usuarioLogin; versionEstado.ProfesionalAutor = null; versionEstado.ProfesionalPresenta = null; versionEstado.ProfesionalResponsable = null; versionEstado.Observaciones = string.Empty; TipoDocumentoFlujoEstado flujoEstado = tipoDocumento.ObtenerFlujoDefault().ObtenerFlujoEstado(estadoActual); if (flujoEstado != null) { versionEstado.EstadoFinal = flujoEstado.Final; } else { versionEstado.EstadoFinal = false; } versionEstado.Validar(); return(versionEstado); }
public void GrabarDocumentoVersionEstado(DocumentoVersion version, EstadoDocumento estado, bool actualizarEstadoFinal, Usuario usuarioLogin) { if (estado == null && !actualizarEstadoFinal) { return; } ServicioParametricas servParametricas = new ServicioParametricas(); DocumentoVersionEstado versionEstadoActual = version.ObtenerVersionEstado(); if (versionEstadoActual != null && versionEstadoActual.Estado != null) { //para no duplicar el estado, si ya lo tiene no hce nada if (versionEstadoActual.Estado == estado) { return; } //si ya tiene un estado final y no se está actualizando estado final, se quita primero para que quede un solo estado final if (versionEstadoActual.EstadoFinal.HasValue && versionEstadoActual.EstadoFinal.Value) { if (actualizarEstadoFinal) { return; } else { version.EliminarVersionEstado(versionEstadoActual.Id); } } } EstadoDocumento estadoAprobadoExistente = null; EstadoDocumento estadoTomaConocimientoExistente = null; EstadoDocumento nuevoEstado = null; if (actualizarEstadoFinal) { List <EstadoDocumento> listEstados = version.Documento.TipoDocumento.ObtenerFlujoDefault().ObtenerEstados(versionEstadoActual.Estado); Parametro parmsEstado = servParametricas.ObtenerObjeto <Parametro>("Descripcion", "ESTADO_DOC_APROBADO"); string idEstadoAprobado = (parmsEstado != null) ? parmsEstado.Valor : null; estadoAprobadoExistente = listEstados.Find(delegate(EstadoDocumento match) { return(match.Id == idEstadoAprobado.ConvertirInt()); }); parmsEstado = servParametricas.ObtenerObjeto <Parametro>("Descripcion", "ESTADO_DOC_TOMA_CONOCIMIENTO"); string idEstadoTomaConocimiento = (parmsEstado != null) ? parmsEstado.Valor : null; estadoTomaConocimientoExistente = listEstados.Find(delegate(EstadoDocumento match) { return(match.Id == idEstadoTomaConocimiento.ConvertirInt()); }); if (estadoAprobadoExistente == null && estadoTomaConocimientoExistente == null) { return; } nuevoEstado = (estadoAprobadoExistente != null) ? estadoAprobadoExistente : estadoTomaConocimientoExistente; } else { nuevoEstado = estado; } DocumentoVersionEstado versionEstado = new DocumentoVersionEstado(); versionEstado.Fecha = DateTime.Now; versionEstado.Estado = nuevoEstado; versionEstado.Usuario = usuarioLogin; versionEstado.Observaciones = string.Empty; TipoDocumentoFlujoEstado flujoEstado = version.Documento.TipoDocumento.ObtenerFlujoDefault().ObtenerFlujoEstado(nuevoEstado); if (flujoEstado != null) { versionEstado.EstadoFinal = flujoEstado.Final; } else { versionEstado.EstadoFinal = false; } versionEstado.Validar(); version.AgregarVersionEstado(versionEstado); }