/** * Genera un array con la informacion necesaria para imprimir el documento * Recibe un array con los ids de inventario * * @param array $idsDocumento Array con los ids de inventario * @return array Array con dos elementos: master es un objeto inventario y detail es un array de objetos lineas de inventario */ protected function getDatosDocumento(array $idsDocumento) { $master = array(); $detail = array(); // Recorro el array de los inventarios a imprimir foreach ($idsDocumento as $key => $idDocumento) { // Instancio la cabecera del inventario $master[$key] = new InventariosCab($idDocumento); // LLeno el array con objetos de lineas de inventario $lineas = array(); $inventarioLineas = new InventariosLineas(); $rows = $inventarioLineas->cargaCondicion('IDLinea', "IDInventario='{$idDocumento}'", "IDUbicacion,IDArticulo ASC"); foreach ($rows as $row) { $lineas[] = new InventariosLineas($row['IDLinea']); } $detail[$key] = $lineas; } return array('master' => $master, 'detail' => $detail); }
/** * 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; }