sábado, 30 de enero de 2016

Retail POS [AX2012] | Como usar los “Trigger” para validar eventos dentro de las funciones de Retail POS.


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