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 [
number
]: Este identificador debe ser único para evitar cruce de registros cuando se use el componente en una misma vista n cantidad de veces- Title [
string
]: Texto que se muestra en la parte superior del componente, el encabezado de la sección de UDFs- ApiUrl [
string
,optional
]: 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 [
string
]: Categoria enviada al endpoint para obtener los UDFs configurados. Ej: Si se quiere consultar los UDFs configurados para facturas debe enviar 'OINV'.- UdfsGroup [
string
,optional
]: Representa le grupo de UDFs que se van a consultar.
- (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
IUdf
Modelo que representa la estructura de un campo definido por el usuario (UDF).
- Description [
string
]: Descripción del UDF.- FieldType [
string
]: Tipo de campo del UDF.- IsActive [
boolean
]: Indica si el UDF está activo para mostrarse.- IsRendered [
boolean
]: Indica si el UDF es visible en la interfaz de usuario.- IsRequired [
boolean
]: Indica si el UDF es obligatorio.- Name [
string
]: Nombre del UDF.- TableId [
string
]: Tabla asociada al UDF.- Values [
string
]: Valores válidos para el UDF.- IsTypehead [
boolean
]: Indica si el UDF tiene funcionalidad de autocompletado (typeahead).- DataSource [
string
]: Objeto o fuente de datos utilizada para llenar los valores válidos del UDF.- TargetToOverride [
string
]: Nombre del UDF que será afectado por los cambios realizados en los UDF que poseen un PostTransactionObject.- PostTransactionObject [
string
]: Objeto consultado después de seleccionar un valor en el UDF.- ParsedValues [
IUdfValue[]
]: Valores válidos del UDF que han sido procesados.
IUdfWithValue
Extensión del modelo
IUdf
, que incluye un valor para el campo definido por el usuario (UDF).
- Value [
string | null | IUdfValue
]: Valor actual del UDF. Puede ser un valor simple, nulo o un objeto de tipoIUdfValue
para casos de autocompletado (typeahead).
IUdfValue
Modelo que representa un valor válido para un campo definido por el usuario (UDF).
- Value [
string
]: Valor válido del UDF.- Description [
string
]: Descripción del valor válido del UDF.
IUdfToReturn
Modelo utilizado para devolver la información de un UDF con su nombre y valor.
- Name [
string
]: Nombre del UDF.- Value [
string | null
]: Valor asignado al UDF. Puede ser nulo si no se ha asignado ningún valor.- FieldType [
string
]: Tipo de campo del UDF.
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: '' }); }NOTA!!! La opcion anterior aplica ciertas validaciones antes de retornar los UDFs, en caso de que no se cumplan no retorna los UDFs. Para solicitar los UDFs sin que aplique validaciones, se debe emitir un evento mediante DATA_LINE_2.
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
Este evento es emitido cuando la consulta de UDFs se finaliza, este emite todos los UDFs consultados. Para escucharlo solo hay que configurar el siguiente canal:
Register<CL_CHANNEL>(this.componentId, CL_CHANNEL.OUTPUT_2, this.YourHandlerMethod, this.callbacks);
GET
api/UdfsUtilizado para obtener los UDFs configurados.
- Category [
string
,query
]: Nombre de la tabla de SAP.- IsUdfLine [
boolean
,query
]: Indica si estan consultando los UDFs de lineas del documento.- Configured [
boolean
,query
]: Indica si se van a obtener los UDFs configurados o los disponibles en SAP.
Structures.Interfaces.ICLResponse<DynamicsUdfsConsole.Structures.Types.Udf[]>
GET
api/Udfs/ValuesConsulta los valores de un UDF en base al valor de otro UDF
- Dbo [
string
,query
]: Nombre del procedimiento almacenado o funcion- Value [
string
,query
]: Valor seleccionado del UDF base- DboType [
boolean
,query
]: Tipo de objeto de base de datos FN | SP
Structures.Interfaces.ICLResponse<DynamicsUdfsConsole.Structures.Types.Group[]>
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 ©