/** * 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)); }