Manuales POS



VENT_SAD_03_Órdenes Servicio a Domicilio

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

No se respetó promoción en una venta de servicio a domicilio realizada desde la aplicación móvil.
El cliente compró en app por sd la orden viene marcada con 3 piezas de diclofenaco y 1 colágeno hidrolizado, pero al momento de cerrar la venta en el ticket de la venta le cobra 4 piezas de diclofenaco y 2 piezas de colágeno hidrolizado aparte le regalo 1 pieza de diclofenaco y 1 pieza de colágeno afectando mi inventario y el faltante del efectivo por la cantidad de $135.00 en adjunto envió la orden de compra y el ticket de la vent

 

Impacto a la operación

La operación no se ve afectada directamente ya que a pesar de esta incidencia se pudo seguir operando con normalidad.

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.

POSDB_OR

Usuario y contraseña para acceder

   

Procedimiento de diagnóstico

Paso 1: Para comenzar con el análisis de la incidencia se procede a revisar la descripción del ticket, la investigación y los archivos anexados si es que los hay, esto con el objetivo de comprender lo mejor posible el problema reportado.

Paso 2: Se comienza revisando el log del monedero del servidor WSC para identificar el request y el response de Origis respecto a la venta reportada y se encuentra lo siguiente:

 Request: 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Header> 
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">https://pos.monederodelahorro.net/online2/getPuntosProductos</Action> 
</s:Header> 
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<getPuntosProductos xmlns="https://pos.monederodelahorro.net/online2/"> 
<sTarjeta>9600043632209</sTarjeta> 
<sSucId>1106</sSucId> 
<sCajaId>22</sCajaId> 
<sTerminalId>147136</sTerminalId> 
<sSessionId>13319619215</sSessionId> 
<sArticulos>7503006569890,3,45,135|7502276850844,1,78.99994400,78.99994400</sArticulos> 
<sAuthCode>d98c9ff72fb6dbd0843d61e81bcdb2bd</sAuthCode> 
</getPuntosProductos> 
</s:Body> 
</s:Envelope> 
Response: 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" /> 
<soap:Body> 
<getPuntosProductosResponse xmlns="https://pos.monederodelahorro.net/online2/"> 
<getPuntosProductosResult> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
<xs:complexType> 
<xs:choice minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="FirstTable"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="SESSION_ID" type="xs:decimal" minOccurs="0" /> 
<xs:element name="ARTICULOS" type="xs:string" minOccurs="0" /> 
<xs:element name="MSGERR" type="xs:int" minOccurs="0" /> 
<xs:element name="MENSAJE" type="xs:string" minOccurs="0" /> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:choice> 
</xs:complexType> 
</xs:element> 
</xs:schema> 
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
<NewDataSet xmlns=""> 
<FirstTable diffgr:id="FirstTable1" msdata:rowOrder="0"> 
<SESSION_ID>13319619215</SESSION_ID> 
<ARTICULOS>7503006569890,3,0,1,0,77809,0,0,0|7502276850844,1,0,1,0,86246,0,0,0</ARTICULOS> 
<MSGERR>0</MSGERR> 
<MENSAJE>Su compra participará en el programa de lealtad de Monedero del Ahorro, en el cual no hay devoluciones. Felicidades!, Usted obtuvo los siguientes productos gratis: 
7502276850844 G AHORRO COLAGENO HIDROLIZADO 30CAP 
7503006569890 G AHORRO DICLOFENACO GEL 1 G C.</MENSAJE> 
</FirstTable> 
</NewDataSet> 
</diffgr:diffgram> 
</getPuntosProductosResult> 
</getPuntosProductosResponse> 
</soap:Body> 
</soap:Envelope>

Paso 3: Vemos en el elemento ARTICULOS del request, que se compraron 3 productos.

En el elemento ARTICULOS, del response, que se compraron 3 productos 7503006569890 y tiene una bonificación de 1 y que se comprará 1 producto 7502276850844 y tendrá una bonificación de 1. Estas bonificaciones se traducen en cantidad de producto de regalo sugerido para el producto en que está asignado. Al despachar la orden el sistema muestra los productos de regalo sugeridos, para su confirmación o rechazo.

En el código, vemos que, al confirmar, le suman la cantidad de producto de regalo sugerido a la cantidad de producto vendido.

Después de esto la venta queda así: 

Producto con sku 7503006569890 con cantidad 4 

Producto son sku 7502276850844 con cantidad 2 

