Plataforma heredada

Ordenar al recoger

Un empleado de tienda debe ser capaz de clasificar los productos de un lote mientras los recoge.

Un empleado de tienda puede colocar los productos de un lote en bolsas separadas para cada orden cuando recoge los productos. Después de seleccionar todos los productos, el empleado de tienda puede asignar cada bolsa a una ubicación de transferencia.

Solución

En la sección siguiente se describen las API, las rutinas de usuario, los servicios y otros componentes.

En la pantalla Lotes , un empleado de tienda puede elegir Pick un nuevo lote o Continue elegir un lote en curso.
Seleccionar nuevo lote
En la pantalla Lotes , cuando el empleado de tienda pulsa Elegir para recoger productos en un nuevo lote, se llama a la API createStoreBatch para crear un registro de lote, el estado del lote cambia a 1100, que indica lote abierto y el lote se asigna al empleado de tienda actual. Todas las líneas de envío que haya devuelto la API getStoreBatchList para dicho lote se pasan a la API createStoreBatch, que devuelve los atributos BatchNo y StoreBatchKey. Si una línea de envío ya se ha seleccionado como parte de otro lote o se está seleccionando a través de la recogida de orden única, se visualizará un mensaje de error adecuado.
Lote de recogida en curso

En la pantalla Lotes , un empleado de tienda puede pulsar Continuar para recoger productos para un lote en curso. Si el empleado de tienda no es la persona que empezó a recoger el lote, una ventana de confirmación le solicitará que confirme si desea continuar, o no, con la recogida. Si el empleado de tienda elige continuar, se llamará a la API manageStoreBatch, que actualizará el valor AssignedToUserID del lote al empleado de tienda actual.

Para obtener más información sobre las API y las validaciones, consulte el Javadoc.

Productos del lote
Se llama a la API getStoreBatchDetails para captar el lote y los productos del lote. El lote se recupera mediante los atributos obligatorios StoreBatchKey o BatchNo y OrganizationCode. Si no se pasan estos atributos, la API genera un error. Si no hay ningún registro que corresponda a StoreBatchKey, la API genera un error.
  • La API getStoreBatchDetails llama, internamente, a la API getShipmentLineList para recuperar el atributo StoreBatchKey que se pasa en la entrada. Por tanto, no se recuperan los paquetes padre para formar la línea de lote.
  • Una vez recuperadas las líneas de envío, se forman las líneas de lote para cada producto exclusivo. Si los valores ItemID y UnitOfMeasure son comunes para dos líneas de envío, se forma una sola línea de lote para el producto.
  • Si el atributo PickLocationSeq se establece a nivel de ShipmentLine, la API visualiza los productos en el orden en que deban recogerse. La secuencia en que se visualizan los productos puede personalizarse, implementando la rutina de usuario YCDGetBatchPickPriorityUE.
  • El empleado de tienda puede refinar las líneas de lote para mostrar todos los productos del lote o sólo los productos que se van a recoger. El atributo BackroomPickComplete=N se utiliza para filtrar y visualizar solamente las líneas de lote no seleccionadas.
  • La API devuelve los detalles del producto, como la imagen del producto, la ubicación de recogida, el departamento y la cantidad que se va a recoger. También se muestran los enlaces Elegir y Registrar escasez.
