public function actionGenerarRecibos() { // Verifico que no estén ya generados los recibos del periodo $criteria0 = new CDbCriteria(); $criteria0->condition = "ciclo = :ciclo AND mes = :mes"; $criteria0->params = array(':mes' => 8, ':ciclo' => 2015); $rec = Recibo::model()->findAll($criteria0); $recibos = new Recibo(); $transaction = $recibos->dbConnection->beginTransaction(); try { if (count($rec) == 0) { // Por cada cuenta creo un recibo para el mes $cuentas = Cuenta::model()->findAll(); foreach ($cuentas as $cuenta) { $cta = $cuenta->idCuenta; $recibos = new Recibo(); $recibos->idCuenta = $cta; $recibos->concepto = 'CUOTA'; $recibos->fechaEmision = date('Y-m-d H:i:s'); $recibos->mes = date('m'); $recibos->ciclo = date('Y'); if (!$recibos->save()) { throw new Exception('Error al generar recibo' . CVarDumper::dumpAsString($recibos->getErrors())); Yii::log(CVarDumper::dumpAsString($recibos->getErrors()), 'error'); } // Por cada recibo creo los item de cada alumno matriculado de ese cliente $criteria = new CDbCriteria(); $criteria->condition = "idCuenta = :idCuenta"; $criteria->params = array(':idCuenta' => $cta); $matriculas = Matricula::model()->findAll($criteria); $sumaImportes = 0; foreach ($matriculas as $matricula) { $items = new ItemRecibo(); $items->idRecibo = $recibos->idRecibo; $items->idMatricula = $matricula->idMatricula; $cuota = $matricula->idCurso0->idNivel0->cuota; $desc = $matricula->idDescuento0->porcentaje; // Aplico descuentos si los tiene if ($matricula->idDescuento !== 5) { $items->importe = $cuota - $cuota * $desc / 100; } else { $items->importe = $cuota; } $items->pago = 0; $items->save(); // Calculo importe total $sumaImportes = $sumaImportes + $items->importe; } $recibos->importePendiente = $sumaImportes; $recibos->save(); } // Envio mensajes a la vista Yii::app()->user->setFlash('success', "El proceso fue realizado correctamente."); } else { Yii::app()->user->setFlash('success', "Ya existen los recibos del periodo."); } $transaction->commit(); } catch (Exception $e) { $transaction->rollback(); Yii::app()->user->setFlash('error', $e->getMessage()); } $dataProvider = new CActiveDataProvider('Recibo'); $this->render('index', array('dataProvider' => $dataProvider)); }
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array( 'id'=>'recibo-form', 'enableAjaxValidation'=>false, )); ?> <p class="help-block">Campos con <span class="required">*</span> son obligatorios.</p> <?php echo $form->errorSummary($model); ?> <?php echo $form->labelEx($model, 'idCuenta');?> <?php echo $form->dropDownList($model,'idCuenta',CHtml::listData(Cuenta::model()->findAll(array('order'=>'idCuenta')), 'idCuenta', 'idCliente'),array('empty'=>'Seleccionar..' ));?> <?php echo $form->textFieldRow($model,'ciclo',array('ciclo'=>date('YYYY')));?> <?php echo $form->textFieldRow($model,'fechaEmision', array('fechaEmision'=>date('dd-mm-yy'))) ?> <?php echo $form->textFieldRow($model,'fechaCobroCompleto') ?> <?php echo $form->dropDownList($model, 'concepto', array('CUOTA' => 'Cuota Mensual', 'MATRICULA' => 'Matricula Año Lectivo')); ?> <?php echo $form->dropDownList($model, 'mes', CHtml::listData(Meses::model()->findAll(array('order'=>'idMes')),'idMes', 'nombre'),array('empty'=>'Seleccionar..' ));?> <?php echo $form->textFieldRow($model,'importePendiente',array('class'=>'span2')); ?> <div class="form-actions"> <?php $this->widget('bootstrap.widgets.TbButton', array( 'buttonType'=>'submit', 'type'=>'primary', 'label'=>$model->isNewRecord ? 'Crear' : 'Guardar', )); ?>