Manuales POS



DEV_VENTAS_11_Error en neteo de productos al realizar devolución

Audiencia 

Este documento está pensado para ser consumido por los equipos de:

  1. Soporte Farmax OR (Niveles 1 y 2)

  2. Equipo de desarrollo TI (Farmacias del Ahorro y proveedor externo)

Descripción general

SKU ́s:
7506306247499
EGO FOR MEN GEL 200ML
DESOD NIVEA SILVER PROTECT HOM 150 4005808305766
DESOD NIVEA MEN 150 5709 4005900495709
TICKET DE VENTA: V06172000006096

 

Al iniciar el proceso de devolución es necesario capturar el folio de la venta a devolver para obtener su información, una vez se ha capturado la venta se procede a ingresar los SKUs de los artículos correspondientes, si el artículo capturado cuenta con una promoción, es requerido escanear todos los artículos con el mismo SKU y todos los artículos que tengan promoción (aunque no tengan el mismo SKU y tengan una promoción distinta), en esta parte del flujo de devoluciones aún no se persiste la devolución.

El flujo de devoluciones se lleva a cabo actualizando y persistiendo información en distintos pasos:

  1. Se solicita el folio de venta y los productos a devolver.
  2. Se ingresan los SKUs de los artículos a devolver.
  3. Se crea el folio de devolución con el estado de “N” y se persiste en la base de datos.
  4. Se solicitan los montos de devolución.
  5. Se solicita el motivo de devolución.
  6. Se actualiza la devolución al estado de “R”, se procesan y persisten los métodos de pago, si todos fueron aplicados se actualiza el estado de la devolución a “A”.
  7. Se actualiza el estado de la transacción al estado “D” si todos los productos de la transacción fueron devueltos.

Adjunto se encuentra un documento de nombre Devolucion - ingreso de datos - diagrama de secuencia.drawio.png donde es posible apreciar mejor parte de este flujo.
 

Impacto a la operación

El impacto de la operación es medio en virtud de que la operación no se ve comprometida por esta incidencia.

Criticidad

Alto

 

Medio

X

Bajo

 

 

Sistemas/módulos involucrados

POS

Precondiciones 

Aquí se debe especificar el nivel de acceso requerido por cada sistema (aplicativo o base de datos), indicando el rol o perfil necesario para para el diagnóstico y/o solución del incidente.

Procedimiento de diagnóstico

 

El error ocurre en el paso (2) del flujo, se da al intentar devolver una transacción con más de una promoción en distintos SKUs, ocurre al ingresar el segundo SKU con promoción. Se intenta realizar la devolución múltiples veces en las que se obtiene el mismo mensaje de error, como evidencia se puede consultar el log adjunto 20231206_FARMAX_TILL_SERVER_CORE.XLOG , desde la línea 4 hasta la línea 19, donde se expresa que ocurrió un error al netear los productos, esto ocurre 6 veces:

[2023-12-06 08:23:59:714],FARMAX_TILL_SERVER,CORE,ERROR,[ONEXCEPTION],ONEXCEPTION: Method: ProcessRefundQuery - Exception: El neteo de productos arrojó una cantidad negativa. El neteo de productos arrojó una cantidad negativa.       en FAhorro.POS.BusinessLogic.PriceCalculate.PromotionsRefoundManager.AuditPromotionRefound(IList`1 itemsConfiguration, IList`1 originalSaleItems, IList`1 commitedReturns, ItemQuantity newItemToReturn, IList`1 previouslyReturnedItemsInTransaction, IList`1 coupons)
         en FAhorro.POS.BusinessLogic.Refund.RefundManager.GetItemsToRefundOnPromotion(ContextTypes contextType, Int32 businessUnitId, String saleNumber, RefoundItem returnedItem, List`1 previouslyReturnedItemsInTransaction)
         en FAhorro.POS.Service.Transaction.TransactionService.ProcessRefundQuery(TransactionRefundProcessRequest request

El error ocurre en PromotionsRefoundManager, en la línea 317:


 En la siguiente figura se puede observar parte de los motivos del fallo:

  1. Se utiliza el detalle de la venta después de un mapeo (realizado en RefundManager.ConvertDetailsToPriceCalculateItems() ).
  2. Se realiza una unión con la lista de artículos que han sido ingresados por el usuario hasta el momento.
  3. Se agrupa por una serie de campos, incluyendo “LoyaltyProgram”.
  4. Se suman las cantidades (Quantity) en las agrupaciones, causando que algunas lleguen a 0.
  5. Se filtran de la lista los elementos con una cantidad (Quantity) de 0.

El error ocurre porque la propiedad LoyaltyProgram proveniente de los artículos del usuario se encuentra con el valor de “null” pero su elemento correspondiente en el detalle de la venta tiene la propiedad de LoyaltyProgram con el valor de “” (cadena vacía), aunque realmente no haya tenido una promoción.

Posibles causas

  • Error de mapeo de datos

 

Procedimiento de solución

  1. Es posible resolver este problema sustituyendo el código que realiza el mapeo en la clase RefundManager en el método ConvertDetailsToPriceCalculateItems , asignando el valor original proveniente de la base de datos, en lugar de asignar un valor por defecto, el código original es el siguiente:

Por este:


Esto hará que la información proveniente de la base de datos y la información ingresada por el usuario sean congruentes.

Validación

No aplica

Notificación de resolución

Especificar la lista de usuarios que deben ser notificados al momento que se ha confirmado la resolución de la incidencia.

Incidencias relacionadas

INC 2023-450455 
INC 2024-014336

Glosario

Revisa el glosario del equipo de soporte de Farmacias del ahorro aquí

Beschrijving
INC 2023-450455 INC 2024-014336
Categoría: Devolución de ventas
Labels
promociones devoluciones
Recentste
CORTE_CAJA_08_Arroja cortes antes del cierre de turno Vorige