/** * Edita, actualiza o borrar un registro * @return array con el template y valores a renderizar */ public function editAction() { $entidad = $this->request['Recepciones']['Entidad']; $idEntidad = $this->request['Recepciones']['IDEntidad']; $idLineaEntidad = $this->request['Recepciones']['IDLineaEntidad']; switch ($this->request['accion']) { case 'G': //GUARDAR DATOS $datos = new Recepciones($this->request['Recepciones']['IDLinea']); $datos->bind($this->request['Recepciones']); if ($datos->valida($this->form->getRules())) { $datos->save(); } $this->values['errores'] = $datos->getErrores(); $this->values['alertas'] = $datos->getAlertas(); unset($datos); return $this->listAction($entidad, $idEntidad); break; case 'B': //BORRAR LINEA DE RECEPCION $datos = new Recepciones($this->request['Recepciones']['IDLinea']); $datos->erase(); $this->values['errores'] = $datos->getErrores(); unset($datos); return $this->listAction($entidad, $idEntidad); break; case 'Varios': //CREA OTRA LINEA DE RECEPCION, SI PROVIENE DE TRASPASO OBLIGO EL MISMO LOTE // Calculo las unidades totales que llevo entre todas las eventuales // lineas de recepción para la linea de pedido/traspaso/elaboración en curso $lineaRecepcion = new Recepciones(); $rows = $lineaRecepcion->cargaCondicion("sum(UnidadesNetas) as UnidadesNetas", "Entidad='{$entidad}' and IDEntidad='{$idEntidad}' and IDLineaEntidad='{$idLineaEntidad}'"); $suma = $rows[0]['UnidadesNetas']; // Propongo las unidades que faltan para la nueva linea de recepción $lineaRecepcion = new Recepciones($this->request['Recepciones']['IDLinea']); $unidades = $lineaRecepcion->getIDLineaEntidad()->getUnidades() - $suma; // Crea la linea nueva de recepción, si proviene de traspaso obligo el mismo lote $datos = new Recepciones(); $datos->setEntidad($entidad); $datos->setIDEntidad($idEntidad); $datos->setIDLineaEntidad($idLineaEntidad); $datos->setIDAlmacen($lineaRecepcion->getIDAlmacen()->getIDAlmacen()); $datos->setIDAlmacenero($lineaRecepcion->getIDAlmacenero()->getIDAgente()); $datos->setIDArticulo($lineaRecepcion->getIDArticulo()->getIDArticulo()); $datos->setUnidades($unidades); $datos->setUnidadMedida($lineaRecepcion->getUnidadMedida()); $datos->setUnidadesBrutas($unidades); $datos->setUnidadesNetas($unidades); if ($entidad == 'TraspasosCab') { $datos->setIDLote($lineaRecepcion->getIDLote()->getIDLote()); } $datos->create(); $this->values['errores'] = $datos->getErrores(); $this->values['alertas'] = $datos->getAlertas(); unset($datos); unset($lineaRecepcion); return $this->listAction($entidad, $idEntidad); break; } }