/// <summary> /// Devuelve el último detalle de paquete asignado al documento de viaje solicitado /// </summary> /// <param name="id_control_evidencia_documento">Id de Documento de viaje</param> /// <returns></returns> public static PaqueteEnvioDocumento ObtieneUltimoDetallePaqueteDocumento(int id_control_evidencia_documento) { //Definiendo objeto de retorno PaqueteEnvioDocumento dp = new PaqueteEnvioDocumento(); //Definiendo parámetros de búsqueda object[] param = { 6, 0, id_control_evidencia_documento, 0, 0, null, 0, false, "", "" }; //Realizando búsqueda using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nom_sp, param)) { //Si existen resultados if (Validacion.ValidaOrigenDatos(ds, "Table")) { //Para el resultado foreach (DataRow r in ds.Tables["Table"].Rows) { //Instanciando detalle de paquete dp = new PaqueteEnvioDocumento(Convert.ToInt32(r["Id"])); //Terminando iteraciones break; } } } //Devolviendo resultado return(dp); }
/// <summary> /// Método encargado de deshabilitar el registro y sus dependencias /// </summary> /// <param name="id_usuario">Id de Usuario</param> /// <returns></returns> public RetornoOperacion DeshabilitaPaqueteEnvioCascada(int id_usuario) { //Definiendo objeto de resultado RetornoOperacion resultado = new RetornoOperacion(); //Creamos la transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Validando el estatus del paquete, sólo Registrado puede ser eliminado if (this.id_estatus == EstatusPaqueteEnvio.Registrado) { //Deshabilitando los detalles resultado = PaqueteEnvioDocumento.DeshabilitaPaqueteEnvioDocumentos(this._id_paquete_envio, id_usuario); //Si se deshabilitaron los detalles if (resultado.OperacionExitosa) { //Realizando deshabilitación de este registros resultado = DeshabilitaPaqueteEnvio(id_usuario); } } else { resultado = new RetornoOperacion("Un paquete sólo puede ser eliminado cuando su estatus es 'Registrado'."); } //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos Transacción scope.Complete(); } } //Devolviendo resultado return(resultado); }
/// <summary> /// Deshabilita todos los documentos ligados a la HI indicada /// </summary> /// <param name="id_paquete_envio">Id de Paquete envío</param> /// <param name="id_usuario">Id de Usuario</param> /// <returns></returns> public static RetornoOperacion DeshabilitaPaqueteEnvioDocumentos(int id_paquete_envio, int id_usuario) { //Definiendo objeto de resultado RetornoOperacion resultado = new RetornoOperacion(id_paquete_envio); //Creamos la transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Cargando documentos using (DataTable mitDoc = CargaDocumentoDelPaquete(id_paquete_envio)) { //Si existen resultados if (Validacion.ValidaOrigenDatos(mitDoc)) { //Para cada uno de los registros foreach (DataRow d in mitDoc.Rows) { //instanciando registro using (PaqueteEnvioDocumento dp = new PaqueteEnvioDocumento(Convert.ToInt32(d["Id"]))) { //Si el registro existe if (dp.id_paquete_envio_documento > 0) { //Deshabilitando Documento resultado = dp.DeshabilitaPaqueteEnvioDocumento(id_usuario); } else { resultado = new RetornoOperacion(string.Format("Detalle 'ID: {0}' no encontrado.", Convert.ToInt32(d["Id"]))); } } //Si existe error if (!resultado.OperacionExitosa) { //Saliendo de ciclo break; } } } } //Validamos Resultado if (resultado.OperacionExitosa) { //Validamos Transacción scope.Complete(); } } //Devolviendo resultado return(resultado); }
/// <summary> /// Cancela Control Evidencia Documento /// </summary> /// <param name="id_segmento_control_evidencia">Id Segmento Control Evidencia Documento</param> /// <param name="objSegmentoControEvlidencia">Objeto Segmento Control Evidencia</param> /// <param name="id_usuario">Id Usuario</param> /// <returns></returns> public static RetornoOperacion CancelaControlEvidenciaDocumento(int id_segmento_control_evidencia, SegmentoControlEvidencia objSegmentoControEvlidencia, int id_usuario) { //Objeto Resultado RetornoOperacion res = new RetornoOperacion(0); //Creamos la transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Cargamos Evidencias de Documento using (DataTable mitDocumento = CargaDocumentosControlEvidencia(id_segmento_control_evidencia)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mitDocumento)) { //Recorremos Cada uno de los Documento foreach (DataRow r in mitDocumento.Rows) { //Instanciamos Documento using (ControlEvidenciaDocumento doc = new ControlEvidenciaDocumento(r.Field <int>("Id"))) { //Actualizamos Estatus res = doc.ActualizaEstatusControlEvidenciaDocumento(ControlEvidenciaDocumento.EstatusDocumento.Cancelado, id_usuario); //Validamos Resultado if (res.OperacionExitosa) { //Cargamos detalle del paquete correspondiente al Documento using (DataTable mit = PaqueteEnvioDocumento.ObtieneDetallesPaqueteDocumento(doc.id_control_evidencia_documento)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //Recorremos cada uno de los paquetes foreach (DataRow p in mit.Rows) { //Insertamos Refrencia res = Referencia.InsertaReferencia(p.Field <int>("Id"), 41, 2070, "Reacomodo de los documentos a causa de la edición del segmento", Fecha.ObtieneFechaEstandarMexicoCentro(), id_usuario); //Validamos Resultado if (!res.OperacionExitosa) { //Salimos del ciclo break; } } } } } } //Validamos Resultado if (!res.OperacionExitosa) { //Salimos del ciclo break; } } } //Validamos Resultado if (res.OperacionExitosa) { //Cancelamos Segmento res = objSegmentoControEvlidencia.EditaEstatusSegmentoControlEvidencia(SegmentoControlEvidencia.EstatusSegmentoControlEvidencias.Cancelado, id_usuario); } } //Validamos Resultado if (res.OperacionExitosa) { scope.Complete(); } } //Devolvemos resultado return(res); }
/// <summary> /// Actualiza el Estatus del Paquete /// </summary> /// <param name="id_usuario"></param> /// <returns></returns> public RetornoOperacion ActualizaEstatusGeneralPaquete(int id_usuario) { //Declaramos Variable Estatus bool Registrado, Transito, Recibido, EnAclaracion, NoRecibido; //Declaramos estatus EstatusPaqueteEnvio estatus = EstatusPaqueteEnvio.No_Recibido; //Cargamos Estatus de los Paquetes PaqueteEnvioDocumento.CargaEstatusPaqueteEnvioDocumento(this._id_paquete_envio, out Registrado, out Transito, out Recibido, out EnAclaracion, out NoRecibido); //Determinamos estatua para actualizar el Paquete //Si existe por lo menos un documento en aclaración if (EnAclaracion) { estatus = EstatusPaqueteEnvio.En_Aclaracion; } else { //Si existe solo documentos Recibidos if (!Registrado && !Transito && Recibido && !EnAclaracion && !NoRecibido) { estatus = EstatusPaqueteEnvio.Recibido; } else { //Si existe solo documentos en NO Recibidos if (!Registrado && !Transito && !Recibido && !EnAclaracion && NoRecibido) { estatus = EstatusPaqueteEnvio.No_Recibido; } else { //Si existe solo documentos en transito if (Transito) { //Si por lo meno existe un documento Recibido if (Recibido) { estatus = EstatusPaqueteEnvio.Recibido_Parcial; } else if (Registrado) { estatus = EstatusPaqueteEnvio.Registrado; } else { //Asignamos Estatus a Transito estatus = EstatusPaqueteEnvio.Transito; } } else { //Asignamos estatus a Recibido estatus = EstatusPaqueteEnvio.Recibido; } } } } //Declaramos Fecha de llegada y Salida DateTime fecha_llegada = this._fecha_llegada; DateTime fecha_salida = this._fecha_salida; // Validamos si el Estatus acual es a Registrado y el estatus a asignar es Transito if ((EstatusPaqueteEnvio)this._id_estatus == EstatusPaqueteEnvio.Registrado && estatus == EstatusPaqueteEnvio.Transito) { //Actualizamos la fecha de salida fecha_salida = TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro(); } else { // Validamos que el estatus Actua y por asignar se ha diferente de Registrado if ((EstatusPaqueteEnvio)this._id_estatus != EstatusPaqueteEnvio.Registrado && estatus != EstatusPaqueteEnvio.Registrado) { //Actualizamos la fecha de llegada fecha_llegada = Fecha.EsFechaMinima(this._fecha_llegada) ? TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro() : this._fecha_llegada; } } //Actualizamos Estatus del Paquete return(this.actualizaRegistros(this._id_compania_emisor, this._id_terminal_origen, this._id_terminal_destino, estatus, fecha_salida, fecha_llegada, this._id_medio_envio, this._referencia_envio, id_usuario, this._habilitar)); }