Exemplo n.º 1
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $this->layout = "column1";
     $ultimoContrato = Contrato::model()->findAll(array('order' => 'folio DESC'));
     $ultimoFolio = 0;
     if ($ultimoContrato != null) {
         $ultimoFolio = (int) $ultimoContrato[0]->folio;
     }
     $folio = $ultimoFolio + 1;
     // @todo: cambiar el modelo y el formulario para contratos de 1,2,3,4,5,6 meses o indefinido
     // @todo: Impedir la creación de contratos para deptos que ya tienen
     $model = new Contrato();
     $model->folio = $folio;
     $model->dia_pago = 1;
     $model->fecha_inicio = date('d/m/Y');
     $cuentaModel = new CuentaCorriente();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     $valid = false;
     if (isset($_POST['Contrato'])) {
         // generando cuenta corriente asociada al contrato
         $model->attributes = $_POST['Contrato'];
         $model->monto_gastovariable = $_POST['Contrato']['monto_gastovariable'];
         $model->monto_mueble = $_POST['Contrato']['monto_mueble'];
         $model->monto_primer_mes = $_POST['Contrato']['monto_primer_mes'];
         $model->dias_primer_mes = $_POST['Contrato']['dias_primer_mes'];
         $model->monto_cheque = $_POST['Contrato']['monto_cheque'];
         $model->monto_castigado = $_POST['Contrato']['monto_castigado'];
         $model->reajusta_meses = $_POST['Contrato']['reajusta_meses'];
         $model->dia_pago = $_POST['Contrato']['dia_pago'];
         $model->fecha_inicio = Tools::fixFecha($model->fecha_inicio);
         $model->vigente = 1;
         $model->reajusta = 1;
         $valid = $model->validate();
         if ($valid) {
             $cuentaModel->attributes = $_POST['CuentaCorriente'];
             $cliente = $model->cliente;
             $departamento = $model->departamento;
             $cuentaModel->nombre = str_replace("-", "", $cliente->rut) . "-" . $departamento->propiedad->nombre . " (Depto." . $departamento->numero . ")";
             $model->save(FALSE);
             $cuentaModel->contrato_id = $model->id;
             $valid = $valid && $cuentaModel->validate();
             if ($valid) {
                 $cuentaModel->save(FALSE);
                 if ($valid) {
                     $model->crearDeudaMes(date('Y-m-d'));
                     $usuario = $cliente->usuario;
                     $propiedad = $departamento->propiedad;
                     //una vez que está creado el contrato, guardar la copia del docx
                     $this->doccy->newFile($model->tipo_contrato_id . '.docx');
                     $this->doccy->phpdocx->assignToHeader("", "");
                     $this->doccy->phpdocx->assignToFooter("", "");
                     $this->doccy->phpdocx->assign("#CONTRATO_FOLIO#", $model->folio);
                     $this->doccy->phpdocx->assign("#CONTRATO_FECHA_INICIO#", Tools::backFecha($model->fecha_inicio));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_RENTA#", Tools::formateaPlata($model->monto_renta));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_GASTO_COMUN#", Tools::formateaPlata($model->monto_gastocomun));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_PRIMER_MES#", Tools::formateaPlata($model->monto_primer_mes));
                     $this->doccy->phpdocx->assign("#CONTRATO_DIAS_PRIMER_MES#", $model->dias_primer_mes);
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_CHEQUE#", Tools::formateaPlata($model->monto_cheque));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_CASTIGADO#", Tools::formateaPlata($model->monto_castigado));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_MUEBLE#", Tools::formateaPlata($model->monto_mueble));
                     $this->doccy->phpdocx->assign("#CONTRATO_MONTO_GASTO_VARIABLE#", Tools::formateaPlata($model->monto_gastovariable));
                     $this->doccy->phpdocx->assign("#CONTRATO_REAJUSTA_MESES#", $model->reajusta_meses);
                     $this->doccy->phpdocx->assign("#CONTRATO_DIA_PAGO#", $model->dia_pago);
                     $this->doccy->phpdocx->assign("#CONTRATO_PLAZO#", $model->plazo);
                     $this->doccy->phpdocx->assign("#CLIENTE_RUT#", $cliente->rut);
                     $this->doccy->phpdocx->assign("#CLIENTE_NOMBRE#", $usuario->nombre);
                     $this->doccy->phpdocx->assign("#CLIENTE_APELLIDO#", $usuario->apellido);
                     $this->doccy->phpdocx->assign("#CLIENTE_EMAIL#", $usuario->email);
                     $this->doccy->phpdocx->assign("#CLIENTE_DIRECCION#", $cliente->direccion_alternativa);
                     $this->doccy->phpdocx->assign("#CLIENTE_TELEFONO#", $cliente->telefono);
                     $this->doccy->phpdocx->assign("#CLIENTE_OCUPACION#", $cliente->ocupacion);
                     $this->doccy->phpdocx->assign("#CLIENTE_RENTA#", Tools::formateaPlata($cliente->renta));
                     $this->doccy->phpdocx->assign("#PROPIEDAD_NOMBRE#", $propiedad->nombre);
                     $this->doccy->phpdocx->assign("#PROPIEDAD_DIRECCION#", $propiedad->direccion);
                     $this->doccy->phpdocx->assign("#DEPARTAMENTO_NUMERO#", $departamento->numero);
                     $this->doccy->phpdocx->assign("#DEPARTAMENTO_MT2#", $departamento->mt2);
                     $this->doccy->phpdocx->assign("#DEPARTAMENTO_DORMITORIOS#", $departamento->dormitorios);
                     $this->doccy->phpdocx->assign("#DEPARTAMENTO_ESTACIONAMIENTOS#", $departamento->estacionamientos);
                     $this->doccy->phpdocx->assign("#DEPARTAMENTO_RENTA#", Tools::formateaPlata($departamento->renta));
                     $this->renderDocx("Contrato_" . $model->folio . ".docx", false);
                     $this->redirect(array('admin'));
                 } else {
                     $model->delete();
                     $cuentaModel->delete();
                     $model->addError('id', 'No fue posible crear la cuenta asociada al contrato. Intente nuevamente');
                 }
             } else {
                 $model->delete();
             }
         }
         if (!$valid) {
             $model->fecha_inicio = Tools::backFecha($model->fecha_inicio);
         }
     }
     //$departamentos = Departamento::model()->getListWithoutContract();
     $propiedades = Propiedad::model()->findAll();
     $clientes = Cliente::model()->getList();
     $tiposContrato = TipoContrato::model()->getList();
     $this->render('create', array('model' => $model, 'ctaModel' => $cuentaModel, 'propiedades' => $propiedades, 'clientes' => $clientes, 'tiposContrato' => $tiposContrato));
 }