示例#1
0
 public function crearDeudaMes($fechaHoy)
 {
     //para saber cuánto tiene que pagar, tengo que consultar su debe pagar actual
     $debePagars = DebePagar::model()->findAllByAttributes(array('contrato_id' => $this->id), array('order' => 'id DESC'));
     $debePagar = null;
     $cta_id = $this->cuentaCorriente->id;
     if (count($debePagars) > 0) {
         $debePagar = $debePagars[0];
         //si ya se ha pagado otros meses, o sea no es un contrato nuevo
         //se debe crear un movimiento de cargo por cada pago que se deba efectuar al contrato
         //este arreglo sirve por si se cae algún grabar borrar todos los que habían sido guardados
         $idGuardados = array();
         //deuda de renta
         if ($this->monto_renta > 0) {
             $movimiento = new Movimiento();
             $movimiento->fecha = $fechaHoy;
             $movimiento->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
             $movimiento->monto = $debePagar->monto_renta;
             $movimiento->detalle = "Monto de Renta";
             $movimiento->validado = 1;
             $movimiento->cuenta_corriente_id = $cta_id;
             if ($movimiento->save()) {
                 $movimiento->actualizaSaldosPosteriores(-$movimiento->monto);
                 $idGuardados[] = $movimiento->id;
             } else {
                 foreach ($idGuardados as $idGuardado) {
                     $movGuardado = Movimiento::model()->findByPk($idGuardado);
                     $movGuardado->delete();
                 }
                 var_dump(CHtml::errorSummary($movimiento));
                 return;
             }
         }
         //deuda de gasto común
         if ($this->monto_gastocomun > 0) {
             $movimiento = new Movimiento();
             $movimiento->fecha = $fechaHoy;
             $movimiento->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
             $movimiento->monto = $debePagar->monto_gastocomun;
             $movimiento->detalle = "Monto de Gasto Común";
             $movimiento->validado = 1;
             $movimiento->cuenta_corriente_id = $cta_id;
             if ($movimiento->save()) {
                 $movimiento->actualizaSaldosPosteriores(-$movimiento->monto);
                 $idGuardados[] = $movimiento->id;
             } else {
                 foreach ($idGuardados as $idGuardado) {
                     $movGuardado = Movimiento::model()->findByPk($idGuardado);
                     $movGuardado->delete();
                 }
                 var_dump(CHtml::errorSummary($movimiento));
                 return;
             }
         }
         //deuda de mueble
         if ($this->monto_mueble > 0) {
             $movimiento = new Movimiento();
             $movimiento->fecha = $fechaHoy;
             $movimiento->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
             $movimiento->monto = $debePagar->monto_mueble;
             $movimiento->detalle = "Monto por Muebles";
             $movimiento->validado = 1;
             $movimiento->cuenta_corriente_id = $cta_id;
             if ($movimiento->save()) {
                 $movimiento->actualizaSaldosPosteriores(-$movimiento->monto);
                 $idGuardados[] = $movimiento->id;
             } else {
                 foreach ($idGuardados as $idGuardado) {
                     $movGuardado = Movimiento::model()->findByPk($idGuardado);
                     $movGuardado->delete();
                 }
                 var_dump(CHtml::errorSummary($movimiento));
                 return;
             }
         }
         //deuda de gasto variable
         if ($this->monto_gastovariable > 0) {
             $movimiento = new Movimiento();
             $movimiento->fecha = $fechaHoy;
             $movimiento->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
             $movimiento->monto = $debePagar->monto_gastovariable;
             $movimiento->detalle = "Monto de Gasto Variable";
             $movimiento->validado = 1;
             $movimiento->cuenta_corriente_id = $cta_id;
             if ($movimiento->save()) {
                 $movimiento->actualizaSaldosPosteriores(-$movimiento->monto);
                 $idGuardados[] = $movimiento->id;
             } else {
                 foreach ($idGuardados as $idGuardado) {
                     $movGuardado = Movimiento::model()->findByPk($idGuardado);
                     $movGuardado->delete();
                 }
                 var_dump(CHtml::errorSummary($movimiento));
                 return;
             }
         }
     } else {
         $debeNuevo = new DebePagar();
         $debeNuevo->agno = date("Y");
         $debeNuevo->mes = date("m");
         $debeNuevo->dia = $this->dia_pago;
         $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 = $this->monto_gastocomun;
         $debeNuevo->monto_gastovariable = $this->monto_gastovariable;
         $debeNuevo->monto_mueble = $this->monto_mueble;
         $debeNuevo->monto_renta = $this->monto_renta;
         $debeNuevo->save();
         $movimiento = new Movimiento();
         $movimiento->fecha = $fechaHoy;
         $movimiento->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
         $movimiento->monto = $this->monto_primer_mes;
         $movimiento->detalle = Tools::DETALLE_PRIMER_CARGO;
         $movimiento->validado = 1;
         $movimiento->cuenta_corriente_id = $cta_id;
         $movimiento->saldo_cuenta = $movimiento->cuentaCorriente->saldo_inicial - $movimiento->monto;
         $movimiento->save();
     }
 }
 public function actionCreate()
 {
     $cuenta_id = $_POST['cuenta'];
     $fecha = $_POST['fecha'];
     $monto = $_POST['monto'];
     $detalle = $_POST['detalle'];
     $tipo = $_POST['tipo'];
     $forma_pago_id = -1;
     if (isset($_POST['formaPago'])) {
         $forma_pago_id = $_POST['formaPago'];
     }
     $model = new Movimiento();
     $model->fecha = $fecha;
     $model->monto = $monto;
     $model->detalle = $detalle;
     $model->tipo = $tipo;
     if ($model->tipo == Tools::MOVIMIENTO_TIPO_CARGO) {
         $model->validado = 1;
     } else {
         $model->validado = 0;
         $model->forma_pago_id = $forma_pago_id;
     }
     $model->cuenta_corriente_id = $cuenta_id;
     $cuenta = CuentaCorriente::model()->findByPk($cuenta_id);
     if ($cuenta == null) {
         echo -1;
         die;
     } else {
         if ($cuenta->estaAsociadoPropietario(Yii::app()->user->id)) {
             $anterior = $model->findAllByAttributes(array('fecha' => $model->fecha, 'tipo' => $model->tipo, 'monto' => $model->monto, 'detalle' => $model->detalle, 'cuenta_corriente_id' => $model->cuenta_corriente_id));
             if (count($anterior) == 0) {
                 $model->saldo_cuenta = $model->cuentaCorriente->saldoAFecha($model->fecha);
                 if ($model->save()) {
                     if ($model->validado) {
                         if ($model->tipo == Tools::MOVIMIENTO_TIPO_ABONO) {
                             $model->actualizaSaldosPosteriores($model->monto);
                         } else {
                             $model->actualizaSaldosPosteriores(-$model->monto);
                         }
                     } else {
                         $model->actualizaSaldosPosteriores(0);
                     }
                     echo $model->id;
                 } else {
                     echo CHtml::errorSummary($model);
                 }
             } else {
                 echo -1;
             }
             die;
         } else {
             echo -1;
             die;
         }
     }
 }
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $model->fecha = Tools::backFecha($model->fecha);
     $deptos = new Departamento('search');
     $deptos->unsetAttributes();
     if (isset($_GET['Departamento'])) {
         $deptos->attributes = $_GET['Departamento'];
     }
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Prestacion'])) {
         $model->attributes = $_POST['Prestacion'];
         $model->fecha = Tools::fixFecha($model->fecha);
         if ($model->save()) {
             $movimientosPrestacion = PrestacionGeneraMovimiento::model()->findAllByAttributes(array('prestacion_id' => $model->id));
             foreach ($movimientosPrestacion as $mov) {
                 $movimiento = $mov->movimiento;
                 if ($movimiento->tipo == Tools::MOVIMIENTO_TIPO_CARGO) {
                     $movimiento->actualizaSaldosPosteriores($movimiento->monto);
                 }
                 $mov->delete();
                 $movimiento->delete();
             }
             PrestacionADepartamento::model()->deleteAllByAttributes(array('prestacion_id' => $model->id));
             if (isset($_POST['chbDepartamentoId']) && !$model->general_prop) {
                 $cant_deptos = count($_POST['chbDepartamentoId']);
                 if ($cant_deptos != 0) {
                     $monto = (int) $model->monto / $cant_deptos;
                 }
                 foreach ($_POST['chbDepartamentoId'] as $i => $departamento) {
                     $prest_depto = new PrestacionADepartamento();
                     $prest_depto->departamento_id = $departamento;
                     $prest_depto->prestacion_id = $model->id;
                     if ($prest_depto->validate()) {
                         $prest_depto->save();
                     }
                     if ($model->genera_cargos == "1") {
                         $cargo = new Movimiento();
                         $contrato = Contrato::model()->findByAttributes(array('departamento_id' => $departamento, 'vigente' => 1));
                         if ($contrato != null) {
                             if ($contrato->vigente) {
                                 $cargo->cuenta_corriente_id = $contrato->cuentaCorriente->id;
                             } else {
                                 continue;
                             }
                         } else {
                             continue;
                         }
                         $cargo->fecha = $model->fecha;
                         $cargo->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
                         $cargo->monto = $monto;
                         $cargo->detalle = "PRESTACIÓN REALIZADA: " . $model->descripcion;
                         $cargo->validado = 1;
                         $cargo->saldo_cuenta = $cargo->ultimoSaldo();
                         $cargo->save();
                         $cargo->actualizaSaldosPosteriores(-$monto);
                         $prestacionMovimiento = new PrestacionGeneraMovimiento();
                         $prestacionMovimiento->prestacion_id = $model->id;
                         $prestacionMovimiento->movimiento_id = $cargo->id;
                         $prestacionMovimiento->save();
                     }
                 }
             }
             if ($model->general_prop) {
                 if ($model->genera_cargos == "1") {
                     //se crean los cargos para los deptos
                     $departamentos = Departamento::model()->getVigentesDePropiedad($model->propiedad_id);
                     $cant_deptos = count($departamentos);
                     if ($cant_deptos != 0) {
                         $monto = (int) $model->monto / $cant_deptos;
                         foreach ($departamentos as $depto) {
                             $cargo = new Movimiento();
                             if ($depto->contrato != null) {
                                 if ($depto->contrato->vigente) {
                                     $cargo->cuenta_corriente_id = $depto->contrato->cuentaCorriente->id;
                                 } else {
                                     continue;
                                 }
                             } else {
                                 continue;
                             }
                             $cargo->fecha = $model->fecha;
                             $cargo->tipo = Tools::MOVIMIENTO_TIPO_CARGO;
                             $cargo->monto = $monto;
                             $cargo->detalle = "PRESTACIÓN REALIZADA: " . $model->descripcion;
                             $cargo->validado = 1;
                             $cargo->saldo_cuenta = $cargo->ultimoSaldo();
                             $cargo->save();
                             $cargo->actualizaSaldosPosteriores(-$monto);
                             $prestacionMovimiento = new PrestacionGeneraMovimiento();
                             $prestacionMovimiento->prestacion_id = $model->id;
                             $prestacionMovimiento->movimiento_id = $cargo->id;
                             $prestacionMovimiento->save();
                         }
                     }
                 }
             }
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('update', array('model' => $model, 'departamentos' => $deptos));
 }