Eventos


Los "Eventos" se localizan dentro del Expediente en "Tipo de Expedientes". Dichas configuraciones le permiten realizar funciones lógicas de forma automática según en qué situación o estado se encuentre el Expediente.



En la edición del Tipo de Expediente se incluye la opción para configurar la exportación personalizada y los eventos previos a la carga de un Expediente y al grabado del mismo.



Custom Export


Permite definir una exportación personalizada para el Tipo de Expediente. Para tal fin se utiliza la definición de un objeto Json


{"CustomSPName":"SP_Custom_Export","Columns":


[{"Section":"Header","Header":"TipoLinea:C;Empresa;CodSucursal;Marca;Emisor;FechaDelDia;FechaFactura;Numero;Departamento;TipoDocumento;TipoProveedor"},{"Section":"Items","Header":"TipoLinea:D;ReferenciaDoc;Concepto;ImpTotal;CuentaCliente;CuentaPersonal;Diferencia"},{"Section":"Impuestos","Header":"TipoLinea:I;Codigo;ImporteSinImpuesto;Alicuota"}]}


CustomSPName: es el nombre del store procedure creado para la exportación personalizada.


Columns: corresponde a la lista de objetos que representa las columnas que vamos a exportar. Cada elemento columna a su vez contiene las siguientes propiedades:


    • Section: representa un objeto dentro del Tipo de Expediente. Siendo "Header" la sección por defecto que incluye los campos del Tipo de Expediente que no son grilla. Luego para los campos del tipo grilla, debemos colocar aquí el nombre del campo.


    • Header: es una concatenación (utilizando “;”) de nombre de campos a exportar en el caso de estar en la sección “Header”. De lo contrario, Nombre de columnas en el caso de estar en una Sección del tipo grilla.




Evento PreLoad


Permite definir un script para realizar validaciones previas a la carga del formulario de Expedientes.


Es útil cuando queremos configurar previamente valores de campos del Expediente, o realizar validaciones enviando los mensajes a la pantalla para que las pueda visualizar el usuario.


Para este tipo de evento solo se puede utilizar TSQL y se realiza de la siguiente manera:


BEGIN

--New or Update

If({cc_LegajoId}=0)

Begin

Select '{"ResultMessage":"", "LegajoName":"", "Fields":[{"RowId":0,"Name":"Total", "Values":[{"Name":"","Value":"102"}]}]}' As Result;

End

Else

Begin

Select '{"ResultMessage":"", "LegajoName":"", "Fields":[{"RowId":0,"Name":"Total","View":"1","Edit":"1","Values":[{"Name":"","Value":"304,3"}]}]}' As Result;

End;

END


Si queremos evaluar un nuevo Expediente ingresará cuando el id de mismo es 0, de lo contrario es para un Expediente existente.


El resultado que devuelve es un objeto JSON donde:


ResultMessage: es el mensaje que se visualiza en pantalla (en caso de dejarlo vacío no se muestra nada).


LegajoName: Si se utiliza, reemplaza el nombre del Expediente con el valor creado aquí. Es útil para dar mayor dinamismo a la inicialización del nombre de un Expediente según los requerimientos particulares de cada cliente.


Fields: es una lista de objetos que representan los campos del Expediente. Los campos cargados aquí serán utilizados para configurar previamente sus valores en el Expediente.



Evento PreSave


Tiene el mismo formato que el evento PreLoad. Es muy útil para realizar validaciones previas al grabado de un Expediente.


En caso de devolver el objeto con un valor establecido en ResultMessage, el Expediente no es grabado y se reporta el error por pantalla.



Adjuntos obligatorios al crear Expediente


Uno de los usos mas comunes del "Presave" es para la realizar la validación de campo completo, en particular para los adjuntos.


BEGIN

If('@pedidoCotizacion' = '')

Begin

Select '{"ResultMessage":"Debe completar el Adjunto Pedido de Cotización", "LegajoName":"", "Fields":[{"RowId":0,"Name":"","View":"","Edit":"","Values":[{"Name":"","Value":""}]}]}' As Result;

End

Else

Begin

Select '{"ResultMessage":"", "LegajoName":"", "Fields":[{"RowId":0,"Name":"","View":"","Edit":"","Values":[{"Name":"","Value":""}]}]}' As Result;

