/** * 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)); }
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); }
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]; } }
/** * 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; } } } }