/// <summary> /// Método encargado de Actualizar el Estatus de la Requisición y de los Detalles Ligados /// </summary> /// <param name="estatus">Estatus de la Requisición</param> /// <param name="id_usuario">Usuario que Actualiza el Registro</param> /// <returns></returns> public RetornoOperacion ActualizaEstatusRequisicionDetalles(Estatus estatus, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Obteniendo Estatus General de los Detalles RequisicionDetalle.EstatusDetalle estatus_det = (RequisicionDetalle.EstatusDetalle)((byte)estatus); //Inicializando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Devolviendo Resultado Obtenido result = this.actualizaRegistrosBD(this._no_requisicion, this._id_compania_emisora, this._id_servicio, (byte)estatus, this._referencia, this._id_tipo, this._id_almacen, this._id_usuario_solicitante, this._fecha_solitud, this._fecha_entrega_requerida, estatus == Estatus.Cerrada ? Fecha.ObtieneFechaEstandarMexicoCentro() : this._fecha_entrega, id_usuario, this._habilitar); //Validando que la Operación haya sido exitosa if (result.OperacionExitosa) { //Obteniendo Detalles using (DataTable dtDetalles = RequisicionDetalle.ObtieneDetallesRequisicion(this._id_requisicion)) { //Validando que Existan los Detalles if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtDetalles)) { //Recorriendo Registros foreach (DataRow dr in dtDetalles.Rows) { //Instanciando Detalle de Requisición using (RequisicionDetalle rd = new RequisicionDetalle(Convert.ToInt32(dr["NoDetalle"]))) { //Validando que exista if (rd.IdDetalleRequisicion > 0) { //Actualizando Estatus result = rd.EditaEstatus(estatus_det, id_usuario); //Validando que la Operación no fuese Exitosa if (!result.OperacionExitosa) { //Terminando Ciclo break; } } else { //Terminando Ciclo break; } } } //Validando que la Operación fuese Exitosa if (result.OperacionExitosa) { //Instanciando Requisición result = new RetornoOperacion(this._id_requisicion); //Completando Transacción trans.Complete(); } } else { //Instanciando Excepción result = new RetornoOperacion("La Requisición no tiene Detalles"); } } } } //Devolviendo Objeto de Retorno return(result); }
/// <summary> /// Método encargado de Solicitar una Requisición /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion SolicitaRequisicion(int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); //Inicializando Bloque Transaccional using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando Tipo de Requisición if ((Tipo)this._id_tipo == Tipo.Trabajo) { //Validando que el Estatus sea Registrado if ((Estatus)this._id_estatus == Estatus.Registrada) { //Devolviendo Resultado Obtenido result = this.actualizaRegistrosBD(this._no_requisicion, this._id_compania_emisora, this._id_servicio, (byte)Estatus.Solicitada, this._referencia, this._id_tipo, this._id_almacen, this._id_usuario_solicitante, this._fecha_solitud, this._fecha_entrega_requerida, this._fecha_entrega, id_usuario, this._habilitar); //Validando que la Operación haya sido exitosa if (result.OperacionExitosa) { //Obteniendo Detalles using (DataTable dtDetalles = RequisicionDetalle.ObtieneDetallesRequisicion(this._id_requisicion)) { //Validando que Existan los Detalles if (TSDK.Datos.Validacion.ValidaOrigenDatos(dtDetalles)) { //Recorriendo Registros foreach (DataRow dr in dtDetalles.Rows) { //Instanciando Detalle de Requisición using (RequisicionDetalle rd = new RequisicionDetalle(Convert.ToInt32(dr["NoDetalle"]))) { //Validando que exista if (rd.IdDetalleRequisicion > 0) { //Actualizando Estatus result = rd.EditaEstatus(RequisicionDetalle.EstatusDetalle.Solicitado, id_usuario); //Validando que la Operación no fuese Exitosa if (!result.OperacionExitosa) { //Terminando Ciclo break; } } else { //Terminando Ciclo break; } } } //Validando que la Operación fuese Exitosa if (result.OperacionExitosa) { //Completando Transacción trans.Complete(); //Instanciando Requisición result = new RetornoOperacion(this._id_requisicion); } } else { //Instanciando Excepción result = new RetornoOperacion("La Requisición no tiene Detalles"); } } } } else { //Validando Estatus para Excepción switch ((Estatus)this._id_estatus) { case Estatus.Solicitada: { //Instanciando Excepción result = new RetornoOperacion("La Requisición ya ha sido Solicitada"); break; } case Estatus.PorAutorizar: { //Instanciando Excepción result = new RetornoOperacion("La Requisición se encuentra Por Autorizar"); break; } case Estatus.AbastecidaParcial: { //Instanciando Excepción result = new RetornoOperacion("La Requisición se encuentra Abastecida Parcialmente"); break; } case Estatus.Cerrada: { //Instanciando Excepción result = new RetornoOperacion("La Requisición se encuentra Cerrada"); break; } case Estatus.Cancelada: { //Instanciando Excepción result = new RetornoOperacion("La Requisición se encuentra Cancelada"); break; } } } } else { //Instanciando Excepción result = new RetornoOperacion("No puede solicitar una Requisición Maestra"); } } //Devolviendo Objeto de Retorno return(result); }