Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }