/** * Anula la confirmacion de la orden de traspaso, que consiste en: * * 1.- Quitar la reserva de mercancia en el registro de existencias sin indicar lote ni ubicacion * solo para aquellos artículos que estén sujetos a inventario * 2.- Poner la cabecera de la orden de traspaso y sus lineas en estado PTE. DE CONFIRMAR (0) * */ public function anulaConfirmacion() { // Si está confirmado if ($this->getIDEstado()->getIDTipo() == 1) { $em = new EntityManager($this->getConectionName()); $query = "SELECT t1.IDArticulo, t1.IDAlmacen, t1.Unidades, t1.UnidadMedida\n FROM {$this->_dataBaseName}.ErpTraspasosLineas as t1, ErpArticulos as t2\n WHERE t1.IDTraspaso='{$this->IDTraspaso}'\n AND t1.Tipo='0'\n AND t1.IDEstado='1'\n AND t1.IDArticulo=t2.IDArticulo\n AND t2.Inventario='1'"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); // Quitar las reservas $exi = new Existencias(); foreach ($rows as $row) { $exi->quitaReserva($row['IDAlmacen'], $row['IDArticulo'], $row['Unidades'], $row['UnidadMedida']); } unset($exi); // Poner en estado de PTE DE CONFIRMAR las líneas de la orden de traspaso de tipo 0 (salida) $lineas = new TraspasosLineas(); $lineas->queryUpdate(array("IDEstado" => 0), "IDTraspaso='{$this->IDTraspaso}' and IDEstado='1' and Tipo='0'"); unset($lineas); // Borrar las eventuales lineas de expedicion $expediciones = new Expediciones(); $expediciones->queryDelete("Entidad='TraspasosCab' and IDEntidad='{$this->IDTraspaso}'"); unset($expediciones); // Anular la reserva en la cabecera de la orden de traspaso $this->setIDEstado(0); $this->save(); } }