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.
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
createStoreBatchpara crear un registro de lote, el estado del lote cambia a 1100, que indicalote abierto
y el lote se asigna al empleado de tienda actual. Todas las líneas de envío que haya devuelto la APIgetStoreBatchListpara dicho lote se pasan a la APIcreateStoreBatch, que devuelve los atributosBatchNoyStoreBatchKey. 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 valorAssignedToUserIDdel 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 APIEl empleado de tienda puede explorar un código de barras de producto para seleccionar un producto o seleccionar manualmente el producto.
getStoreBatchDetailspara captar el lote y los productos del lote. El lote se recupera mediante los atributos obligatoriosStoreBatchKeyoBatchNoyOrganizationCode. Si no se pasan estos atributos, la API genera un error. Si no hay ningún registro que corresponda aStoreBatchKey, la API genera un error.- La API
getStoreBatchDetailsllama, internamente, a la APIgetShipmentLineListpara recuperar el atributoStoreBatchKeyque 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
ItemIDyUnitOfMeasureson comunes para dos líneas de envío, se forma una sola línea de lote para el producto. - Si el atributo
PickLocationSeqse establece a nivel deShipmentLine, 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 usuarioYCDGetBatchPickPriorityUE. - 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=Nse 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.
- 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 APIregisterBatchPickcon el atributoModeestablecido enSCANy la API utiliza el atributoStoreBatchKeypara determinar el atributoBatchType, que esSORT_WHILE_PICKING. La lógica siguiente se ejecuta internamente:- Se llama a la API
translatebar codecon el atributobar codeDataybar codeTypeestablecido enItempara captar la información del producto. - Se recuperan las líneas de envío que tengan el mismo
ItemIDUnitOfMeasurey el mismoBatchKeyque se haya pasado en la entrada. - Sólo se tienen en cuenta aquellas líneas de envío que tengan los atributos
BackroomPickComplete="N"eIsPickable="Y", y la línea de envío que tenga el valorBatchPickPrioritymenor se actualiza con la cantidad de recogida.
- Se llama a la API
- 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 APIregisterBatchPickcon el atributoModeestablecido enMANUALPICK, y la API utiliza el atributoStoreBatchKeypara determinar el atributoBatchType, que esSORT_WHILE_PICKING. La lógica siguiente se ejecuta internamente:- La API
registerBatchPicklee el elementoItemobligatorio de la entrada, para obtener la información sobre el producto. - Se recuperan las líneas de envío que tengan el mismo
ItemIDUnitOfMeasurey el mismoBatchKeyque se haya pasado en la entrada. - Sólo se tienen en cuenta aquellas líneas de envío que tengan los atributos
BackroomPickComplete="N"eIsPickable="Y", y la línea de envío que tenga el valorBatchPickPrioritymenor 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.
- La API
- 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
getCommonCodeListconCodeTypecomoYCD_PICK_SHORT_RESOL, para recuperar las razones de escasez. De forma predeterminada, la única razón de escasez proporcionada esEscasez de inventario
. Cuando un empleado de tienda aplicaEscasez 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 usuariohandleShortageForBatchLineUE.Se llama a la APIrecordShortageForBatchPickpara 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 APIrecordShortageForBatchPicklleva a cabo las validaciones siguientes:- Los atributos
StoreBatchKeyyShortageReason, junto con el elementoItemson 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.
- Se llama a la API
- La API
- 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
registerBatchPickse utiliza para recuperar la información de la bolsa. Para una línea de envío determinada, se consulta la tablaYFS_STORE_BATCH_LOCATIONcon los atributosShipmentKeyyBatchKey. Si se recupera un registro, el ID de bolsa se llena en el campoColocar 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 APItranslatebar codecon el atributobar codeDataybar codeTypecomoStoreToteIdpara devolverToteID. Sin embargo, si la reglade traducción requerida por Tote
está desactivada, la llamadatranslatebar codea 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 APIregisterBatchPicken modalidadUPDATEcon los atributosBackroomPickedQuantityyToteIDpara 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
getStoreBatchDetailspara renovar la pantalla y visualizar todos los productos o sólo los productos que se van a seleccionar basándose en el filtro seleccionado.
- Si un ID de bolsa aún no se ha llenado en el campo
- 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
registerBatchPickcon el atributoModeestablecido enMANUALpara 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 APIgetStoreBatchDetailspasando los atributosStoreBatchKey,ItemIDyUnitOfMeasureen 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 APIregisterBatchPickcon el atributoModeestablecido enUPDATE. En la modalidadUPDATEtienen lugar las acciones de API siguientes:StoreBatchKeyyBackroomPickedQtyse pasan en la entrada a la APIregisterBatchPickpara actualizar la línea de envío.- Se llama a la API
changeShipmentpara actualizar el atributoBackroomPickedQtyde 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 APIchangeShipmentStatuscuando 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 APIchangeShipmentStatuspara cambiar el estado del envío deListo para selección interna
aSelección interna en curso
. - Si el envío se recoge completamente, se llama adicionalmente a
changeShipmentStatuspara actualizar el estado aListo para recogida del cliente
en el caso de pedidos deRecogida en almacén
yListo para embalaje
en el caso de pedidos deEnviar desde almacén
.
Una vez que se ha actualizado el envío, la API
registerBatchPickdetermina 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
getStoreBatchLocationListcon el atributoStoreBatchKeypara 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 tipoRecogida en almacén
, seguidas de las bolsas de tipoEnviar 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 codeconbar codeTypeestablecido enStoreToteId. 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 codeconbar codeTypecomoHoldLocationpara devolver el ID de ubicación de transferencia. Sin embargo, si la reglaTraducción de ubicación de transferencia necesaria
está inhabilitada, la llamada de APItranslatebar codese 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
changeShipmentpara 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 APImanageStoreBatchpara actualizar el estado del lote a 3000 (lote finalizado). Se pasan el atributoStagedQuantityy el atributoIsStagingCompleteestablecido enYen la entrada de la APIchangeShipment, 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.YCDSortBatchLinesUEpara que la APIgetStoreBatchDetailsclasifique los productos con una implementación personalizada. - La lógica personalizada puede implementarse mediante la rutina de usuario
com.yantra.pca.ycd.japi.ue.YCDGetBatchPickPriorityUEpara que la APIcreateStoreBatchcalcule 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 APIregisterBatchPickllama después de cada actualización del atributoBackroomPickedQuantityen 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 APIrecordShortageForBatchPickinvoca.
Para obtener más información sobre las API, consulte el Javadoc.
- Cuando el empleado de tienda continúa asignando una ubicación de transferencia, se llama a la API
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
- Configure las
Resoluciones de escasez de selección interna
de la forma adecuada. De forma predeterminada, hay disponible una resolución de escasez denominadaEscasez 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 requiredestá 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:
Itempara traducciones de productosTote Idpara las traducciones de bolsa. De forma predeterminada, se proporcionan dos variaciones del tipo de código de barras:New ToteyExisting Tote.Hold Locationpara conversiones de ubicación de transferencia
YCD_Translate_Bar_Code_ExistingToteYCD_Translate_Bar_Code_NewToteYCD_Translate_Bar_Code_HoldLocation