Si revisamos el request de la operación commitTrans del monedero vemos que se están enviando esas cantidades en el elemento <ARTICULOS> 

Request: 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Header> 
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">https://pos.monederodelahorro.net/online2/commitTrans</Action> 
</s:Header> 
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<commitTrans xmlns="https://pos.monederodelahorro.net/online2/"> 
<sTarjeta>9600043632209</sTarjeta> 
<sSucId>1106</sSucId> 
<sCajaId>22</sCajaId> 
<sTerminalId>147136</sTerminalId> 
<sSessionId>13319619215</sSessionId> 
<sArticulos>7503006569890,4,45,180|7502276850844,2,78.99994400,157.99988800</sArticulos> 
<sNumTicket>V11062200031316</sNumTicket> 
<sSaldoRedimido>0</sSaldoRedimido> 
<sImporteTotal>337.9998</sImporteTotal> 
<sFechaOperacion>20230704</sFechaOperacion> 
<sEntregaDomicilio>2</sEntregaDomicilio> 
<sFormaPago>0</sFormaPago> 
<sAuthCode>d98c9ff72fb6dbd0843d61e81bcdb2bd</sAuthCode> 
</commitTrans> 
</s:Body> 
</s:Envelope> 

Response: 

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" /> 
<soap:Body> 
<commitTransResponse xmlns="https://pos.monederodelahorro.net/online2/"> 
<commitTransResult> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
<xs:complexType> 
<xs:choice minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="FirstTable"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="SESSION_ID" type="xs:string" minOccurs="0" /> 
<xs:element name="AUTORIZACION" type="xs:string" minOccurs="0" /> 
<xs:element name="ARTICULOS" type="xs:string" minOccurs="0" /> 
<xs:element name="SALDO_PUNTOS" type="xs:decimal" minOccurs="0" /> 
<xs:element name="SALDO_DESGLOSE1" type="xs:decimal" minOccurs="0" /> 
<xs:element name="SALDO_DESGLOSE2" type="xs:decimal" minOccurs="0" /> 
<xs:element name="ABONO_RECORDPROMOCION" type="xs:int" minOccurs="0" /> 
<xs:element name="LEYENDATICKET1" type="xs:string" minOccurs="0" /> 
<xs:element name="LEYENDATICKET2" type="xs:string" minOccurs="0" /> 
<xs:element name="LEYENDATICKET3" type="xs:string" minOccurs="0" /> 
<xs:element name="MSGERR" type="xs:int" minOccurs="0" /> 
<xs:element name="MENSAJE" type="xs:string" minOccurs="0" /> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:choice> 
</xs:complexType> 
</xs:element> 
</xs:schema> 
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
<NewDataSet xmlns=""> 
<FirstTable diffgr:id="FirstTable1" msdata:rowOrder="0"> 
<SESSION_ID>13319619215</SESSION_ID> 
<AUTORIZACION>1442557066</AUTORIZACION> 
<ARTICULOS>7503006569890,3,0,1,0,77809,0,0,0|7502276850844,1,0,1,0,86246,0,0,0</ARTICULOS> 
<SALDO_PUNTOS>27.2054231600007</SALDO_PUNTOS> 
<SALDO_DESGLOSE1>30.2040034400002</SALDO_DESGLOSE1> 
<SALDO_DESGLOSE2>69.7959965599998</SALDO_DESGLOSE2> 
<ABONO_RECORDPROMOCION>0</ABONO_RECORDPROMOCION> 
<LEYENDATICKET1 /> 
<LEYENDATICKET2>Autorización: 178737359|Beneficios: |MONEDERO DEL AHORRO|1x 7502276850844 G AHORRO COLAGENO HIDROLI|OBSEQUIO||MONEDERO DEL AHORRO|1x 7503006569890 G AHORRO DICLOFENACO GEL |OBSEQUIO|</LEYENDATICKET2> 
<LEYENDATICKET3>****************************************************|Record Promoción: e$30.2|Te faltan e$69.8 para ganar e$100.|****************************************************|</LEYENDATICKET3> 
<MSGERR>0</MSGERR> 
<MENSAJE /> 
</FirstTable> 
</NewDataSet> 
</diffgr:diffgram> 
</commitTransResult> 
</commitTransResponse> 
</soap:Body> 
</soap:Envelope> 

Vemos que, en el response de commitTrans, en el elemento <ARTICULOS> lo desglosa de la siguiente forma: 

