/** * 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(); }