Exemple #1
0
 /// <summary>
 /// Evento generado al Editar un Vales
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void lnkEditarE_Click(object sender, EventArgs e)
 {
     //Si hay registros
     if (gvVales.DataKeys.Count > 0)
     {
         //Seleccionando la fila correspondiente
         Controles.SeleccionaFila(gvVales, sender, "lnk", true);
         //Carga Vales
         buscaVales();
         //Inicializamos Valores
         using (SAT_CL.EgresoServicio.AsignacionDiesel objVale = new SAT_CL.EgresoServicio.AsignacionDiesel(Convert.ToInt32(gvVales.SelectedValue)))
         {
             //Instanciamos Detalle Liquidacion
             using (SAT_CL.EgresoServicio.DetalleLiquidacion objDetalleLiquidacion = new DetalleLiquidacion(objVale.id_asignacion_diesel, 69))
                 //Instanciamos Litrsob
                 using (TextBox txtLitrosE = (TextBox)gvVales.SelectedRow.FindControl("txtLitrosE"))
                 {
                     using (TextBox txtCCombustible = (TextBox)gvVales.SelectedRow.FindControl("txtCCombustibleE"))
                     {
                         using (TextBox txtFechaCargaE = (TextBox)gvVales.SelectedRow.FindControl("txtFechaE"))
                         {
                             //Inicializamos Valores
                             txtLitrosE.Text      = objDetalleLiquidacion.cantidad.ToString();
                             txtCCombustible.Text = objDetalleLiquidacion.valor_unitario.ToString();
                             txtFechaCargaE.Text  = objVale.fecha_carga.ToString("dd/MM/yyyy HH:mm");
                         }
                     }
                 }
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// Método Privado encargado de Cargar los Atributos dado un Registro
        /// </summary>
        /// <param name="id_comprobacion">Id de Comprobación</param>
        /// <returns></returns>
        private bool cargaAtributosInstancia(int id_comprobacion)
        {
            //Declarando Objeto de Retorno
            bool result = false;

            //Armando Arreglo de Parametros
            object[] param = { 3, id_comprobacion, 0, 0, 0, "", false, 0, 0, false, "", "" };

            //Instanciando Resultado
            using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nom_sp, param))
            {
                //Validando que exista el Registro
                if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table"))
                {
                    //Recorriendo Ciclo
                    foreach (DataRow dr in ds.Tables["Table"].Rows)
                    {
                        //Asignando Valores
                        this._id_comprobacion              = Convert.ToInt32(dr["Id"]);
                        this._id_deposito                  = Convert.ToInt32(dr["IdDeposito"]);
                        this._id_concepto_comprobacion     = Convert.ToInt32(dr["IdConceptoComprobacion"]);
                        this._id_autorizacion_comprobacion = Convert.ToInt32(dr["IdAutorizacion"]);
                        this._observacion_comprobacion     = dr["ObservacionComprobacion"].ToString();
                        this._bit_transferencia            = Convert.ToBoolean(dr["BitTransferencia"]);
                        this._id_transferencia             = Convert.ToInt32(dr["IdTransferencia"]);
                        this._habilitar = Convert.ToBoolean(dr["Habilitar"]);
                        this._objDetalleComprobacion = new DetalleLiquidacion(id_comprobacion, 104);
                    }
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemple #3
0
        /// <summary>
        /// Método Público encargado de Regresar el Cobro Recurrente en caso de Reabrir la Liquidación
        /// </summary>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion RegresaTotalCobroRecurrente(int id_usuario)
        {
            //Declarando Objetos de Retorno
            RetornoOperacion result           = new RetornoOperacion();
            RetornoOperacion resultDetalleLiq = new RetornoOperacion();

            //Declarando Variables Auxiliares
            DateTime fecha_cobro_anterior = DateTime.MinValue;
            decimal  total = 0;

            //Inicializando Bloque Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Obteniendo Cantidad
                int cantidad = 0;
                //Obteniendo Estatus
                byte id_estatus = this._total_deuda == this._total_cobrado ? (byte)EstatusTermino.Vigente : this._id_estatus_termino;

                //Instanciando Detalle de Liquidación
                using (DetalleLiquidacion dl = new DetalleLiquidacion(this._id_cobro_recurrente, 77))
                {
                    //Validando que exista el Detalle
                    if (dl.id_detalle_liquidacion > 0)
                    {
                        //Obteniendo Cantidades
                        cantidad = Convert.ToInt32(dl.cantidad);
                        total    = dl.cantidad * dl.valor_unitario;

                        //Obteniendo Fecha Anterior
                        fecha_cobro_anterior = this._fecha_ultimo_cobro.AddDays(-1 * (cantidad * this._dias_cobro));

                        //Deshabilitando Detalle del Cobro Recurrente
                        resultDetalleLiq = dl.DeshabilitaDetalleLiquidacion(id_usuario);

                        //Validando la Eliminación del Detalle del Cobro
                        if (resultDetalleLiq.OperacionExitosa)
                        {
                            //Instanciando Cobro Recurrente
                            using (TipoCobroRecurrente tcr = new TipoCobroRecurrente(this._id_tipo_cobro_recurrente))
                            {
                                //Actualizando Registro
                                result = this.actualizaRegistros(this._id_tipo_cobro_recurrente, this._id_compania_emisor, this._total_deuda, this.total_cobrado - total,
                                                                 this._monto_cobro, this._tasa_monto, this._dias_cobro, this._id_tipo_entidad_aplicacion, this._id_unidad, this._id_operador,
                                                                 this._id_proveedor_compania, this._id_empleado, this._referencia, this._fecha_inicial, fecha_cobro_anterior,
                                                                 id_estatus, this._id_tabla, this._id_registro, id_usuario, this._habilitar);

                                //Validando que la Operación haya sido Completada
                                if (result.OperacionExitosa)
                                {
                                    //Completando Transacción
                                    trans.Complete();
                                }
                            }
                        }
                    }
                }
            }
            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemple #4
0
 /// <summary>
 /// Constructor de la Clase encargado de Inicializar los Atributos por Defecto
 /// </summary>
 public CobroRecurrente()
 {   //Asignando Valores
     this._id_cobro_recurrente      = 0;
     this._id_tipo_cobro_recurrente = 0;
     this._id_compania_emisor       = 0;
     this._total_deuda   = 0;
     this._total_cobrado = 0;
     this._saldo         = 0;
     this._monto_cobro   = 0;
     this._tasa_monto    = 0;
     this._dias_cobro    = 0;
     this._id_tipo_entidad_aplicacion = 0;
     this._id_unidad             = 0;
     this._id_operador           = 0;
     this._id_proveedor_compania = 0;
     this._id_empleado           = 0;
     this._referencia            = "";
     this._fecha_inicial         = DateTime.MinValue;
     this._fecha_ultimo_cobro    = DateTime.MinValue;
     this._id_estatus_termino    = 0;
     this._id_tabla                = 0;
     this._id_registro             = 0;
     this._habilitar               = false;
     this._objDetalleLiquidacionCR = new DetalleLiquidacion();
 }
        public ActionResult DeleteConfirmed(int id)
        {
            DetalleLiquidacion detalleLiquidacion = db.DetalleLiquidacions.Find(id);

            db.DetalleLiquidacions.Remove(detalleLiquidacion);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "idDetalle,idLiquidacion,idConcepto,monto")] DetalleLiquidacion detalleLiquidacion)
 {
     if (ModelState.IsValid)
     {
         db.Entry(detalleLiquidacion).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.idConcepto    = new SelectList(db.Conceptoes, "idConcepto", "descripcion", detalleLiquidacion.idConcepto);
     ViewBag.idLiquidacion = new SelectList(db.Liquidacions, "idLiquidacion", "idLiquidacion", detalleLiquidacion.idLiquidacion);
     return(View(detalleLiquidacion));
 }
Exemple #7
0
        /// <summary>
        /// Método Público encargado de Insertar los Pagos de los Movimiento
        /// </summary>
        /// <param name="id_pago">Id de Pago</param>
        /// <param name="id_movimiento">Id de Movimiento</param>
        /// <param name="id_usuario">Id de Usuario</param>
        /// <returns></returns>
        public static RetornoOperacion InsertaPagoMovimiento(int id_pago, int id_movimiento, int id_usuario)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Armando Arreglo de Parametros
            object[] param = { 1, 0, id_pago, id_movimiento, id_usuario, true, "", "" };

            //Instanciando Pago
            using (Pago pay = new Pago(id_pago))
            {
                //Validando que exista el Pago
                if (pay.habilitar)
                {
                    //Instanciando Liquidación
                    using (Liquidacion liq = new Liquidacion(pay.objDetallePago.id_liquidacion))
                    {
                        //Validando que exista la Liquidación
                        if (liq.habilitar)
                        {
                            //Obteniendo Entidad
                            int id_entidad = liq.tipo_asignacion == SAT_CL.Liquidacion.Liquidacion.TipoAsignacion.Operador ? liq.id_operador : liq.tipo_asignacion == SAT_CL.Liquidacion.Liquidacion.TipoAsignacion.Unidad ? liq.id_unidad : liq.id_proveedor;

                            //Validando que no existan Depositos Pendientes
                            if (!DetalleLiquidacion.ValidaDepositosPendientesMovimiento(id_movimiento, liq.id_estatus, liq.id_tipo_asignacion, id_entidad))
                            {
                                //Obteniendo Resultado del SP
                                result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param);
                            }
                            else
                            {
                                //Instanciando Excepción
                                result = new RetornoOperacion(-3, "El Movimiento tiene Depositos Pendientes", false);
                            }
                        }
                        else
                        {
                            //Instanciando Excepción
                            result = new RetornoOperacion("No Existe la Liquidación");
                        }
                    }
                }
                else
                {
                    //Instanciando Excepción
                    result = new RetornoOperacion("No Existe el Pago");
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemple #8
0
 /// <summary>
 /// Constructor encargado de Inicializar los Atributos de la Clase por Defecto
 /// </summary>
 public Comprobacion()
 {
     //Asignando Valores
     this._id_comprobacion              = 0;
     this._id_deposito                  = 0;
     this._id_concepto_comprobacion     = 0;
     this._id_autorizacion_comprobacion = 0;
     this._observacion_comprobacion     = "";
     this._bit_transferencia            = false;
     this._id_transferencia             = 0;
     this._habilitar = false;
     this._objDetalleComprobacion = new DetalleLiquidacion();
 }
        // GET: DetalleLiquidacions/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DetalleLiquidacion detalleLiquidacion = db.DetalleLiquidacions.Find(id);

            if (detalleLiquidacion == null)
            {
                return(HttpNotFound());
            }
            return(View(detalleLiquidacion));
        }
        // GET: DetalleLiquidacions/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DetalleLiquidacion detalleLiquidacion = db.DetalleLiquidacions.Find(id);

            if (detalleLiquidacion == null)
            {
                return(HttpNotFound());
            }
            ViewBag.idConcepto    = new SelectList(db.Conceptoes, "idConcepto", "descripcion", detalleLiquidacion.idConcepto);
            ViewBag.idLiquidacion = new SelectList(db.Liquidacions, "idLiquidacion", "idLiquidacion", detalleLiquidacion.idLiquidacion);
            return(View(detalleLiquidacion));
        }
        public JsonResult NuevaLiquidacion(NuevaLiquidacionFormModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // var user = UserManager.FindById(User.Identity.GetUserId());
                    ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
                    Liquidacion     obj  = new Liquidacion()
                    {
                        Estado     = model.Estado,
                        Fecha      = DateTime.Now,
                        Id         = Guid.NewGuid(),
                        IdUsuario  = user.Id,
                        IdVendedor = model.IdVendedor,
                        Monto      = int.Parse(Utilities.sacarpuntos(model.Total))
                    };
                    db.Liquidacion.Add(obj);
                    foreach (var a in model.IdReservas)
                    {
                        var reserva = db.Reserva.First(x => x.Id == a);
                        reserva.EstadoPagoEmpleador = "Pagada";
                        db.Entry(reserva).State     = EntityState.Modified;
                        DetalleLiquidacion detalle = new DetalleLiquidacion()
                        {
                            Id            = Guid.NewGuid(),
                            IdLiquidacion = obj.Id,
                            IdReserva     = a,
                            Monto         = reserva.Total
                        };
                        db.DetalleLiquidacion.Add(detalle);
                    }
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    return(Json(new { Retorno = ex.Message + ". Stack trace: " + ex.StackTrace, Error = true }, JsonRequestBehavior.AllowGet));
                }

                return(Json(new { Retorno = "Exito", Error = false }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { Retorno = "Contacte al administrador", Error = true }, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #12
0
        public async Task <DetalleLiquidacion> ObtenerDetalleLiquidacionAnterior(int terceroId, int pciId)
        {
            DetalleLiquidacion liquidacion = null;
            int mesAnterior = _generalInterface.ObtenerFechaHoraActual().AddMonths(-1).Month;

            var lista = await(from dl in _context.DetalleLiquidacion
                              where dl.EstadoId != (int)EstadoDetalleLiquidacion.Rechazado
                              where dl.TerceroId == terceroId
                              where dl.PciId == pciId
                              where dl.FechaRegistro.Value.Month == mesAnterior
                              where dl.Viaticos == "NO"
                              select dl).ToListAsync();

            if (lista != null && lista.Count > 0)
            {
                liquidacion = lista.OrderBy(x => x.DetalleLiquidacionId).Last();
            }
            return(liquidacion);
        }
Exemple #13
0
        /// <summary>
        /// Método Privado encaragdo de Cargar los Atributos dado un Registro
        /// </summary>
        /// <param name="id_cobro_recurrente">Id de Cobro Recurrente</param>
        /// <returns></returns>
        private bool cargaAtributosInstancia(int id_cobro_recurrente)
        {   //Declarando Objeto de Retorno
            bool result = false;

            //Armando Arreglo de Parametros
            object[] param = { 3, id_cobro_recurrente, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", null, null, 0, 0, 0, 0, false, "", "" };
            //Obteniendo Resultado del SP
            using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nom_sp, param))
            {         //Validando que exista el Registro
                if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table"))
                {     //Recorriendo el Registro
                    foreach (DataRow dr in ds.Tables["Table"].Rows)
                    { //Asignando Valores
                        this._id_cobro_recurrente      = id_cobro_recurrente;
                        this._id_tipo_cobro_recurrente = Convert.ToInt32(dr["IdTipoCobroRecurrente"]);
                        this._id_compania_emisor       = Convert.ToInt32(dr["IdCompaniaEmisor"]);
                        this._total_deuda   = Convert.ToDecimal(dr["TotalDeuda"]);
                        this._total_cobrado = Convert.ToDecimal(dr["TotalCobrado"]);
                        this._saldo         = Convert.ToDecimal(dr["Saldo"]);
                        this._monto_cobro   = Convert.ToDecimal(dr["MontoCobro"]);
                        this._tasa_monto    = Convert.ToDecimal(dr["TasaMontoCobro"]);
                        this._dias_cobro    = Convert.ToInt32(dr["DiasCobro"]);
                        this._id_tipo_entidad_aplicacion = Convert.ToByte(dr["IdTipoEntidadAplicacion"]);
                        this._id_unidad             = Convert.ToInt32(dr["IdUnidad"]);
                        this._id_operador           = Convert.ToInt32(dr["IdOperador"]);
                        this._id_proveedor_compania = Convert.ToInt32(dr["IdProveedorCompania"]);
                        this._id_empleado           = Convert.ToInt32(dr["IdEmpleado"]);
                        this._referencia            = dr["Referencia"].ToString();
                        DateTime.TryParse(dr["FechaInicial"].ToString(), out this._fecha_inicial);
                        DateTime.TryParse(dr["FechaUltimoCobro"].ToString(), out this._fecha_ultimo_cobro);
                        this._id_estatus_termino      = Convert.ToByte(dr["IdEstatusTermino"]);
                        this._id_tabla                = Convert.ToInt32(dr["IdTabla"]);
                        this._id_registro             = Convert.ToInt32(dr["IdRegistro"]);
                        this._habilitar               = Convert.ToBoolean(dr["Habilitar"]);
                        this._objDetalleLiquidacionCR = new DetalleLiquidacion(id_cobro_recurrente, 77);
                    }
                }
                //Asignando Resultado Positivo
                result = true;
            }
            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemple #14
0
        /// <summary>
        /// Método Privado encargado de Actualizar los Registros
        /// </summary>
        /// <param name="id_deposito">Deposito de la Comprobación</param>
        /// <param name="id_concepto_comprobacion">Concepto de la Comprobación</param>
        /// <param name="id_autorizacion_comprobacion">Autorización de la Comprobación</param>
        /// <param name="observacion_comprobacion">Observación de la Comprobación</param>
        /// <param name="bit_transferencia">Estatus de Transferencia</param>
        /// <param name="id_transferencia">Referencia de la Transferencia</param>
        /// <param name="id_usuario">Usuario que Actualiza el Registro</param>
        /// <param name="habilitar">Estatus Habilitar</param>
        /// <returns></returns>
        private RetornoOperacion actualizaRegistro(int id_deposito, int id_concepto_comprobacion, int id_autorizacion_comprobacion, string observacion_comprobacion,
                                                   bool bit_transferencia, int id_transferencia, DetalleLiquidacion.Estatus estatus, int id_unidad, int id_operador, int id_proveedor, int id_servicio, int id_movimiento,
                                                   DateTime fecha_liquidacion, int id_liquidacion, decimal cantidad, decimal valor_unitario, int id_usuario, bool habilitar)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result = new RetornoOperacion();

            //Inicializando Transaccion
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Armando Arreglo de Parametros
                object[] param = { 2,                this._id_comprobacion, id_deposito, id_concepto_comprobacion, id_autorizacion_comprobacion, observacion_comprobacion, bit_transferencia,
                                   id_transferencia, id_usuario,            habilitar,   "",                       "" };

                //Ejecutando resultado del SP
                result = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nom_sp, param);

                //Validando que la Operación haya sido exitosa
                if (result.OperacionExitosa)
                {
                    //Obteniendo Comprobación
                    int idComprobacion = result.IdRegistro;

                    //Instanciando Detalle de la Liquidación
                    using (DetalleLiquidacion dl = new DetalleLiquidacion(idComprobacion, 104))
                    {
                        //Validando que exista el Registro
                        if (dl.id_detalle_liquidacion > 0)
                        {
                            //Validando que sea una Edicion
                            if (habilitar)
                            {
                                //Insertando Detalle de Liquidación
                                result = dl.EditaDetalleLiquidacion(104, idComprobacion, (byte)estatus, id_unidad, id_operador, id_proveedor, id_servicio,
                                                                    id_movimiento, fecha_liquidacion, id_liquidacion, cantidad, 0, valor_unitario, id_usuario);
                            }

                            //Validando que sea una Deshabilitación
                            else
                            {
                                //Deshabilitando Detalle de Liquidación
                                result = dl.DeshabilitaDetalleLiquidacion(id_usuario);
                            }
                        }

                        else
                        {
                            //Instanciando Excepción
                            result = new RetornoOperacion("No se puede Acceder el Detalle, Imposible su Edición");
                        }
                    }

                    //Validando que la Operación haya sido exitosa
                    if (result.OperacionExitosa)
                    {
                        //Completando Transacción
                        trans.Complete();

                        //Instanciando la Comprobación
                        result = new RetornoOperacion(idComprobacion);
                    }
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }
Exemple #15
0
 public async Task RegistrarDetalleLiquidacion(DetalleLiquidacion detalleLiquidacion)
 {
     await _context.DetalleLiquidacion.AddAsync(detalleLiquidacion);
 }
Exemple #16
0
        /// <summary>
        /// Método Público encaragdo de Actualizar el Cobro Recurrente
        /// </summary>
        /// <param name="id_liquidacion"></param>
        /// <param name="fecha_calculo"></param>
        /// <param name="id_unidad"></param>
        /// <param name="id_operador"></param>
        /// <param name="id_proveedor"></param>
        /// <param name="id_usuario"></param>
        /// <returns></returns>
        public RetornoOperacion ActualizaTotalCobroRecurrente(int id_liquidacion, DateTime fecha_calculo, int id_unidad, int id_operador,
                                                              int id_proveedor, int id_usuario)
        {
            //Declarando Objetos de Retorno
            RetornoOperacion result           = new RetornoOperacion();
            RetornoOperacion resultDetalleLiq = new RetornoOperacion();

            //Declarando Variables Auxiliares
            decimal saldo_actual = 0.00M;

            //Inicializando Bloque Transaccional
            using (TransactionScope trans = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted))
            {
                //Instanciando Tipo de Cobro Recurrente
                using (TipoCobroRecurrente tcr = new TipoCobroRecurrente(this._id_tipo_cobro_recurrente))
                {
                    //Obteniendo Dias
                    TimeSpan dias = fecha_calculo - this._fecha_ultimo_cobro;
                    //Asignando Estatus
                    byte id_estatus = this._id_estatus_termino;

                    //Declarando Cantidad
                    decimal cantidad = 0;

                    //Validando Estatus del Cobro Recurrente
                    switch ((EstatusTermino)this._id_estatus_termino)
                    {
                    case EstatusTermino.Vigente:
                    {
                        //Obteniendo Saldo Actual
                        saldo_actual = CalculaSaldoActual(fecha_calculo);

                        //Obteniendo Cantidad
                        cantidad = dias.Days / this.dias_cobro;

                        //Validando que el Tipo de Aplicación sea Descuento
                        if (tcr.id_tipo_aplicacion == 2)
                        {
                            //Total Actual Auxiliar
                            saldo_actual = saldo_actual >= this._saldo ? this._saldo : saldo_actual;

                            //Obteniendo Estatus
                            id_estatus = saldo_actual == this._saldo ? (byte)EstatusTermino.Terminado : this._id_estatus_termino;

                            //Calculando Cantidad
                            cantidad = Convert.ToDecimal(saldo_actual / monto_cobro);
                        }
                        break;
                    }

                    case EstatusTermino.Pausa:
                    {
                        //Asignando Valores
                        cantidad     = 0;
                        id_estatus   = (byte)EstatusTermino.Vigente;
                        saldo_actual = 0;
                        break;
                    }
                    }

                    //Insertando Detalle de Liquidación
                    resultDetalleLiq = DetalleLiquidacion.InsertaDetalleLiquidacion(77, this._id_cobro_recurrente, DetalleLiquidacion.Estatus.Liquidado, id_unidad, id_operador,
                                                                                    id_proveedor, 0, 0, fecha_calculo, id_liquidacion, cantidad, 0, this._monto_cobro, id_usuario);

                    //Validando si la Operación fue exitosa
                    if (resultDetalleLiq.OperacionExitosa)
                    {
                        //Instanciando Detalle de Liquidación
                        using (DetalleLiquidacion dl = new DetalleLiquidacion(resultDetalleLiq.IdRegistro))
                        {
                            //Cantidad Entera
                            int cantidad_int = Decimal.ToInt32(cantidad);

                            //Validando Estatus
                            if ((EstatusTermino)this._id_estatus_termino == EstatusTermino.Pausa)
                            {
                                //Obteniendo Cantidad
                                cantidad_int = dias.Days / this.dias_cobro;
                            }

                            //Calculando Fecha del Ultimo Cobro con respecto a la cantidad por los dias
                            DateTime fecha_cobro = this._fecha_ultimo_cobro.AddDays(cantidad_int * this._dias_cobro);

                            //Actualizando Registro
                            result = this.actualizaRegistros(this._id_tipo_cobro_recurrente, this._id_compania_emisor, this._total_deuda, this.total_cobrado + saldo_actual,
                                                             this._monto_cobro, this._tasa_monto, this._dias_cobro, this._id_tipo_entidad_aplicacion, this._id_unidad, this._id_operador,
                                                             this._id_proveedor_compania, this._id_empleado, this._referencia, this._fecha_inicial, fecha_cobro,
                                                             id_estatus, this._id_tabla, this._id_registro, id_usuario, this._habilitar);

                            //Validando que la Operación haya sido Completada
                            if (result.OperacionExitosa)
                            {
                                //Completando Transacción
                                trans.Complete();
                            }
                        }
                    }
                    else
                    {
                        //Instanciando Excepcion
                        result = new RetornoOperacion(resultDetalleLiq.Mensaje);
                    }
                }
            }
            //Devolviendo Resultado Obtenido
            return(result);
        }