/** * Recepciona todas las líneas de recepción correspondientes * a la entidad $entidad y línea de entidad $idLineaEntidad * * @param string $entidad La entidad padre (PedidosCab,ManufacCab,TraspasosCab) * @param integer $idLineaEntidad El id de la línea de la entidad padre * @return float La cantidad de unidades recepcionadas */ public function recepciona($entidad, $idLineaEntidad, $flagDeposito = '0') { $unidadesRecepcionadas = 0; $rows = $this->cargaCondicion("*", "Entidad='{$entidad}' and IDLineaEntidad='{$idLineaEntidad}' and Recepcionada='0'"); foreach ($rows as $row) { $valores = array('UM' => $row['UnidadMedida'], 'Reales' => $row['UnidadesNetas'], 'Pales' => $row['Pales'], 'Cajas' => $row['Cajas'], 'Reservadas' => 0, 'Entrando' => 0); $mvtoAlmacen = new MvtosAlmacen(); $ok = $mvtoAlmacen->genera($row['Entidad'], 'E', $row['IDEntidad'], $row['IDAlmacen'], $row['IDArticulo'], $row['IDLote'], $row['IDUbicacion'], $flagDeposito, $valores); // Valores con los que actualizar $unidadesRecepcionadas += $row['UnidadesNetas']; if ($ok) { // Marcar la linea de recepción como recepcionada. $recepcion = new Recepciones($row['IDLinea']); $recepcion->setRecepcionada(1); $recepcion->save(); } else { // Ha fallado la creación/validación del movimiento. No se // marca la recepción como recepcionada $recepcion = new Recepciones($row['IDLinea']); $recepcion->setRecepcionada(0); $recepcion->setUnidadesBrutas(0); $recepcion->setUnidadesNetas(0); $recepcion->save(); $unidadesRecepcionadas = 0; } } unset($mvtoAlmacen); unset($recepcion); return $unidadesRecepcionadas; }
/** * Devuelve separados por guión la descripción de los lotes * que se han recibido en la línea de pedido * * @return string Descripcion de los lotes */ public function getLotesRecibidos() { $recepcion = new Recepciones(); $lotes = $recepcion->getLotes("PedidosCab", $this->IDLinea); unset($recepcion); return $lotes; }
/** * Crea una línea de recepcion en base al objetoLinea pasado * * @param string $entidad El nombre de la entidad padre (PedidosCab, ManufacCab, TraspasosCab, ...) * @param integer $idEntidad El id de la entidad padre * @param object $objetoLinea Objeto linea hija de la entidad padre correspondiente (linea de pedido, manufactura, traspaso, ...) */ private function creaLineaRecepcion($entidad, $idEntidad, $objetoLinea) { $linea = new Recepciones(); $linea->setEntidad($entidad); $linea->setIDEntidad($idEntidad); $linea->setIDLineaEntidad($objetoLinea->getIDLinea()); $linea->setIDAlmacen($objetoLinea->getIDAlmacen()->getIDAlmacen()); $linea->setIDAlmacenero($_SESSION['usuarioPortal']['Id']); $linea->setIDArticulo($objetoLinea->getIDArticulo()->getIDArticulo()); $linea->setUnidades($objetoLinea->getUnidades()); $linea->setUnidadMedida($objetoLinea->getUnidadMedida()); $linea->setUnidadesBrutas($objetoLinea->getUnidades()); $linea->setUnidadesNetas($objetoLinea->getUnidades()); $linea->create(); unset($linea); }
/** * Anula la confirmación del pedido * Pasando del estado CONFIRMADO (1) a PTE. CONFIRMAR (0) * Solo se tienen en cuenta los artículos inventariables. * Anula del registro de existencias las cantidades pendientes de entrada */ public function anulaConfirmacion() { // Si está confirmado if ($this->getIDEstado()->getIDTipo() == 1) { $lineas = new PedidosLineas(); $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName(); $articulos = new Articulos(); $tablaArticulos = $articulos->getDataBaseName() . "." . $articulos->getTableName(); $em = new EntityManager($this->getConectionName()); $query = "SELECT t1.IDArticulo, t1.IDAlmacen, sum(t1.Unidades) as Entrando, t1.UnidadMedida\n FROM {$tablaLineas} as t1, {$tablaArticulos} as t2\n WHERE t1.IDPedido='{$this->IDPedido}'\n AND t1.IDEstado='1'\n AND t1.IDArticulo=t2.IDArticulo\n AND t2.Inventario='1'\n GROUP BY t1.IDArticulo, t1.IDAlmacen, t1.UnidadMedida"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); // Quitar previsión de entrada $exi = new Existencias(); foreach ($rows as $row) { $exi->quitaEntrando($row['IDAlmacen'], $row['IDArticulo'], $row['Entrando'], $row['UnidadMedida'], $this->Deposito); } unset($exi); // Marcar como NO CONFIRMADAS las líneas de pedido y // quitar la eventual asignación de lotes y UnidadesRecbidas $lineas->queryUpdate(array("IDEstado" => 0), "IDPedido='{$this->IDPedido}' and IDEstado='1'"); // Borrar las eventuales líneas de recepción $recepciones = new Recepciones(); $recepciones->queryDelete("Entidad='PedidosCab' and IDEntidad='{$this->IDPedido}'"); // Anular la reserva en la cabecera del pedido // y quitar la fecha prevista de entrega y las posibles incidencias $this->setIDEstado(0); $this->setFechaEntrega('00/00/0000'); $this->setIncidencias(''); $this->save(); } }