예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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);
 }
예제 #4
0
 /**
  * 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();
     }
 }