예제 #1
0
 /**
  * Cierra el inventario.
  * 
  * Consiste en generar los movimientos de almacén necesarios
  * para dejar las existencias de cada articulo/lote/ubicación 
  * según lo indicado en las líneas de inventario
  */
 public function cierra()
 {
     $ok = true;
     // Si no está cerrado
     if ($this->Cerrado == 0) {
         $lineas = new InventariosLineas();
         $rows = $lineas->cargaCondicion("*", "IDInventario='{$this->IDInventario}'");
         unset($lineas);
         $exi = new Existencias();
         foreach ($rows as $row) {
             // Buscar la existencias que hay para calcular el mvto
             // de almacén de tal forma que se queden como dice el inventario
             $stock = $exi->cargaCondicion("*", "IDAlmacen='{$this->IDAlmacen}' and IDArticulo='{$row['IDArticulo']}' and IDLote='{$row['IDLote']}' and IDUbicacion='{$row['IDUbicacion']}'");
             $valores = array('UM' => 'UMA', 'Reales' => $row['Stock'] - $stock[0]['Reales'], 'Pales' => $row['Pales'] - $stock[0]['Pales'], 'Cajas' => $row['Cajas'] - $stock[0]['Cajas'], 'Reservadas' => 0, 'Entrando' => 0);
             /**
             if ($valores['Reales']>=0)
                 $signo = "E";
             else {
                 $signo = "S";
                 $valores['Reales'] = abs($valores['Reales']);
             }
             */
             $signo = "E";
             $mvtoAlmacen = new MvtosAlmacen();
             $ok = $mvtoAlmacen->genera('InventariosCab', $signo, $this->IDInventario, $this->IDAlmacen, $row['IDArticulo'], $row['IDLote'], $row['IDUbicacion'], 0, $valores);
             // Valores con los que actualizar
         }
         unset($exi);
         unset($mvtoAlmacen);
         // Marcar el inventario como cerrado
         if ($ok) {
             $this->setCerrado(1);
             $this->save();
         }
     }
     return $ok;
 }