/** * Confirma el parte de elaboración, que consiste en: * * 1.- Reservar mercancía en el registro de existencias sin indicar lote ni ubiación * solo para aquellos artículos que estén sujetos a inventario * 2.- Poner la cabecera del parte y sus líneas de tipo 0 (salida) en estado CONFIRMADO (1) * */ public function confirma() { // Si no está confirmado if ($this->getIDEstado()->getIDTipo() == 0) { $em = new EntityManager($this->getConectionName()); $query = "SELECT t1.IDArticulo, t1.IDAlmacen, t1.Unidades, t1.UnidadMedida\n FROM {$this->_dataBaseName}.ErpManufacLineas as t1, ErpArticulos as t2\n WHERE t1.IDManufac='{$this->IDManufac}'\n AND t1.IDEstado='0'\n AND t1.Tipo='0'\n AND t1.IDArticulo=t2.IDArticulo\n AND t2.Inventario='1'"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); $exi = new Existencias(); foreach ($rows as $row) { $exi->hazReserva($row['IDAlmacen'], $row['IDArticulo'], $row['Unidades'], $row['UnidadMedida']); } unset($exi); // Marcar como Reservadas las líneas del parte de elaboración de tipo 0 (salida) $lineas = new ManufacLineas(); $lineas->queryUpdate(array("IDEstado" => '1'), "IDManufac='{$this->IDManufac}' and IDEstado='0' and Tipo='0'"); unset($lineas); // Confirmar la cabecera del parte de elaboración $this->setIDEstado(1); $this->save(); } }
private function recalcula($idAlmacen) { // Poner las reservadas y el entrando a cero $stock = new Existencias(); $stock->queryUpdate(array("Reservadas" => 0, "Entrando" => 0), "IDAlmacen='{$idAlmacen}'"); // Borrar los registros de stock que estén a cero $stock->queryDelete("IDAlmacen='{$idAlmacen}' and Reales=0 and Pales=0 and Cajas=0 and Reservadas=0 and Entrando=0"); // Calcular las reservas de los artículos inventariables $lineas = new AlbaranesLineas(); $articulos = new Articulos(); $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName(); $tablaArticulos = $articulos->getDataBaseName() . "." . $articulos->getTableName(); unset($lineas); unset($articulos); $query = "select l.IDArticulo,a.Codigo,l.Descripcion, sum(l.Unidades) Unidades,l.UnidadMedida "; $query .= "from {$tablaLineas} as l "; $query .= "join {$tablaArticulos} as a on l.IDArticulo=a.IDArticulo "; $query .= "where l.IDEstado='1' and a.Inventario='1' "; $query .= "group by l.IDArticulo"; $em = new EntityManager($_SESSION['project']['conection']); $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); unset($em); $resultado['reservas'] = $rows; foreach ($rows as $row) { $stock = new Existencias(); $stock->hazReserva($idAlmacen, $row['IDArticulo'], $row['Unidades'], $row['UnidadMedida']); } // Calcular el entrando de los artículos inventariables $lineas = new PedidosLineas(); $articulos = new Articulos(); $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName(); $tablaArticulos = $articulos->getDataBaseName() . "." . $articulos->getTableName(); unset($lineas); unset($articulos); $query = "select l.IDArticulo,a.Codigo,l.Descripcion,sum(l.Unidades) Unidades,l.UnidadMedida "; $query .= "from {$tablaLineas} as l "; $query .= "join {$tablaArticulos} as a on l.IDArticulo=a.IDArticulo "; $query .= "where l.IDEstado='1' and a.Inventario='1' "; $query .= "group by l.IDArticulo"; $em = new EntityManager($_SESSION['project']['conection']); $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); unset($em); $resultado['entrando'] = $rows; foreach ($rows as $row) { $stock = new Existencias(); $stock->hazEntrando($idAlmacen, $row['IDArticulo'], $row['Unidades'], $row['UnidadMedida']); } return $resultado; }