Ejemplo n.º 1
0
 /**
  * Devuelve separados por guión la descripción de los lotes
  * que se han expedido en la línea de elaboración
  *
  * @return string Descripcion de los lotes
  */
 public function getLotesExpedidos()
 {
     $expedicion = new Expediciones();
     $lotes = $expedicion->getLotes("ManufacCab", $this->IDLinea);
     unset($expedicion);
     return $lotes;
 }
Ejemplo n.º 2
0
 /**
  * Expide todas las líneas de expedición correspondientes
  * a la entidad $entidad y línea de entidad $idLineaEntidad
  *
  * @param string $entidad La entidad padre (AlbaranesCab,ManufacCab,TraspasosCab)
  * @param integer $idLineaEntidad El id de la línea de la entidad padre
  * @return float La cantidad de unidades expedidas
  */
 public function expide($entidad, $idLineaEntidad)
 {
     $unidadesExpedidas = 0;
     $rows = $this->cargaCondicion("*", "Entidad='{$entidad}' and IDLineaEntidad='{$idLineaEntidad}' and Expedida='0'");
     foreach ($rows as $row) {
         // Si no se han indicado unidades a expedir,
         // no se actualiza stock ni se genera mvto de almacen.
         if ($row['Unidades'] != 0) {
             $valores = array('UM' => $row['UnidadMedida'], 'Reales' => $row['Unidades'], 'Pales' => $row['Pales'], 'Cajas' => $row['Cajas'], 'Reservadas' => 0, 'Entrando' => 0);
             $mvtoAlmacen = new MvtosAlmacen();
             $ok = $mvtoAlmacen->genera($row['Entidad'], 'S', $row['IDEntidad'], $row['IDAlmacen'], $row['IDArticulo'], $row['IDLote'], $row['IDUbicacion'], 0, $valores);
             // Valores con los que actualizar
         }
         $unidadesExpedidas += $row['Unidades'];
         if ($ok) {
             // Marcar la linea de expedición como expedida
             $expedicion = new Expediciones($row['IDLinea']);
             $expedicion->setExpedida(1);
             $expedicion->save();
         } else {
             $expedicion = new Expediciones($row['IDLinea']);
             $expedicion->setExpedida(0);
             $expedicion->setUnidades(0);
             $expedicion->save();
             $unidadesExpedidas = 0;
         }
     }
     unset($mvtoAlmacen);
     unset($expedicion);
     return $unidadesExpedidas;
 }
Ejemplo n.º 3
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();
     }
 }
Ejemplo n.º 4
0
 /**
  * Devuelve separados por guión la descripción de los lotes
  * que se han servido en la línea de traspaso
  *
  * @return string Descripcion de los lotes
  */
 public function getLotesEnviados()
 {
     $expedicion = new Expediciones();
     $lotes = $expedicion->getLotes("TraspasosCab", $this->IDLinea);
     unset($expedicion);
     return $lotes;
 }
Ejemplo n.º 5
0
 /**
  * Devuelve separados por guión la descripción de los lotes
  * que se han servido en la línea de albarán
  *
  * @return string Descripcion de los lotes
  */
 public function getLotes()
 {
     $expedicion = new Expediciones();
     $lotes = $expedicion->getLotes("AlbaranesCab", $this->IDLinea);
     unset($expedicion);
     return $lotes;
 }
 /**
  * Preasigna stock sin control de trazabilidad ni de ubicación
  *
  * Si hay stock pero no es suficiente, se crea la línea de expedición proponiendo el que hay.
  *
  * Si NO hay stock:
  *
  *   Caso 1) El artículo bloquea stock: no se crea la línea de expedición
  *   Caso 2) El artículo NO bloquea stock: se crea la línea de expedición proponiendo 0 unidades
  * 
  * @param AlbaranesLineas $lineaAlbaran
  * @param <type> $idRepartidor
  */
 private function preasignaStock($entidad, $idEntidad, $linea, $idRepartidor = '')
 {
     echo "asdfasdfasdfasdfasdf";
     $idLineaEntidad = $linea->getPrimaryKeyValue();
     $articulo = $linea->getIDArticulo();
     $idAlmacen = $linea->getIDAlmacen()->getIDAlmacen();
     $unidades = $linea->getUnidades();
     $unidadMedidaOrigen = $linea->getUnidadMedida();
     $unidadesAlmacen = $articulo->convertUnit($unidadMedidaOrigen, 'UMA', $unidades);
     $bloqueoStock = $articulo->getBloqueoStock()->getIDTipo() == '1';
     $exi = new Existencias();
     $existencias = $exi->getStock($articulo->getIDArticulo(), $idAlmacen);
     unset($exi);
     if ($existencias['RE'] >= $unidadesAlmacen) {
         $asignado = $articulo->convertUnit('UMA', $unidadMedidaOrigen, $unidadesAlmacen);
         $stockInsuficiente = false;
     } else {
         $stockInsuficiente = true;
         $asignado = $articulo->convertUnit('UMA', $unidadMedidaOrigen, $existencias['RE']);
     }
     if ($asignado <= 0 and !$bloqueoStock) {
         $asignado = 0;
     }
     $lineaExpedicion = new Expediciones();
     $lineaExpedicion->setEntidad($entidad);
     $lineaExpedicion->setIDEntidad($idEntidad);
     $lineaExpedicion->setIDLineaEntidad($idLineaEntidad);
     $lineaExpedicion->setIDAlmacen($idAlmacen);
     $lineaExpedicion->setIDAlmacenero($_SESSION['usuarioPortal']['Id']);
     $lineaExpedicion->setIDRepartidor($idRepartidor);
     $lineaExpedicion->setIDArticulo($articulo->getIDArticulo());
     if ($existencias['RE'] > 0) {
         $asignado = $existencias['RE'] > $unidadesAlmacen ? $unidadesAlmacen : $existencias['RE'];
     } else {
         $asignado = 0;
     }
     $asignado = $articulo->convertUnit('UMA', $unidadMedidaOrigen, $asignado);
     $lineaExpedicion->setUnidades($asignado);
     $lineaExpedicion->setUnidadMedida($unidadMedidaOrigen);
     $lineaExpedicion->setIDLote(0);
     $lineaExpedicion->setIDUbicacion(0);
     $lineaExpedicion->setFlagTrazabilidad(0);
     $lineaExpedicion->setFlagUbicacion(0);
     $lineaExpedicion->setFlagSinStock($stockInsuficiente);
     $lineaExpedicion->create();
 }