/**
  * Expide todas las líneas de expedición correspondientes
  * a la entidad $entidad y línea de entidad $idLineaEntidad
  *
  * @param string $entidad La entidad padre (AlbaranesCab,ManufacCab,TraspasosCab)
  * @param integer $idLineaEntidad El id de la línea de la entidad padre
  * @return float La cantidad de unidades expedidas
  */
 public function expide($entidad, $idLineaEntidad)
 {
     $unidadesExpedidas = 0;
     $rows = $this->cargaCondicion("*", "Entidad='{$entidad}' and IDLineaEntidad='{$idLineaEntidad}' and Expedida='0'");
     foreach ($rows as $row) {
         // Si no se han indicado unidades a expedir,
         // no se actualiza stock ni se genera mvto de almacen.
         if ($row['Unidades'] != 0) {
             $valores = array('UM' => $row['UnidadMedida'], 'Reales' => $row['Unidades'], 'Pales' => $row['Pales'], 'Cajas' => $row['Cajas'], 'Reservadas' => 0, 'Entrando' => 0);
             $mvtoAlmacen = new MvtosAlmacen();
             $ok = $mvtoAlmacen->genera($row['Entidad'], 'S', $row['IDEntidad'], $row['IDAlmacen'], $row['IDArticulo'], $row['IDLote'], $row['IDUbicacion'], 0, $valores);
             // Valores con los que actualizar
         }
         $unidadesExpedidas += $row['Unidades'];
         if ($ok) {
             // Marcar la linea de expedición como expedida
             $expedicion = new Expediciones($row['IDLinea']);
             $expedicion->setExpedida(1);
             $expedicion->save();
         } else {
             $expedicion = new Expediciones($row['IDLinea']);
             $expedicion->setExpedida(0);
             $expedicion->setUnidades(0);
             $expedicion->save();
             $unidadesExpedidas = 0;
         }
     }
     unset($mvtoAlmacen);
     unset($expedicion);
     return $unidadesExpedidas;
 }
 /**
  * Edita, actualiza o borrar un registro
  *
  * Viene siempre por POST
  * Actualiza o Borrar según el valor de $this->request['accion']
  *
  * @return array con el template y valores a renderizar
  */
 public function editAction()
 {
     switch ($this->request['accion']) {
         case 'G':
             //GUARDAR DATOS
             $datos = new Expediciones($this->request['Expediciones']['IDLinea']);
             $datos->bind($this->request['Expediciones']);
             if ($datos->valida($this->form->getRules())) {
                 $datos->save();
             }
             $this->values['errores'] = $datos->getErrores();
             $this->values['alertas'] = $datos->getAlertas();
             unset($datos);
             return $this->listAction($this->request['entidad'], $this->request['idEntidad']);
             break;
         case 'B':
             //BORRAR DATOS
             $datos = new Expediciones($this->request['Expediciones']['IDLinea']);
             $datos->erase();
             $this->values['errores'] = $datos->getErrores();
             unset($datos);
             return $this->listAction($this->request['entidad'], $this->request['idEntidad']);
             break;
     }
 }