/** * Siempre viene la entidad por parametro. * si viene un $options['remito_id'] es un editar y buscamos el contenido en la bd * @param null $entity * @param array $options */ public function initialize($entity = null, $options = array()) { /*=========================== COLUMNA EXTRA =====================================*/ if ($entity != null) { $columnas = $entity; foreach ($columnas as $col) { $elemento = new Text($col->getColumnaClave(), array('placeholder' => 'Ingrese ' . $col->getColumnaNombre(), 'class' => 'form-control', 'maxlength' => 60)); $elemento->setLabel($col->getColumnaNombre()); //Buscamos el contenido para el edit. if (isset($options['remito_id'])) { $remito_id = $options['remito_id']; $contenidoExtra = Contenidoextra::findFirst(array('contenidoExtra_remitoId = :remito_id: AND contenidoExtra_columnaId=:columna_id:', 'bind' => array('remito_id' => $remito_id, 'columna_id' => $col->getColumnaId()))); if ($contenidoExtra) { $elemento->setDefault($contenidoExtra->getContenidoExtraDescripcion()); } } $this->add($elemento); } } }
/** * Saves a remito edited * */ public function saveAction() { if (!$this->request->isPost()) { return $this->dispatcher->forward(array("controller" => "remito", "action" => "index")); } $remito_id = $this->request->getPost("remito_id", 'int'); $remito = Remito::findFirst(array('remito_id=:remito_id:', 'bind' => array('remito_id' => $remito_id))); if (!$remito) { $this->flash->error("El Remito no existe "); return $this->dispatcher->forward(array("controller" => "remito", "action" => "index")); } $remitoForm = new RemitoEditForm($remito, array('edit' => true, 'required' => '')); $this->view->remitoForm = $remitoForm; $data = $this->request->getPost(); if (!$remitoForm->isValid($data, $remito)) { foreach ($remitoForm->getMessages() as $message) { $this->flash->error($message); } return $this->forward('remito/edit/' . $remito_id); } $remito->setRemitoPeriodo(date('m', date(strtotime(date($this->request->getPost("remito_fecha")))))); $planilla = Planilla::findFirst(array('planilla_id=:planilla_id:', 'bind' => array('planilla_id' => $remito->getRemitoPlanillaid()))); $this->view->planilla = $planilla; if ($this->request->hasFiles() && $this->request->getUploadedFiles()[0] != NULL) { $upload = $this->guardarPDF($this->request->getUploadedFiles(), $remito->getRemitoClienteId(), $planilla->getPlanillaFecha()); if (!$upload['success']) { $this->flash->error($upload['mensaje']); $this->db->rollback(); return $this->dispatcher->forward(array("controller" => "remito", "action" => "edit", "params" => array($remito->getRemitoId()))); } $remito->setRemitoPdf($upload['path']); } //cliente $cliente = Cliente::findFirst(array('cliente_id=:cliente_id:', 'bind' => array('cliente_id' => $remito->getRemitoClienteId()))); $this->view->clienteForm = new ClienteForm($cliente, array('required' => '')); //columnas $columnas = Columna::find(array("columna_cabeceraId=:cabecera_id: AND columna_habilitado = 1 AND columna_extra = 1", 'bind' => array('cabecera_id' => $planilla->getPlanillaCabeceraid()))); if (count($columnas) != 0) { $this->view->columnaExtraForm = new ColumnaExtraForm($columnas, array('remito_id' => $remito_id)); foreach ($columnas as $col) { $contenidoExtra = Contenidoextra::findFirst(array('contenidoExtra_remitoId = :remito_id: AND contenidoExtra_columnaId=:columna_id:', 'bind' => array('remito_id' => $remito_id, 'columna_id' => $col->getColumnaId()))); if ($contenidoExtra) { $contenidoExtra->setContenidoExtraDescripcion($this->request->getPost($col->getColumnaClave())); //FIXME: Controlar que sea el nombre o la clave if (!$contenidoExtra->update()) { foreach ($contenidoExtra->getMessages() as $mensaje) { $this->flash->error($mensaje); } } } else { $contenidoExtra = new Contenidoextra(); $contenidoExtra->setContenidoExtraDescripcion($this->request->getPost($col->getColumnaClave())); $contenidoExtra->setContenidoExtraHabilitado(1); $contenidoExtra->setContenidoExtraRemitoId($remito_id); $contenidoExtra->setContenidoExtraColumnaId($col->getColumnaId()); if (!$contenidoExtra->save()) { foreach ($contenidoExtra->getMessages() as $mensaje) { $this->flash->error($mensaje); } } } } } if (!$remito->update()) { foreach ($remito->getMessages() as $message) { $this->flash->error($message); } return $this->dispatcher->forward(array("controller" => "remito", "action" => "edit", "params" => array($remito->getRemitoId()))); } $this->flash->success("EL REMITO HA SIDO ACTUALIZADO CORRECTAMENTE"); return $this->dispatcher->forward(array("controller" => "remito", "action" => "edit", "params" => array($remito->getRemitoId()))); }