El empleado de tienda puede explorar un código de barras de producto para seleccionar un producto o seleccionar manualmente el producto.
  • Seleccionar productos en la modalidad SCAN : cuando el empleado de tienda explora un producto, se visualiza la pantalla asignación de bolsa . Se llama a la API registerBatchPick con el atributo Mode establecido en SCAN y la API utiliza el atributo StoreBatchKey para determinar el atributo BatchType , que es SORT_WHILE_PICKING. La lógica siguiente se ejecuta internamente:
    • Se llama a la API translatebar code con el atributo bar codeData y bar codeType establecido en Item para captar la información del producto.
    • Se recuperan las líneas de envío que tengan el mismo ItemID UnitOfMeasure y el mismo BatchKey que se haya pasado en la entrada.
    • Sólo se tienen en cuenta aquellas líneas de envío que tengan los atributos BackroomPickComplete="N" e IsPickable="Y", y la línea de envío que tenga el valor BatchPickPriority menor se actualiza con la cantidad de recogida.
  • Seleccionar productos en la modalidad MANUAL : cuando el empleado de tienda selecciona un producto y, a continuación, pulsa Elegir, se visualiza la pantalla asignación de bolsa . Se llama a la API registerBatchPick con el atributo Mode establecido en MANUALPICK, y la API utiliza el atributo StoreBatchKey para determinar el atributo BatchType, que es SORT_WHILE_PICKING. La lógica siguiente se ejecuta internamente:
    • La API registerBatchPick lee el elemento Item obligatorio de la entrada, para obtener la información sobre el producto.
    • Se recuperan las líneas de envío que tengan el mismo ItemID UnitOfMeasure y el mismo BatchKey que se haya pasado en la entrada.
    • Sólo se tienen en cuenta aquellas líneas de envío que tengan los atributos BackroomPickComplete="N" e IsPickable="Y", y la línea de envío que tenga el valor BatchPickPriority menor se actualiza con la cantidad de recogida.

    Cuando el empleado de tienda selecciona un producto, se visualiza la pantalla de asignación de bolsa donde el empleado de tienda puede proceder a colocar el producto en una bolsa. Si hay una escasez de productos durante la recogida, el empleado de tienda puede registrar la escasez antes de colocar los productos seleccionados en una bolsa.

  • Registrar escasez: el empleado de tienda puede seleccionar un producto y elegir registrar la escasez si no hay cantidades suficientes para cumplimentar el lote. Se visualiza la cantidad del producto que el empleado de tienda marca como con disponibilidad insuficiente.
    Cuando un empleado de tienda pulsa Registrar escasez para un producto en un lote, se ejecuta la lógica siguiente:
    • Se llama a la API getCommonCodeList con CodeType como YCD_PICK_SHORT_RESOL, para recuperar las razones de escasez. De forma predeterminada, la única razón de escasez proporcionada es Escasez de inventario. Cuando un empleado de tienda aplica Escasez de inventario como razón de escasez, los productos se ordenan en espera basándose en la implementación predeterminada. No obstante, si desea implementar una lógica personalizada y manejar razones de escasez personalizadas, puede utilizar la rutina de usuario handleShortageForBatchLineUE.
      Se llama a la API recordShortageForBatchPick para determinar el envío y la línea de envío que debe marcarse como que tiene disponibilidad insuficiente. El empleado de tienda recoge los productos disponibles, y el valor restante se marca como que tiene disponibilidad insuficiente. Se utiliza la razón de escasez predeterminada, Escasez de inventario.
      • Cuando el empleado de tienda elige guardar la escasez, la cantidad de escasez se actualiza en la línea de envío.
      • La API cancela el lote si todos los productos de un lote se marcan como que tienen disponibilidad insuficiente. Además de cancelar el lote, también se puede cancelar el envío, si todos los productos del envío se marcan como que tienen disponibilidad insuficiente.
      La API recordShortageForBatchPick lleva a cabo las validaciones siguientes:
      • Los atributos StoreBatchKey y ShortageReason, junto con el elemento Item son entradas obligatorias de la API. Si no se pasan las entradas obligatorias, se visualizarán los mensajes de error adecuados.
      • Si la razón de escasez no es válida, se visualizará un mensaje de error adecuado. Una vez que el empleado de tienda pulsa Aceptar, se aplica la escasez y se lleva al usuario a la pantalla original.
