Te explicamos cómo programar complementos para las diferentes presentaciones en ERP/CRM, Contabilidad, Nómina, IPOS, Ventas y otros más.
Los sistemas de información, como eFactory en sus diferentes presentaciones (ERP/CRM, Contabilidad, Nómina, IPOS...),
proveen de muchas características funcionales que son comunes a la mayoría de las empresas. Adicionalmente a estas características comunes es posible
desarrollar agregados o Complementos e integrarlos a eFactory como si fuesen parte del sistema original.
En este artículo explicaremos de forma general como se desarrolla un complemento para integrarlo en eFactory. El complemento descrito en el ejemplo puede ser encontrado en la carpeta de complementos de eFactory Administrativo ERP/CRM v4.0.1 o superior.
A continuación explicamos los pasos a seguir para programar complementos:
Los complementos en eFactory pueden ser programados usando cualquier herramienta de desarrollo, desde un simple editor de texto hasta un IDE
completo como visual Studio. Para facilitar el proceso de desarrollo recomendamos usar Visual Studio en cualquiera de sus versiones que tenga soporte para
programación web con asp.net + webforms. En este artículo utilizaremos Microsoft Visual Studio Express 2013 para el Web, disponible para ser descargado de forma gratuita en el website de Microsoft.
Si es la primera vez que desarrollas un complemento para eFactory deberás crear un proyecto nuevo siguiendo el procedimiento a continuación; en caso de que ya tengas creado un proyecto de desarrollo de
complementos puedes abrirlo e ir directamente a la siguiente sección para comenzar a desarrollar.
Actualmente en eFactory es posible establecer Precios por Cliente (ver imagen abajo); esta característica permite definir precios
"especiales" de algunos artículos para algunos clientes en particular; por ejemplo, si queremos darle un precio menor al regular a ciertos artículos para
los "mejores" clientes de la empresa.
Para establecer los precios por cliente en eFactory, es necesario primero buscar al cliente y luego asignar todos los precios de los artículos a ese cliente, pero el sistema no cuenta con un
formulario que permita seleccionar primero el artículo y luego asignar los precios de ese mismo artículo a diferentes clientes. Este será el complemento que desarrollaremos.
Antes de comenzar con la programación debemos decidir donde colocar el complemento. Debido a que la intensión de nuestro complemento de ejemplo es seleccionar primero el artículo, el lugar más
apropiado sería justamente en la ficha Avanzados del formulario de Artículos. Para que el complemento esté disponible debemos añadirlo al XML de definición de complementos que se encuentra
en la carpeta "eFactory\Administrativo\Xml". Este será el fragmento XML que define nuestro complemento:
La forma más rápida de desarrollar un complemento para eFactory es haciendo una copia de otro complemento similar para adaptarlo a la nueva necesidad. En este artículo crearemos el complemento usando una plantilla básica, que puedes encontrar en la sección de Descargas de nuestro sitio web:
Veamos ahora el contenido del archivo ASPX:
El encabezado archivo incluye:
El layout del archivo contienen algunos elementos básicos para iniciar con la programación del GUI:
El complemento que desarrollaremos utilizará el UpdatePanel y los controles integrados de eFactory; aunque en su lugar se puede programar completamente con controles HTML y Javascript, con servicios web para ejecutar el código de servidor (acceso a base de datos, acceso a los parámetros, etc..). La interfaz del complemento será como sigue:
Puedes abrir el archivo frmAjustarPreciosArticuloPorCliente.aspx que se encuentra en la carpeta de complementos de eFactory Administrativo (a partir de eFactory v4.0.1) para ver el detalle de las propiedades de estos controles.
Los complementos de eFactory están programados con ASP.NET + Visual Basic, con el .NET Framework 3.0.
En el evento LOAD del formulario se realiza la configuración inicial de los controles, y se reciben los parámetros enviados por el formulario de origen (en este caso el formulario de Artículos). Veamos la configuración de la caja de búsqueda:
La configuración del grid de renglones requiere que se indique las configuración de cada columna de datos que se desea mostrar. Para el complemento de ejemplo también se agregó un botón adicional en la botonera del grid, que se usará para reestablecer al valor original los precios del artículo seleccionado para todos los renglones. También se configuró una columna de tipo botón para hacer lo mismo con cada renglón de forma adicional.
Después de especificar las columnas se indica la configuración adicional de las mismas: número de decimales, longitud máxima, y en el caso del código del cliente se configurará también un asistente de búsqueda:
Luego de esto, se capturan los parámetros del formulario, pero esto solo se hace la primera vez que el formulario se abre:
Cuando el usuario abre el formulario por primera vez, se mostrarán los precios por cliente configurados para el artículo que tenía seleccionado en el formulario de Artículos al momento de abrir este complemento desde allí. Si el usuario selecciona en el complemento un artículo diferente en la caja de búsqueda, ya sea mediante el botón de búsqueda o escribiendo el código manualmente, se mostrarán los precios configurados para ese artículo. Esto se hace programando el evento mResultadoBusquedaValido de ese control; adicionalmente, el evento mResultadoBusquedaNoValido> se usará para borrar el contenido del grid cuando el usuario ingrese un código de artículo no válido; veamos:
Para ver el detalle del método mCargarPreciosArticulo(), que busca los precios por cliente y los carga en el grid puedes revisar el archivo del complemento en la carpeta correspondiente de eFactory. Los botones del encabezado del grid y de la columna tipo botón se usarán para reestablecer los precios asignados a todos los clientes o al cliente de esa fila, respectivamente, a los valores actuales del precio del artículo seleccionado:
Cuando el usuario selecciona un cliente en un renglón del grid se cargarán los precios configurados para ese cliente,
y si el cliente no tiene precios configurados se cargarán los precios actuales del artículo. Al configurar la columna del código de
cliente en el grid, se indicó que ese campo requiere validación en el servidor (es uno de los parámetros booleanos de mRegistrarColumna).
Cuando se cambia el código del cliente del renglón se dispara el evento mFilaRequiereActualizar del grid, indicando mediante parámetros del
evento cual es el nombre de la columna modificada (cod_cli), el número de renglón, y el nuevo valor. Puedes consultar el código de este evento
en el archivo del complemento como se indicó anteriormente.
Cuando el usuario ha terminado de cargar los datos del grid presionará el botón Aceptar, el cual hará lo siguiente:
l Código completo de este botón se puede consultar en el archivo del complemento como se indicó más arriba.
En general, al programar complementos en eFactory se cuenta con varios controles integrados para generar rápidamente la interfaz del mismo, y clases de ayuda como goDatos (para consultar la base de datos) o goServicios
(para formatear datos) que facilitan enormemente la tarea de programar un complemento.
Licda. Felicia Jardim
soporte@factorysoftve.com
Departamento de Desarrollo
Factory Soft
www.factorysoftve.com