End;

END


Para el uso de este script, debemos modificar en la sentencia IF el nombre del adjunto que queremos validar precedido de "@" (en el caso de ejemplo el tipo de adjunto tiene como nombre "pedidoCotizacion"), para realizar la comprobación. 


Si el adjunto no se encuentra cargado, "@pedidoCotizacion" devuelve un campo vacío. Por lo que entra por la primera sentencia y devuelve un mensaje de error que pueden personalizar dentro del "ResultMessage", que en el ejemplo es "Debe completar el Adjunto Pedido de Cotización".




Evento Postsave


Se ejecuta una vez que el Expediente ya se encuentra grabado. Por ejemplo, a la espera de autorizaciones de otros sistemas, solo funciona para tomar acciones una vez que el Expediente es grabado.


BEGIN

END




Evento Tabchange


Al momento de disponer varias solapas en el Tipo de Expediente (Grupos), esta acción permite realizar funciones lógicas al momento de desplazarse: validaciones, eventos, controles. 


BEGIN

 DECLARE @LeavingTab nvarchar(100) = '{cc_LeavingTab}';

 DECLARE @EnteringTab nvarchar(100) = '{cc_EnteringTab}';

 

 --Treat Leaving Tab

 If(@LeavingTab!='')

 Begin

   Select '{"ResultMessage":"", "LegajoName":"", "Fields":[{"RowId":0,"Name":"","View":"","Edit":"","Values":[{"Name":"","Value":""}]}]}' As Result;

 End;

 --Treat Entering Tab

 If(@EnteringTab!='')

 Begin

   Select '{"ResultMessage":"", "LegajoName":"", "Fields":[{"RowId":0,"Name":"","View":"","Edit":"","Values":[{"Name":"","Value":""}]}]}' As Result;

 End;

END





Evento Totalizator


El evento de tipo totalizador muestra en pantalla información sobre los legajos seleccionados en la parte inferior de las búsquedas. Esta información puede contener el resultado de sumar, restar, promediar, etc. un campo y, de esta forma, utilizarse para mostrar cualquier información dinámica mediante una query SQL del contenido de los expedientes seleccionados + HTML, como el siguiente ejemplo:



Para configurar el totalizador, deberemos dirigirnos a la pestaña "Totalizator", cargar el la query por defecto haciendo click en "Para instrucciones haga click" y modificar la sentencia para que, durante la ejecución del evento al seleccionar un expediente, este muestre en pantalla un resultado.




BEGIN

 DECLARE @TotalValor DECIMAL(18,2) = 0;

 

 SELECT @TotalValor = SUM(

   TRY_CAST(REPLACE(Valor, ',', '') AS DECIMAL(18,2))

 )

 FROM [NC_LegajoCampos]

 WHERE LegajoTipoCampoId = {LegajoTipoCampoId}

   AND LegajoId IN {ci_legajosSeleccionados};

 

 IF @TotalValor IS NULL

   SET @TotalValor = 0;

 

 SELECT '

 <div style="

   display: inline-flex;

   align-items: center;

   margin-top: -10px;

   gap: 8px;

   padding: 10px 18px;

   border-radius: 14px;

   background: linear-gradient(

     135deg,

     rgba(93, 24, 160, 1),

     rgba(130, 60, 200, 1)

   );

   box-shadow:

     0 4px 14px rgba(93, 24, 160, 0.55),

     inset 0 0 0 1px rgba(255, 255, 255, 0.18);

 ">

   <strong style="

     color: #ffffff;

     font-weight: 600;

     text-transform: uppercase;

     letter-spacing: 0.5px;

     opacity: 0.95;

   ">

     Total:

   </strong>

 

   <span style="

     font-size: 1.4rem;

     font-weight: 800;

     color: #ffffff;

     text-shadow:

       0 2px 6px rgba(0, 0, 0, 0.35),

       0 0 8px rgba(255, 255, 255, 0.25);

   ">

     $' + CAST(@TotalValor AS NVARCHAR(50)) + '

   </span>

 </div>' AS Result;

END




Creado con el Personal Edition de HelpNDoc: Optimice la creación de su documentación con una herramienta de creación de ayuda