Adición de productos a bolsas
Después de escanear o recoger manualmente los productos, el empleado de tienda puede añadir los productos a las bolsas. En la pantalla asignación de bolsa , puede explorar una bolsa o especificar manualmente el número de bolsa en el campo Place in Tote # . Tanto para las recogidas manuales como para las exploradas, la salida de la API registerBatchPick se utiliza para recuperar la información de la bolsa. Para una línea de envío determinada, se consulta la tabla YFS_STORE_BATCH_LOCATION con los atributos ShipmentKey y BatchKey. Si se recupera un registro, el ID de bolsa se llena en el campo Colocar en nº de bolsa.
  • Si un ID de bolsa aún no se ha llenado en el campo "Colocar en nº de bolsa, el empleado de tienda puede explorar una bolsa o puede introducir, manualmente, el ID de bolsa. Una vez que se ha explorado una bolsa, se llama a la API translatebar code con el atributo bar codeData y bar codeType como StoreToteId para devolver ToteID. Sin embargo, si la regla de traducción requerida por Tote está desactivada, la llamada translatebar code a la API se omite y el valor del Place in Tote # campo se actualiza directamente en la base de datos sin ninguna traducción. Una vez que se ha escaneado o introducido una bolsa, el producto se añade a la bolsa.
  • Si ya se ha rellenado un ID de bolsa en el campo Colocar en nº de bolsa , el empleado de tienda debe pulsar Guardar para añadir un producto a la bolsa. Se llama a la API registerBatchPick en modalidad UPDATE con los atributos BackroomPickedQuantity y ToteID para actualizar la línea de envío y visualizar la información en la interfaz de usuario.
  • Si hay otras bolsas asociadas al producto, se visualizarán con la cantidad asociada del producto. El botón - está habilitado y el botón + está oculto, por lo que la cantidad no es editable.
    Notas:
    • El empleado de tienda no puede guardar la recogida hasta que se explore o introduzca una bolsa.
    • Si se deja en blanco el campo de bolsa, o un empleado de tienda introduce manualmente un ID de bolsa que ya esté asociado a otra orden, se visualizarán los mensajes de error adecuados.
  • Si el empleado de tienda pulsa Guardar, se visualizan los productos no seleccionados o todos los productos, donde el empleado de tienda puede pulsar Editar correspondiente a un producto para modificar las bolsas en la pantalla de asignación de bolsa. El empleado de tienda puede reducir la cantidad de un producto de una bolsa que tenga el SLA menor, y puede añadir el producto a una bolsa que tenga el SLA mayor, que permitirá que las órdenes de SLA superior se completen en primer lugar.
  • Se llama a la API getStoreBatchDetails para renovar la pantalla y visualizar todos los productos o sólo los productos que se van a seleccionar basándose en el filtro seleccionado.

Modificación de bolsas
Después de que el empleado de tienda añada al menos una unidad de un producto a una bolsa, la pantalla Productos se renueva y el enlace Editar está habilitado para ese producto en el lote. El empleado de tienda puede pulsar Editar para ir a la pantalla de asignación de bolsa donde se listan las bolsas en el orden ascendente de SLA.
Nota: En la modalidad de edición, el campo Colocar en nº de bolsa no se visualiza. Por tanto, el empleado de tienda no puede añadir productos a una nueva bolsa ni eliminar una bolsa existente.

Cuando el empleado de tienda pulsa Editar para un producto que se ha seleccionado parcialmente, se llama a la API registerBatchPick con el atributo Mode establecido en MANUAL para recuperar la información de bolsa para el producto. Cuando el empleado de tienda pulsa Editar para un producto que se ha seleccionado completamente, se llama a la API getStoreBatchDetails pasando los atributos StoreBatchKey, ItemIDy UnitOfMeasure en la entrada, para recuperar la información de bolsa para el producto.

Para reducir la cantidad del producto incluida en una bolsa, el empleado de tienda puede pulsar el botón -, según convenga. Se llama a la API registerBatchPick con el atributo Mode establecido en UPDATE. En la modalidad UPDATE tienen lugar las acciones de API siguientes:
  • StoreBatchKey y BackroomPickedQty se pasan en la entrada a la API registerBatchPick para actualizar la línea de envío.
  • Se llama a la API changeShipment para actualizar el atributo BackroomPickedQty de la línea de envío.
