Hola a tod@s
Regresamos con un tema que en esta ocasión
es sobre los “Triggers”. Primero les diremos en un resumen muy corto lo que es
esto.
Triggers de Retail POS:
Son eventos que plantea Retail POS que le
permiten insertar código personalizado antes o después de las operaciones. Hay dos tipos de disparadores:
· Pre-disparadores (Se ejecuta la acción antes de ejecutar la operación)
· Post-disparadores (Se ejecuta la acción después de ejecutar la operación)
Pre-Disparadores. Por ejemplo, si un cliente utiliza un cupón
para una compra, se puede utilizar un pre-trigger para insertar código
personalizado y validar que el cupón no ha expirado o ha sido utilizado
anteriormente.
Post-disparadores. Por ejemplo, si al terminar la transacción se desea
que se imprima cupones según la cantidad
de artículos se puede utilizar un pos-trigger para esta acción.
Como vemos esto es lo que se puede hacer con los diferentes triggers que posee POS:
Ahora vamos a implementar un ejemplo del uso de un Trigger.
En este caso el ejemplo será el siguiente:
“Se necesita que el monto de la venta es mayor a $100 y permita la venta caso contrario no la permita”
Para esto realizamos lo siguiente:
1. Ingresamos a la solución Triggers/PaymentTriggers/PaymentTriggers.cs y damos ver código .
2. Vamos al método “PrePayment” como recordamos hace acciones antes de pagar.
Luego ingresamos el siguiente código que permite controlar esta acción, revisemos los comentarios de lo que realiza cada acción.
public void PrePayment(IPreTriggerResult preTriggerResult, IPosTransaction posTransaction, object posOperation, string tenderId)
{
LSRetailPosis.ApplicationLog.Log("PaymentTriggers.PrePayment", "On the start of a payment operation...", LSRetailPosis.LogTraceLevel.Trace);
if (((RetailTransaction)posTransaction).GrossAmount >= 100)//P.Silva: Valida que la venta sea mayor a 100 positiva
{
//ESTANDAR
switch ((PosisOperations)posOperation)
{
case PosisOperations.PayCash:
// Insert code here...
break;
case PosisOperations.PayCard:
// Insert code here...
break;
case PosisOperations.PayCheque:
// Insert code here...
break;
case PosisOperations.PayCorporateCard:
// Insert code here...
break;
case PosisOperations.PayCreditMemo:
// Insert code here...
break;
case PosisOperations.PayCurrency:
// Insert code here...
break;
case PosisOperations.PayCustomerAccount:
// Insert code here...
break;
case PosisOperations.PayGiftCertificate:
// Insert code here...
break;
case PosisOperations.PayLoyalty:
// Insert code here...
break;
// etc.....
}
}
else //NASIV: No permite realizar la venta si no es el valor requerido y emite un mensaje
{
LSRetailPosis.POSProcesses.frmMessage dialog = new LSRetailPosis.POSProcesses.frmMessage("El monto de la venta debe ser mayor o igual a 100 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
LSRetailPosis.POSProcesses.POSFormsManager.ShowPOSForm(dialog);
preTriggerResult.ContinueOperation = false; //NASIV: Esta acción impide realizar la acción
}
}
3. Luego de terminar nuestra programación realizamos la compilación del proyecto y cambio de DLL es decir:
Copiamos de la ruta: C:\Users\Admin\Documents\Retail SDK\POS Plug-ins\Triggers\PaymentTriggers\bin\Debug
Pegamos Dll ruta: C:\Program Files (x86)\Microsoft Dynamics AX\60\ Triggers\PaymentTriggers
Finalmente nuestra acción quedara de la
siguiente manera.
El
valor total de nuestra venta es.
En este
caso nos saldrá nuestra advertencia al intentar pagar ya que no cumple con lo requerido, esta advertencia aparte de recordatorio de la condición a cumplir retorna un valor falso como vemos en el código que impide continué la venta.
Si
el valor de la venta cumple con la condición nos dirige de inmediato al pago.
Espero les sea de gran ayuda. no duden en preguntar.
By NASIV.
No hay comentarios:
Publicar un comentario