Exemplo n.º 1
0
 /**
  * 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();
     }
 }
 /**
  * Crea las líneas de expediciones relativas al traspaso
  *
  * @param integer $idTraspaso
  */
 private function cargaLineasTraspaso($idTraspaso)
 {
     // Cargo las lineas del traspaso que no están expedidas y cuyos artículos son inventariables.
     // Borro las eventuales líneas de expedición que no están expedidas.
     $rows = array();
     $lineas = new TraspasosLineas();
     $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName();
     $articulos = new Articulos();
     $tablaArticulos = $articulos->getDataBaseName() . "." . $articulos->getTableName();
     $em = new EntityManager($lineas->getConectionName());
     if ($em->getDbLink()) {
         $query = "select l.IDLinea\n                    from {$tablaLineas} l, {$tablaArticulos} a\n                    where l.IDTraspaso = '{$idTraspaso}' and\n                          l.IDEstado = '1' and\n                          l.Tipo = '0' and\n                          l.IDArticulo = a.IDArticulo and\n                          a.Inventario = '1'\n                    order by IDLinea ASC;";
         $em->query($query);
         $rows = $em->fetchResult();
         $expediciones = new Expediciones();
         $expediciones->queryDelete("Entidad='TraspasosCab' and IDEntidad='{$idTraspaso}' and Expedida='0'");
         unset($expediciones);
         $em->desConecta();
     }
     unset($em);
     // Crea las líneas de expedición preasignando lotes y ubicaciones
     foreach ($rows as $row) {
         $this->preasignaLinea('TraspasosCab', $idTraspaso, new TraspasosLineas($row['IDLinea']));
     }
 }