Una vez que la cantidad se ha reducido según sea necesario, el empleado de tienda pulsa Terminado en la pantalla asignación de bolsa y se realiza una comprobación de reorganización de bolsa. Si la cantidad del producto que se está reduciendo pertenece a una orden que tenga un SLA más alto que otra orden que contenga el mismo producto, será necesario llevar a cabo una reorganización de la bolsa y, en consecuencia, se visualizará un mensaje de aviso adecuado. Este mensaje de aviso informa al empleado de tienda de que tiene que completar las órdenes que tengan el SLA más alto en primer lugar. En la ventana de mensaje, el empleado de tienda puede pulsar Sí o No. Sin embargo, si la orden tiene el SLA más bajo, la reorganización de bolsa no es necesaria y el empleado de tienda vuelve a la pantalla Lotes .
Nota: Para seleccionar la cantidad del producto reducida de una bolsa, el empleado de tienda tiene que utilizar de nuevo el flujo de recogida.
Sólo se llamará a la API changeShipmentStatus cuando un lote se haya recogido completamente. Se llevan a cabo varias validaciones para cambiar el estado de los envíos; algunas de ellas son las siguientes:
  • Si el envío que corresponde a una línea de envío concreta aún no se encuentra en el estado Selección interna en curso, se llama a la API changeShipmentStatus para cambiar el estado del envío de Listo para selección interna a Selección interna en curso.
  • Si el envío se recoge completamente, se llama adicionalmente a changeShipmentStatus para actualizar el estado a Listo para recogida del cliente en el caso de pedidos de Recogida en almacén y Listo para embalaje en el caso de pedidos de Enviar desde almacén .

Una vez que se ha actualizado el envío, la API registerBatchPick determina si el proceso de recogida ha finalizado, y actualiza el estado del lote a 2000 ó 3000, donde 2000 indica que 'la recogida ha finalizado y no se ha transferido', mientras que 3000 indica que 'la recogida del lote ha finalizado'.

Asignación de una ubicación de transferencia
Una vez que todos los productos se han recogido completamente, se muestra un mensaje de confirmación adecuado y el empleado de tienda puede elegir asignar una ubicación de transferencia o finalizar el proceso de recogida por lotes. Si el empleado de tienda pulsa Asignar ubicación de transferencia, las bolsas se muestran con una acción Asignar para cada bolsa.
Nota: La asignación de una ubicación de transferencia a bolsas se basa en la regla Staging location required . Si la regla está habilitada, sólo entonces el empleado de tienda puede realizar esta tarea.
  • Cuando el empleado de tienda continúa asignando una ubicación de transferencia, se llama a la API getStoreBatchLocationList con el atributo StoreBatchKey para devolver la lista de bolsas para un lote. Las bolsas se clasifican según el método de entrega; primero se listan las bolsas de tipo Recogida en almacén, seguidas de las bolsas de tipo Enviar desde almacén.
  • A continuación, el empleado de tienda explora o introduce, manualmente, una bolsa. Si el empleado de tienda explora la bolsa, se llama a la API translatebar code con bar codeType establecido en StoreToteId. La pantalla de bolsa actual se muestra con los detalles de la bolsa que incluyen el ID de bolsa y el número de productos de la bolsa. Se visualiza un campo de ubicación de transferencia donde el empleado de tienda puede explorar el código de barras de la ubicación de transferencia o especificar el ID de ubicación manualmente.
  • Cuando el empleado de tienda explora una ubicación de transferencia, se llama a la API translatebar code con bar codeType como HoldLocation para devolver el ID de ubicación de transferencia. Sin embargo, si la regla Traducción de ubicación de transferencia necesaria está inhabilitada, la llamada de API translatebar code se omite y el valor del campo Colocar en ubicación de transferencia se actualiza directamente en la base de datos sin ninguna conversión.

    Cuando la ubicación de transferencia se explora o se especifica manualmente y el empleado de tienda pulsa Guardar, se llama a la API changeShipment para actualizar la ubicación de transferencia para la orden. A continuación, el empleado de tienda vuelve a la lista de bolsa y puede continuar asignando ubicaciones de transferencia para cada bolsa del lote. Se resalta la bolsa actualizada, y se visualiza la ubicación de transferencia. Después de haber asignado una ubicación de transferencia a cada bolsa, se llama a la API manageStoreBatch para actualizar el estado del lote a 3000 (lote finalizado). Se pasan el atributo StagedQuantity y el atributo IsStagingComplete establecido en Y en la entrada de la API changeShipment, para actualizar la línea de envío de la forma adecuada.