<ARTICULOS>7503006569890,3,0,1,0,77809,0,0,0|7502276850844,1,0,1,0,86246,0,0,0</ARTICULOS> 
Producto con sku 7503006569890 con cantidad 3 y cantidad de regalo 1. 
Producto son sku 7502276850844 con cantidad 1 y cantidad de regalo 1.

En el código en la clase SaleManager.cs en el método CreateSaleDetailList() vemos que se quita de la venta la cantidad de regalo, pero esto no está sucediendo, y por eso la venta se quedó como : 

Producto con sku 7503006569890 con cantidad 4 
Producto son sku 7502276850844 con cantidad 2

Paso 4: Al confirmar los productos que son sugerencias de regalo, se agregan temporalmente a la venta, pero no como regalo; se agrega como si fuera vendido (parece que así funciona el mecanismo de enviarle al servicio de Origis todas las cantidades de producto como vendidos).

Se ejecuta el servicio de commitTrans del monedero, y después se debería quitar la cantidad que se agregó antes de consumir el servicio commitTrans.

El sistema no le quitó los productos que agregó como vendidos y que eran regalo.

Paso 5: Se procede a revisar las promociones en el log del monedero del servidor WSC el response de Origis en donde se muestran los códigos de promoción correspondientes a los sku. Esto se puede observar en la siguiente imagen:

 

Paso 6: Se procede a validar los códigos de promoción en el la base de datos POSDB_OR con la siguiente consulta:

--*******Promociones*******
use posdb_or
declare @promocion INT = 86246  --77809
--*******Promociones*******
SELECT 'genPromociones', genPromociones.* FROM genPromociones
WHERE codigoPromocion in (@promocion);
SELECT 'genPromocionesCupon', genPromocionesCupon.* FROM genPromocionesCupon
WHERE codigoPromocion in (@promocion);
SELECT 'genAgrupacionSucursalesPromociones', genAgrupacionSucursalesPromociones.* FROM genAgrupacionSucursalesPromociones
WHERE codigoPromocion in (@promocion);
SELECT 'genReglasPrecioPromocion', genReglasPrecioPromocion.* FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion);
SELECT 'genReglasPromocion', genReglasPromocion.* FROM genReglasPromocion
where codigoReglaPromocion in (
SELECT codigoReglaPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion));
SELECT 'genCondicionPromocion', genCondicionPromocion.* FROM genCondicionPromocion
where codigoCondicionPromocion in (
SELECT codigoCondicionPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion));
SELECT 'genCondicionPromocionDet', genCondicionPromocionDet.* FROM genCondicionPromocionDet
where codigoCondicionPromocion in (
SELECT codigoCondicionPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion));
SELECT 'genProductoscat', genProductoscat.* 
FROM genProductoscat
where codigoProducto in (
SELECT codigoProducto 
FROM genCondicionPromocionDet
where codigoCondicionPromocion in (
SELECT codigoCondicionPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion)))
SELECT 'genProductosCodigosRelacionadosCat', genProductosCodigosRelacionadosCat.* FROM genProductosCodigosRelacionadosCat
where codigoProducto in (
SELECT codigoProducto 
FROM genCondicionPromocionDet
where codigoCondicionPromocion in (
SELECT codigoCondicionPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion)))
SELECT 'genReglasPromocionBeneficios', genReglasPromocionBeneficios.* FROM genReglasPromocionBeneficios
where codigoReglaPromocion in (
SELECT codigoReglaPromocion FROM genReglasPrecioPromocion
WHERE codigoPromocion in (@promocion));

Se puede observar que en el resultado de ambas promociones la mayoría de las tablas no tienen registros lo que nos indica que las promociones están mal configuradas a continuación se muestra un ejemplo de una promoción bien configurada:

Procedimiento de solución

Como se determinó en el proceso de diagnostico las promociones no están configuradas correctamente y por esa razón el POS no las esta aplicando provocando que los artículos que deberían ser regalados se estén cobrando, se procede a contestar el ticket en proactivanet con el siguiente mensaje:

Buenas tardes

Con gusto se brinda el apoyo, se identificó que la promoción está mal configurada lo que provoca que los puntos de venta no se aplique dicha promoción.

Se anexa documento de investigación INC 2023-243723 - PromocionesValidacion en donde se muestran los puntos a validar para estos casos.

Saludos.

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-243723

 

Glosario

Revisa el glosario del equipo de soporte de Farmacias del ahorro aqui

説明
INC 2023-243723
Categoría: Ordenes SAD
タグ
sad
最近