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; } } }
public function actionExportarXLS() { // generate a resultset $data = Ipc::model()->findAll(); $this->toExcel($data, array('porcentaje', 'mes', 'agno'), 'IPC', array()); }