Rutinas de usuario:
  • La lógica personalizada puede implementarse mediante la rutina de usuario com.yantra.pca.ycd.japi.ue.YCDSortBatchLinesUE para que la API getStoreBatchDetails clasifique los productos con una implementación personalizada.
  • La lógica personalizada puede implementarse mediante la rutina de usuario com.yantra.pca.ycd.japi.ue.YCDGetBatchPickPriorityUE para que la API createStoreBatch calcule la prioridad de recogida por lotes.
  • La lógica personalizada puede implementarse para actualizar el inventario mediante la rutina de usuario com.yantra.pca.ycd.japi.ue.YCDInvokeUpdateInventoryUE, a la que la API registerBatchPick llama después de cada actualización del atributo BackroomPickedQuantity en la línea de envío.
  • El comportamiento de la aplicación al seleccionar una razón de escasez personalizada puede implementarse mediante la rutina de usuario YCDhandleShortageForBatchLineUE, que la API recordShortageForBatchPick invoca.

Para obtener más información sobre las API, consulte el Javadoc.

Detalles específicos de dispositivo

Ninguna.

Implementación

En la información siguiente se describen las reglas que deben configurarse para la característica:

  • Un empleado de tienda debe tener los permisos de recurso siguientes para poder llevara a cabo la recogida por lotes:
    • Órdenes de recogida por lotes
    • Actualizar manualmente la cantidad al recoger
    Para obtener más información sobre la administración de permisos de grupos de usuarios, consulte Administración de permisos de grupos de usuarios.
  • Configure las Resoluciones de escasez de selección interna de la forma adecuada. De forma predeterminada, hay disponible una resolución de escasez denominada Escasez en todo el inventario para la organización predeterminada. Si desea utilizar la misma resolución de escasez para una nueva empresa, debe heredar las propiedades de la organización predeterminada o utilizar los valores siguientes para crear la resolución de escasez utilizando Sterling Business Center.
    • Resolución de escasez: AllInventoryShortage
    • Nombre de resolución de escasez: Escasez de inventario

    Para obtener más información, consulte Gestionar resoluciones de escasez de selección interna. Para heredar las propiedades de la organización predeterminada, consulte Definición de la información principal de una empresa. Si crea resoluciones de escasez personalizadas, también deberá tener la implementación correspondiente. Para obtener más información, consulte Implementación de motivos de escasez personalizados.

  • El botón Asignar ubicación de transferencia sólo está visible si la regla Staging location required está habilitada a nivel de tienda en Sterling Business Center.
  • Si necesita dar soporte a la ubicación de transferencia y a las conversiones de código de barras de bolsa, configure las preferencias de conversión de código de barras de forma adecuada. Para obtener más información, consulte Configuración de preferencias de conversión de código de barras.
  • Debe configurar tipos de código de barras para la empresa. En la aplicación se utilizan los siguientes tipos de código de barras:
    • Item para traducciones de productos
    • Tote Id para las traducciones de bolsa. De forma predeterminada, se proporcionan dos variaciones del tipo de código de barras: New Tote y Existing Tote.
    • Hold Location para conversiones de ubicación de transferencia
    los tipos de código de barras deben definirse a nivel de empresa en el Gestor de aplicaciones. Los tipos de código de barras se proporcionan para la organización predeterminada. Cuando incorpora una nueva empresa, estos tipos de código de barras deben volver a crearse o copiarse de la organización predeterminada. Para implementar conversiones de código de barras, la aplicación proporciona los servicios siguientes. No obstante, puede sustituir estos servicios para que se ajusten a sus requisitos empresariales.
    • YCD_Translate_Bar_Code_ExistingTote
    • YCD_Translate_Bar_Code_NewTote
    • YCD_Translate_Bar_Code_HoldLocation