/// <summary> /// Obtiene el conjunto de tarifas de pago aplicables a los criterios señalados /// </summary> /// <param name="nivel_pago">Nivel de Pago correspondiente (En base al Id de Servicio o Movimiento)</param> /// <param name="id_servicio_movimiento">Id de Servicio o movimiento</param> /// <param name="perfil_pago">Perfil de Pago (En base al Id de Entidad de Pago)</param> /// <param name="id_entidad_pago">Id de Entidad a la que se debe pagar (Unidad, Operador o Transportista)</param> /// <returns></returns> private static DataTable obtieneTarifasPago(NivelPago nivel_pago, int id_servicio_movimiento, PerfilPago perfil_pago, int id_entidad_pago) { //Definiendo objeto de resultado DataTable mit = null; //Determinando datos complementarios en base al nivel de pago if (nivel_pago == NivelPago.Movimiento) { //Instanciando movimiento indicado using (Despacho.Movimiento mov = new Despacho.Movimiento(id_servicio_movimiento)) //Si el movimiento existe y no es un movimiento vacío if (mov.habilitar && mov.id_servicio > 0) { //Asignando Id de Servicio a registro de búsqueda id_servicio_movimiento = mov.id_servicio; } } //Creando conjunto de criterios de búsqueda en blanco object[] param = { 4, 0, "", 0, (byte)nivel_pago, (byte)perfil_pago, 0, 0, 0, 0, 0, 0, 0, null, null, 0, false, id_servicio_movimiento, id_entidad_pago }; //Realizando carga de tarifas coincidentes using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nom_sp, param)) { //Validando origen de datos if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table")) { //Obteniendo tabla de interés mit = ds.Tables["Table"]; } //Devolviendo resultado return(mit); } }
/// <summary> /// Obtiene el conjunto de tarifas de pago aplicables a los criterios señalados /// </summary> /// <param name="id_movimiento">Id de Movimiento</param> /// <param name="perfil_pago">Perfil de Pago (En base al Id de Entidad de Pago)</param> /// <param name="id_entidad_pago">Id de Entidad a la que se debe pagar (Unidad, Operador o Transportista)</param> /// <param name="escalarAServicio">True para indicar que si no existen tarifas coincidentes a nivel de movimiento, se debe realizar una búsqueda a nivel de servicio</param> /// <returns></returns> public static DataTable ObtieneTarifasPagoMovimiento(int id_movimiento, PerfilPago perfil_pago, int id_entidad_pago, bool escalarAServicio) { //Declarando objeto de retorno DataTable mit = null; //Declarando auxiliares de búsqueda (inicializadas a movimiento vacío) NivelPago nivel_pago = NivelPago.Mov_Vacio; int id_servicio_movimiento = id_movimiento; //Instanciando el movimiento solicitado using (Despacho.Movimiento mov = new Despacho.Movimiento(id_movimiento)) { //Si el movimiento existe if (mov.habilitar) { //Determiando si el movimiento está ligado a un servicio if (mov.id_servicio > 0) { //Actualizando parámetros de búsqueda nivel_pago = NivelPago.Movimiento; id_servicio_movimiento = mov.id_servicio; } } } //Realizando búsqueda por movimiento mit = obtieneTarifasPago(nivel_pago, id_servicio_movimiento, perfil_pago, id_entidad_pago); //Si no hay tarifas coincidentes y se ha solicitado búsqueda a otro nivel if (!Validacion.ValidaOrigenDatos(mit) && nivel_pago != NivelPago.Mov_Vacio && escalarAServicio) { //Realizando búsqueda a nivel de servicio mit = obtieneTarifasPago(NivelPago.Servicio, id_servicio_movimiento, perfil_pago, id_entidad_pago); } //Devolviendo resultado return(mit); }