Token: Dynamics-UDFs-Presentation
Permite cargar un conjunto de UDFs para un documento o vista, ofrece soporte para campos de tipo fecha, texto, número, combo box y typeahead.
Facilita la presentación de udfs asociados configurados mediante @clavisco/core de UDFs dinámicos para un documento o vista, al mismo tiempo que reduce considerablemente el tiempo de implementación.
- Se implementa un parametro (UdfsGroup) adicional al componente para realizar el filtrado de udfs por grupo, el parametro de tipo string se debe de pasar el grupo por el cual se desea filtrar los udfs. Este parametro es opcional, en caso de que no se pase, se filtran todos los udfs configurados
- Ahora el nombre y la descipción cambian de lugar, de modo que el nombre del UDF aparece en el tooltip del campo y la descripción como el texto del campo
Está compuesta por un módulo y su respectivo componente visual cl-dynamics-udfs-presentation a continuacion se detalla sus diferentes atributos:
- Id(Requerido): Este identificador debe ser único para evitar cruce de registros cuando se use el componente en una misma vista n cantidad de veces
- Title(Requerido): Texto que se muestra en la parte superior del componente, el encabezado de la sección de UDFs
- ApiUrl(Opcional): Url base que el componente usará para hacer el consumo servicios ofrecidos por el API. Puede ser opcional solamente si hay un interceptor que la agregue.
- UdfsCategory(Requerido): Categoria enviada al endpoint para obtener los UDFs configurados. Ej: Si se quiere consultar los UDFs configurados para facturas debe enviar 'OINV'.
- (api/Udfs?Category={udfs-category}&IsUdfLine=false&Configured=true): Este endpoint se utiliza para obtener los UDFs configurados de la categoria indicada.
- (api/Udfs/Values?Dbo={database-object-name}&Value={base-udf-value}&DboType={dbo-type}): Este endpoint se utiliza cuando los valores de un UDF dependen del valor seleccionado en otro UDF(Búsquedas formateadas)
- Primero debemos cumplir las depencias mencionadas al inicio de este documento.
- Ejecutar el comando
npm i @clavisco/dynamics-udfs-presentation
en el directorio root del proyecto.- Importar el módulo DynamicsUdfsPresentationModule en el app.module.ts o en el módulo donde desea utilizar la presentación de udfs.
- Proveer el servicio LinkerService en el módulo del componente donde se esta implementando.
@NgModule({ declarations: [ //...your declarations ], imports: [ //...your imports DynamicsUdfsPresentationModule ], providers: [ { provide: 'LinkerService', useClass: LinkerService } ] })
- Inyectar el servicio LinkerService en el constructor del componente donde se está realizando la implementación para realizar la comunicación con el componente
constructor(@Inject('LinkerService') private linkerervice: LinkerService)
- Ejemplo de implementación del componente en el template html
<cl-dynamics-udfs-presentation [Id]="componentId" [Title]="Title" [ApiUrl]="ApiUrl" [UdfsCategory]="Category"> </cl-dynamics-udfs-presentation>
- Video explicativo sobre el uso
@clavisco/dynamics-udfs-presentation
Para solicitar los UDFs al componente se debe emitir un evento al canal DATA_LINE_1 de la siguiente manera:
RequestUDFsToComponent(): void
{
this.linkerService.Publish({
CallBack: CL_CHANNEL.DATA_LINE_1,
Target: this.componentId,
Data: ''
});
}
Y para poder capturar estos UDFs se debe registrar al canal OUTPUT de la siguiente manera:
callbacks: ICLCallbacksInterface<CL_CHANNEL> = {
Callbacks: {},
Tracks: []
};
// ...more code
ngOnInit()
{
Register<CL_CHANNEL>(this.componentId, CL_CHANNEL.OUTPUT, this.OnGetUdfs, this.callbacks);
}
OnGetUdfs = (_event: ICLEvent) => {
this.UDFs = JSON.parse(_event.Data);
}
Para establecer el valor de uno o varios UDFs, se debe emitir un evento mediante el siguiente canal INFLATE de la siguiente manera:
SetUDFsValues(): void
{
let udfValues = [
{
Value: '1',
Name: 'U_BatchId'
},
{
Value: '234234234',
Name: 'U_DocumentKey'
}] as DynamicsUdfPresentation.Structures.Interfaces.IUdfWithValue[];
this.linkerService.Publish({
Target: this.componentId,
CallBack: CL_CHANNEL.INFLATE,
Data: JSON.stringify(udfValues)
});
}
Para limpiar los valores de los campos de UDFs se tiene que emitir un evento mediante el canal RESET de la siguiente manera
CleanFields(): void
{
this.linkerService.Publish({
Target: this.componentId,
Data: '',
CallBack: CL_CHANNEL.RESET
});
}
Con solo emitir ese evento deberia ser suficiente para que los campos de los UDFs se limpien
Visitar @clavisco/core para conocer la amplia gama de funcionalidades que se nos ofrecen para facilitarnos el proceso de desarrollo
Visitar @clavisco/linker con el fin de entender los procesos de comunicacion entre componentes y hacia los componentes
ClavisCo ©