martes, 9 de febrero de 2016

Retail POS [AX2012] | Agregar un control personalizado para el diseño de pantalla principal de Retail POS.



Hola a tod@s

En ocasiones nos veremos en la necesidad de implementar un  control ya sea este un botón una etiqueta un área de texto, etc. en nuestra pantalla principal de Retail POS.



En esta ocasión les mostraremos cómo crear fácilmente esto  y añadirlo a los puntos de venta.


      1.       Creación del control  personalizado desde Dynamics Ax

Nos vamos a ir a la siguiente ruta en nuestro AX.
Ruta:…/Comercial/Configurar/Punto De Venta/Perfiles/Campos personalizado.

Aquí creamos nuestro campo de tipo “Control personalizado”, tenemos más opciones donde se puede agregar campos (área de totales, área de pagos y recibo) pero en este caso será personalizado.



      2.       Añadir etiqueta al campo

Nos vamos al AOT y abrimos la tabla RetailLanguageText he ingresamos un nuevo registro con el texto a mostrar en la pantalla, debería quedarnos así.

 3.       Añadir el control a la pantalla principal del POS


Nos vamos a ir a la siguiente ruta en nuestro AX.
Ruta:…/Comercial/Configurar/Punto De Venta/Diseños de pantalla
Tomamos el diseño a customizar y Damos en el botón “Deseñador” 


Desde el modo de diseñador en el botón desplegable, seleccione el diseño principal para que aparezca la barra de herramientas de personalización. Por elementos ocultos en esta sección aparecerá nuestro texto colocado en la tabla donde le pusimos nombre.


Ahora solo falta tomar el objeto y arrastrar a donde se necesite, finalmente en el diseñador quedara de la siguiente manera.

Luego para implementar el diseño ejecutamos el Job N-1090, si todo está bien veremos en nuestro POS el campo.

     4.       Creación de control personalizado

Para esto abrimos nuestra solución de services  nos vamos al proyecto BlankOperations, en esta parte damos clic derecho agregar nuevo elemento 


Luego escogemos un elemento de Windows forms / Control de usuario posteriormente damos el nombre esto es muy importante tenemos que dar el mismo nombre que dimos a nuestro campo en DynamicsAx en nuestro caso”imbsActivateReturnItem.cs”


Luego  de esto realizamos la programación de nuestro proyecto.

a.       Agregamos los elementos a usar en nuestro caso un label informativo, pueden agregar lo que quieran.


a.       Realizamos lo siguiente en nuestro código del formulario (ver los comentarios del código para guiarse)


 using System;  
 using System.Collections.Generic;  
 using System.ComponentModel;  
 using System.Drawing;  
 using System.Data;  
 using System.Linq;  
 using System.Text;  
 using System.Windows.Forms;  
 //Paquetes necesarios para la interfaz  
 using System.ComponentModel.Composition;  
 using Microsoft.Dynamics.Retail.Pos.Contracts.UI;  
 using LSRetailPosis.Transaction; //Referencia de la transaccion  
 namespace Microsoft.Dynamics.Retail.Pos.BlankOperations  
 {  
   //Contrato de datos  
   [Export(typeof(IPosCustomControl))]  
   [PartCreationPolicy(CreationPolicy.NonShared)]  
   //Contrato de datos heredamos de IPosCustomControl  
   public partial class imbsActivateReturnItem : UserControl, IPosCustomControl  
   {  
     /// <summary>  
     /// Constructor  
     /// </summary>  
     public imbsActivateReturnItem()  
     {  
       InitializeComponent();  
       this.tableLayoutPanel1.BackColor = System.Drawing.Color.Orange;  
       this.lblActivate.Text = "Activación Cambio de Articulo";  
     }  
     #region Métodos de uso de la interfaz   
     /// <summary>  
     /// Método que se llama cuando se carga la caja disposición y es donde deberá añadir el código de inicialización para su control si es necesario.  
     /// </summary>  
     /// <param name="layoutId"></param>  
     public void LoadLayout(string layoutId)  
     {  
           throw new NotImplementedException();  
     }  
     /// <summary>  
     /// Método es el principal controlador de eventos para el control y se llama cada vez que algo cambia en el objeto de la transacción  
     /// </summary>  
     /// <param name="transaction"></param>  
     public void TransactionChanged(Contracts.DataEntity.IPosTransaction transaction)  
     {  
       try  
       {  
         //Asigno el valor a label  
         RetailTransaction retailTransaction = transaction as RetailTransaction;  
         this.lblActivate.Text = retailTransaction.OperatorName;  
       }  
       catch (Exception)  
       {  
         throw new NotImplementedException();  
       }  
     }  
     #endregion  
   }  
 }  

1.       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\Services\BlankOperations\bin\Debug

Pegamos Dll ruta: C:\Program Files (x86)\Microsoft Dynamics AX\60\ Services 



Finalmente nuestra acción quedara de la siguiente manera.


No olvidemos que esta parte podemos usar para infinidad de cosas como llamar un botón, mostrar mensajes si ya no tenemos inventario disponible, en nuestro caso el nombre del cajero lo que nuestra imaginación pueda.

Espero les sea de gran ayuda no duden en preguntar.


By NASIV

No hay comentarios:

Publicar un comentario