Ejemplo n.º 1
0
 /**
  * Displays a particular model.
  * @param integer $id the ID of the model to be displayed
  */
 public function actionView($id)
 {
     $contrato = Contrato::model()->findByPk($id);
     if (Yii::app()->user->rol == 'propietario') {
         if (!$contrato->estaAsociadoAPropietario(Yii::app()->user->id)) {
             throw new CHttpException(403, 'Usted no se encuentra autorizado para realizar esta acción.');
         }
     }
     $model = new DebePagar('search');
     $model->unsetAttributes();
     // clear any default values
     if (isset($_GET['DebePagar'])) {
         $model->attributes = $_GET['DebePagar'];
     }
     $this->render('view', array('model' => $model, 'contrato' => $contrato));
 }
Ejemplo n.º 2
0
 public function getSimulacionReajuste()
 {
     //si se reajusta a 6, 8 o 12 meses hay que cambiar el valor en el contrato
     //calculando según el IPC acumulado
     //entre el último reajuste realizado y ahora.
     $mes_actual = (int) date("m");
     $agno_actual = (int) date('Y');
     $mes_inicio = $mes_actual - $this->reajusta_meses;
     $agno_inicio = $agno_actual;
     if ($mes_inicio <= 0) {
         $agno_inicio -= 1;
         $mes_inicio += 12;
     }
     $ipcs = array();
     if ($agno_inicio != $agno_actual) {
         $ipcs = Ipc::model()->findAll(array('order' => 'mes', 'condition' => 'mes >= :m and agno = :a', 'params' => array(':m' => $mes_inicio, ':a' => $agno_inicio)));
         $ipcs_actual = Ipc::model()->findAll(array('order' => 'mes', 'condition' => 'mes < :m and agno = :a', 'params' => array(':m' => $mes_actual, ':a' => $agno_actual)));
         foreach ($ipcs_actual as $ipc) {
             $ipcs[] = $ipc;
         }
     } else {
         $ipcs = Ipc::model()->findAll(array('condition' => 'mes >= :m1 and mes < :m2 and agno = :a', 'params' => array(':m1' => $mes_inicio, ':m2' => $mes_actual, ':a' => $agno_actual)));
     }
     $ipc_acumulado = 0;
     foreach ($ipcs as $ipc) {
         //sumo los ipcs para generar el ipc acumulado
         $ipc_acumulado += $ipc->porcentaje;
     }
     //para hacer el cálculo según porcentaje
     $ipc_acumulado /= 100;
     //saco el último debe pagar para ver cuánto era lo que tenía que pagar antes
     $debePagars = DebePagar::model()->findAllByAttributes(array('contrato_id' => $this->id), array('order' => 'id DESC'));
     $debePagar = $debePagars[0];
     $debeNuevo = new DebePagar();
     $debeNuevo->agno = $agno_actual;
     $debeNuevo->mes = $mes_actual;
     $debeNuevo->dia = $debePagar->dia;
     $debeNuevo->contrato_id = $this->id;
     //ahora hay que reajustar los montos del contrato dependiendo del ipc_acumulado
     //el precio base debe ser el valor anterior en debe pagar
     $debeNuevo->monto_gastocomun = intval($debePagar->monto_gastocomun * (1 + $ipc_acumulado));
     $debeNuevo->monto_gastovariable = intval($debePagar->monto_gastovariable * (1 + $ipc_acumulado));
     $debeNuevo->monto_mueble = intval($debePagar->monto_mueble * (1 + $ipc_acumulado));
     $debeNuevo->monto_renta = intval($debePagar->monto_renta * (1 + $ipc_acumulado));
     return array('actual' => $debePagar, 'nuevo' => $debeNuevo);
 }
Ejemplo n.º 3
0
 public function getCantidadAPagar($fecha, $contrato_id)
 {
     $debe_pagar = DebePagar::model()->findAll(array('condition' => 'STR_TO_DATE(CONCAT(`agno`,"-",LPAD(`mes`,2,"00"),"-",LPAD(`dia`,2,"00")), "%Y-%m-%d") <= :fecha AND contrato_id = :contrato_id', 'order' => 'STR_TO_DATE(CONCAT(`agno`,"-",LPAD(`mes`,2,"00"),"-",LPAD(`dia`,2,"00")), "%Y-%m-%d") DESC', 'limit' => 1, 'params' => array(":fecha" => $fecha, ":contrato_id" => $contrato_id)));
     if (empty($debe_pagar)) {
         return null;
     } else {
         return $debe_pagar[0];
     }
 }
Ejemplo n.º 4
0
 /**
  * Indica si se han pagado todas las deudas del mes
  */
 public function estaAlDia()
 {
     $fecha_hoy = date('Y-m-d');
     $hoy = strtotime($fecha_hoy);
     $fecha_pago = date("Y-m") . $this->contrato->dia_pago;
     $pago = strtotime($fecha_pago);
     if ($hoy <= $pago) {
         $ultima_fecha = date("Y-m-d", mktime(0, 0, 0, date("m") - 1, $this->contrato->dia_pago, date("Y")));
     } else {
         $ultima_fecha = date("Y-m") . $this->contrato->dia_pago;
     }
     $debe_pagar = DebePagar::model()->getCantidadAPagar($ultima_fecha, $this->contrato->id);
     $ultimo_pago = PagoMes::model()->ultimoPago($this->contrato->id);
     if ($debe_pagar == null) {
         return true;
     } else {
         if ($ultimo_pago == null) {
             return false;
         } else {
             $fecha_ultimo_pago = strtotime($ultimo_pago->fecha);
             $fecha_debe_pagar = strtotime($debe_pagar->agno . "-" . $debe_pagar->mes . "-" . $debe_pagar->dia);
             if ($fecha_ultimo_pago > $fecha_debe_pagar) {
                 return true;
             } elseif ($fecha_ultimo_pago >= $fecha_debe_pagar) {
                 if ($debe_pagar->monto_renta == $ultimo_pago->monto_renta && $debe_pagar->monto_gastocomun == $ultimo_pago->gasto_comun && $debe_pagar->monto_mueble == $ultimo_pago->monto_mueble && $debe_pagar->monto_gastovariable == $ultimo_pago->gasto_variable) {
                     return true;
                 } else {
                     return false;
                 }
             } else {
                 return false;
             }
         }
     }
 }