Exemple #1
0
 public function getIngresosDePropietarioEntreFechas($user_id, $fDesde, $fHasta)
 {
     $criteria = new CDbCriteria();
     $criteria->join = 'join cuenta_corriente cc on cc.id = t.cuenta_corriente_id ' . '      join contrato c on c.id = cc.contrato_id ' . '      join departamento d on d.id = c.departamento_id ' . '      join propiedad p on p.id = d.propiedad_id ' . '      join propietario pp on pp.id = p.propietario_id ';
     $criteria->condition = 'tipo = :tipo and fecha >= :fDesde and fecha < :fHasta and pp.usuario_id = :usuario_id';
     $criteria->params = array(':fDesde' => $fDesde, ':fHasta' => $fHasta, ':usuario_id' => $user_id, ':tipo' => Tools::MOVIMIENTO_TIPO_ABONO);
     $criteria->order = "t.fecha ASC";
     return Movimiento::model()->findAll($criteria);
 }
 public function movimientosDeMes($mes, $agno)
 {
     $proxMes = $mes + 1;
     $proxAgno = $agno;
     if ($proxMes > 12) {
         $proxMes = 1;
         $proxAgno = $agno + 1;
     }
     $fDesde = $agno . "-" . str_pad($mes, 2, "0", STR_PAD_LEFT) . "-01";
     $fHasta = $proxAgno . "-" . str_pad($proxMes, 2, "0", STR_PAD_LEFT) . "-01";
     $movimientos = Movimiento::model()->findAll(array('condition' => 'fecha >= :fDesde and fecha < :fHasta and cuenta_corriente_id = :cta and validado = 1', 'params' => array(':fDesde' => $fDesde, ':fHasta' => $fHasta, ':cta' => $this->id)));
     return $movimientos;
 }
 public function actionAdminAbonos()
 {
     $model = new Contrato('search');
     $model->unsetAttributes();
     // clear any default values
     if (isset($_GET['Contrato'])) {
         $model->attributes = $_GET['Contrato'];
     }
     $meses = array();
     for ($i = 1; $i <= 12; $i++) {
         $meses[] = array('id' => str_pad($i, 2, "0", STR_PAD_LEFT), 'nombre' => Tools::fixMes($i));
     }
     $agnos = array();
     $agnoInicio = 2000;
     $agnoFin = (int) date('Y') + 10;
     for ($i = $agnoInicio; $i < $agnoFin; $i++) {
         $agnos[] = array('id' => $i, 'nombre' => $i);
     }
     $filtroModel = new EstadoCuentaForm();
     $filtroModel->agnoH = date('Y');
     $filtroModel->mesH = date('m');
     if ($filtroModel->mesH == '01') {
         $filtroModel->mesD = '12';
         $filtroModel->agnoD = (int) $filtroModel->agnoH - 1;
     } else {
         $mes = (int) $filtroModel->mesH;
         $filtroModel->mesD = str_pad($mes - 1, 2, "0", STR_PAD_LEFT);
         $filtroModel->agnoD = $filtroModel->agnoH;
     }
     if (isset($_POST['EstadoCuentaForm'])) {
         $filtroModel->attributes = $_POST['EstadoCuentaForm'];
         Yii::import('ext.phpexcel.XPHPExcel');
         $objPHPExcel = XPHPExcel::createPHPExcel();
         $sheet = $objPHPExcel->getActiveSheet();
         $contrato = Contrato::model()->findByPk($filtroModel->contratoId);
         if ($contrato == null) {
             die;
         }
         if (!$contrato->estaAsociadoAPropietario(Yii::app()->user->id)) {
             die;
         }
         $sheet->setCellValue('A1', 'Movimientos de Cliente');
         $sheet->mergeCells("A1:L1");
         $sheet->getStyle("A1")->getFont()->setSize(15);
         $sheet->setCellValue('A3', 'Nombre: ');
         $sheet->setCellValue('B3', $contrato->cliente->usuario->nombre . " " . $contrato->cliente->usuario->apellido);
         $sheet->setCellValue('F3', 'Fecha Consulta: ' . date('d/m/Y'));
         $sheet->setCellValue('A4', 'Propiedad: ');
         $sheet->setCellValue('B4', $contrato->departamento->propiedad->nombre);
         $sheet->setCellValue('C4', "Departamento: ");
         $sheet->setCellValue('D4', $contrato->departamento->numero);
         $sheet->getStyle("A3")->getFont()->setSize(13);
         $sheet->getStyle("B3")->getFont()->setSize(13);
         $sheet->getStyle("F3")->getFont()->setSize(13);
         $sheet->getStyle("A4")->getFont()->setSize(13);
         $sheet->getStyle("B4")->getFont()->setSize(13);
         $sheet->getStyle("C4")->getFont()->setSize(13);
         $sheet->getStyle("D4")->getFont()->setSize(13);
         $sheet->setCellValue('A5', "Rango de fechas consultado");
         $sheet->getStyle("A5")->getFont()->setSize(13);
         $sheet->setCellValue('A6', "Desde:");
         $sheet->getStyle("A6")->getFont()->setSize(13);
         $sheet->setCellValue('B6', Tools::fixMes($filtroModel->mesD) . " " . $filtroModel->agnoD);
         $sheet->getStyle("B6")->getFont()->setSize(13);
         $fechaDesde = $filtroModel->agnoD . "-" . $filtroModel->mesD . "-" . "01";
         if ($filtroModel->desdeInicio == '1') {
             $sheet->setCellValue('A6', "Desde inicio del Contrato:");
             $sheet->setCellValue('B6', Tools::backFecha($contrato->fecha_inicio));
             $fechaDesde = $contrato->fecha_inicio;
         }
         if ($filtroModel->desdeSaldo0 == '1') {
             $movimiento = Movimiento::model()->findByPk($contrato->cuentaCorriente->idMovUltimoSaldo0());
             if ($movimiento != null) {
                 $sheet->setCellValue('A6', "Desde último saldo 0:");
                 $sheet->setCellValue('B6', Tools::backFecha($movimiento->fecha));
                 $fechaDesde = $movimiento->fecha;
             } else {
                 $sheet->setCellValue('A6', "Desde último saldo 0:");
                 $sheet->setCellValue('B6', "No hay saldo 0 ");
                 $fechaDesde = $contrato->fecha_inicio;
             }
         }
         $fechaArr = explode("-", $fechaDesde);
         $filtroModel->mesD = $fechaArr[1];
         $filtroModel->agnoD = $fechaArr[0];
         $sheet->setCellValue('A7', "Hasta:");
         $sheet->getStyle("A7")->getFont()->setSize(13);
         $sheet->setCellValue('B7', Tools::fixMes($filtroModel->mesH) . " " . $filtroModel->agnoH);
         $sheet->getStyle("B7")->getFont()->setSize(13);
         $sheet->setCellValue('A9', "Saldo Anterior:");
         $sheet->getStyle("A9")->getFont()->setSize(13);
         $sheet->setCellValue('B9', $contrato->cuentaCorriente->saldoAFecha($fechaDesde));
         $sheet->getStyle("B9")->getFont()->setSize(13);
         if ($filtroModel->conDetalle == "1") {
             $sheet->setCellValue('A11', "Mes/Año");
             $sheet->setCellValue('B11', "Concepto");
             $sheet->setCellValue('C11', "Cargos");
             $sheet->mergeCells('C11:D11');
             $sheet->setCellValue('E1', "Abonos");
             $sheet->mergeCells('E11:F11');
             $sheet->setCellValue('C12', "Fecha");
             $sheet->setCellValue('D12', "Monto");
             $sheet->setCellValue('E12', "Fecha");
             $sheet->setCellValue('F12', "Monto");
             $sheet->getStyle("A11:F12")->getFont()->setBold(true);
             $j = 13;
         } else {
             $sheet->setCellValue('A11', "Mes/Año");
             $sheet->setCellValue('B11', "Cargos");
             $sheet->setCellValue('C11', "Abonos");
             $sheet->getStyle("A11:C11")->getFont()->setBold(true);
             $j = 12;
         }
         $meses = Tools::arregloMeses($filtroModel->mesD, $filtroModel->agnoD, $filtroModel->mesH, $filtroModel->agnoH);
         $abonos = 0;
         $cargos = 0;
         foreach ($meses as $mesArr) {
             $mes = $mesArr['mes'];
             $agno = $mesArr['agno'];
             $mesNombre = $mesArr['mesNombre'];
             if ($filtroModel->conDetalle == "1") {
                 $sheet->setCellValue('A' . $j, $mesNombre . " " . $agno);
                 $j++;
                 $movimientosMes = $contrato->cuentaCorriente->movimientosDeMes($mes, $agno);
                 foreach ($movimientosMes as $movimiento) {
                     $sheet->setCellValue('B' . $j, $movimiento->detalle);
                     if ($movimiento->tipo == Tools::MOVIMIENTO_TIPO_CARGO) {
                         $sheet->setCellValue('C' . $j, Tools::backFecha($movimiento->fecha));
                         $sheet->setCellValue('D' . $j, $movimiento->monto);
                         $cargos += $movimiento->monto;
                     } else {
                         $sheet->setCellValue('E' . $j, Tools::backFecha($movimiento->fecha));
                         $sheet->setCellValue('F' . $j, $movimiento->monto);
                         $abonos += $movimiento->monto;
                     }
                     $j++;
                 }
             } else {
                 $saldoMes = $contrato->cuentaCorriente->saldoMes($mes, $agno);
                 $sheet->setCellValue('A' . $j, $mesNombre . " " . $agno);
                 $sheet->setCellValue('B' . $j, $saldoMes['cargos']);
                 $sheet->setCellValue('C' . $j, $saldoMes['abonos']);
                 $j++;
             }
         }
         if ($filtroModel->conDetalle == "1") {
             $sheet->setCellValue('A' . $j, "SUB TOTAL");
             $sheet->setCellValue('D' . $j, $cargos);
             $sheet->setCellValue('F' . $j, $abonos);
             $j++;
         }
         $saldo = $contrato->cuentaCorriente->saldoAFecha(date('Y-m-d'));
         $sheet->setCellValue('A' . ($j + 1), "Saldo fecha consulta: ");
         $sheet->getStyle('A' . ($j + 1))->getFont()->setSize(13);
         $sheet->setCellValue('B' . ($j + 1), $saldo);
         $sheet->getStyle('B' . ($j + 1))->getFont()->setSize(13);
         $color = '00FF00';
         if ($saldo < 0) {
             $color = 'FF0000';
         }
         $sheet->getStyle("B" . ($j + 1))->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => $color))));
         // Set active sheet index to the first sheet, so Excel opens this as the first sheet
         $objPHPExcel->setActiveSheetIndex(0);
         header('Content-Type: application/vnd.ms-excel');
         header('Content-Disposition: attachment;filename="Movimientos Cliente ' . $contrato->cliente->usuario->nombre . ' ' . $contrato->cliente->usuario->apellido . '.xls"');
         header('Cache-Control: max-age=0');
         // If you're serving to IE 9, then the following may be needed
         header('Cache-Control: max-age=1');
         // If you're serving to IE over SSL, then the following may be needed
         header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
         // Date in the past
         header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
         // always modified
         header('Cache-Control: cache, must-revalidate');
         // HTTP/1.1
         header('Pragma: public');
         // HTTP/1.0
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
         $objWriter->save('php://output');
         Yii::app()->end();
     }
     Yii::app()->user->returnUrl = array('//contrato/adminAbonos');
     $this->render('adminAbonos', array('model' => $model, 'filtroModel' => $filtroModel, 'meses' => $meses, 'agnos' => $agnos));
 }
 public function actionIngresosCliente()
 {
     $model = new IngresosClienteForm();
     $propiedades = Propiedad::model()->getDeUsuario(Yii::app()->user->id);
     $meses = array();
     for ($i = 1; $i <= 12; $i++) {
         $meses[] = array('id' => str_pad($i, 2, "0", STR_PAD_LEFT), 'nombre' => Tools::fixMes($i));
     }
     $agnos = array();
     $agnoInicio = 2000;
     $agnoFin = (int) date('Y') + 10;
     for ($i = $agnoInicio; $i < $agnoFin; $i++) {
         $agnos[] = array('id' => $i, 'nombre' => $i);
     }
     $model->agnoH = date('Y');
     $model->mesH = date('m');
     if ($model->mesH == '01') {
         $model->mesD = '12';
         $model->agnoD = (int) $model->agnoH - 1;
     } else {
         $mes = (int) $model->mesH;
         $model->mesD = str_pad($mes - 1, 2, "0", STR_PAD_LEFT);
         $model->agnoD = $model->agnoH;
     }
     if (isset($_POST['IngresosClienteForm'])) {
         $model->attributes = $_POST['IngresosClienteForm'];
         Yii::import('ext.phpexcel.XPHPExcel');
         $objPHPExcel = XPHPExcel::createPHPExcel();
         $sheet = $objPHPExcel->getActiveSheet();
         $sheet->setCellValue('A1', 'Planilla de Ingresos de Cliente');
         $sheet->mergeCells("A1:K1");
         $sheet->getStyle("A1")->getFont()->setSize(20);
         $sheet->setCellValue('A2', 'Rango de Fechas: Desde ' . Tools::fixMes($model->mesD) . " de " . $model->agnoD . " hasta " . Tools::fixMes($model->mesH) . " de " . $model->agnoH);
         $sheet->mergeCells("A2:K2");
         $sheet->getStyle("A2")->getFont()->setSize(15);
         $i = 4;
         $sheet->setCellValue('A' . $i, 'Fecha');
         $sheet->setCellValue('B' . $i, 'Propiedad');
         $sheet->setCellValue('C' . $i, 'Departamento');
         $sheet->setCellValue('D' . $i, 'Nombre');
         $sheet->setCellValue('E' . $i, 'Monto');
         $sheet->getStyleByColumnAndRow(0, $i, 4, $i)->getFont()->setBold(true);
         $fDesde = $model->agnoD . "-" . str_pad($model->mesD, 2, "0", STR_PAD_LEFT) . "-01";
         $fHasta = $model->agnoH . "-" . str_pad($model->mesH, 2, "0", STR_PAD_LEFT) . "-01";
         $i++;
         $movimientos = Movimiento::model()->getIngresosDePropietarioEntreFechas(Yii::app()->user->id, $fDesde, $fHasta);
         foreach ($movimientos as $movimiento) {
             $sheet->setCellValue('A' . $i, Tools::backFecha($movimiento->fecha));
             $sheet->setCellValue('B' . $i, $movimiento->cuentaCorriente->contrato->departamento->propiedad->nombre);
             $sheet->setCellValue('C' . $i, $movimiento->cuentaCorriente->contrato->departamento->numero);
             $sheet->setCellValue('D' . $i, $movimiento->cuentaCorriente->contrato->cliente->usuario->nombre . " " . $movimiento->cuentaCorriente->contrato->cliente->usuario->apellido . " (" . $movimiento->cuentaCorriente->contrato->cliente->rut . ")");
             $sheet->setCellValue('E' . $i, $movimiento->monto);
             $i++;
         }
         /*                $meses = Tools::arregloMeses($model->mesD, $model->agnoD, $model->mesH, $model->agnoH);
         
                     $sheet->getStyleByColumnAndRow(0,$i)->getFont()->setBold(true);
                     $j = 2;
                     if($model->abonosYCargos){
                         $j = 1;
                     }
                     foreach($meses as $mesArr){
                         $sheet->setCellValueByColumnAndRow($j, $i, $mesArr['mesNombre']." de ".$mesArr['agno']);
                         $sheet->getStyleByColumnAndRow($j,$i)->getFont()->setBold(true);
                         $j++;
                     }
                     $i++;
         
                     $departamentos = Departamento::model()->findAllByAttributes(array('propiedad_id'=>$propiedad->id));
                     foreach($departamentos as $departamento){
                         $j=0;
                         $sheet->setCellValueByColumnAndRow($j,$i, $departamento->numero);
                         $sheet->getStyleByColumnAndRow($j,$i)->getFont()->setBold(true);
                         if($model->abonosYCargos){
                             $j++;
                             $sheet->setCellValueByColumnAndRow($j, $i, "Cargos");
                             $sheet->setCellValueByColumnAndRow($j, $i+1, "Abonos");
                             $sheet->getStyleByColumnAndRow($j,$i,$j,$i+1)->getFont()->setBold(true);
                             $j++;
                         }
                         else{
                             $j = 1;
                         }
                         if($departamento->contrato != null){
                             if($departamento->contrato->cuentaCorriente != null){
                                 foreach($meses as $mesArr){
                                     $saldoMes = $departamento->contrato->cuentaCorriente->saldoMes($mesArr['mes'],$mesArr['agno']);
                                     if($model->abonosYCargos){
                                         $sheet->setCellValueByColumnAndRow($j, $i, $saldoMes['cargos']);
                                         $sheet->setCellValueByColumnAndRow($j, $i+1, $saldoMes['abonos']);
                                     }
                                     else{
                                         $sheet->setCellValueByColumnAndRow($j, $i, $saldoMes['abonos']);
                                     }
                                     $j++;
                                 }
                             }
                         }
                         if($model->abonosYCargos){
                             $i+=2;
                         }
                         else{
                             $i++;
                         }
                     }
         * 
         * 
         */
         $objPHPExcel->setActiveSheetIndex(0);
         header('Content-Type: application/vnd.ms-excel');
         header('Content-Disposition: attachment;filename="Movimientos Cliente.xls"');
         header('Cache-Control: max-age=0');
         // If you're serving to IE 9, then the following may be needed
         header('Cache-Control: max-age=1');
         // If you're serving to IE over SSL, then the following may be needed
         header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
         // Date in the past
         header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
         // always modified
         header('Cache-Control: cache, must-revalidate');
         // HTTP/1.1
         header('Pragma: public');
         // HTTP/1.0
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
         $objWriter->save('php://output');
         Yii::app()->end();
     }
     $this->render('ingresosCliente', array('model' => $model, 'meses' => $meses, 'agnos' => $agnos, 'propiedades' => $propiedades));
 }
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer the ID of the model to be loaded
  */
 public function loadModel($id)
 {
     $model = Movimiento::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Exemple #6
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();
     }
 }