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