Example #1
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);
 }
 function Attach()
 {
     if (NULL === $this->connection) {
         $this->connection = new IpcClient(Ipc::GenSockName('theyorkerirc'), session_id());
         if (!$this->connection->Ready()) {
             $this->connection = NULL;
         }
     }
 }
Example #3
0
 public function actionExportarXLS()
 {
     // generate a resultset
     $data = Ipc::model()->findAll();
     $this->toExcel($data, array('porcentaje', 'mes', 'agno'), 'IPC', array());
 }