dts-backoffice-util 16.1.0 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +407 -334
  2. package/esm2022/dts-backoffice-util.mjs +4 -4
  3. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +305 -305
  4. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +6 -6
  5. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +208 -208
  6. package/esm2022/lib/dts-backoffice-util.module.mjs +54 -54
  7. package/esm2022/lib/interfaces/filter-range.interface.mjs +1 -1
  8. package/esm2022/lib/interfaces/totvs-response.interface.mjs +1 -1
  9. package/esm2022/lib/model/session-info.model.mjs +67 -67
  10. package/esm2022/lib/pipes/dts-date-format.pipe.mjs +20 -20
  11. package/esm2022/lib/services/breadcrumb-control.service.mjs +99 -99
  12. package/esm2022/lib/services/cache-params.service.mjs +25 -25
  13. package/esm2022/lib/services/menu-datasul.service.mjs +118 -118
  14. package/esm2022/lib/services/profile.service.mjs +55 -55
  15. package/esm2022/lib/services/report.service.mjs +57 -57
  16. package/esm2022/lib/services/session-info.service.mjs +36 -36
  17. package/esm2022/lib/services/translate.service.mjs +23 -23
  18. package/esm2022/lib/services/validate.service.mjs +42 -0
  19. package/esm2022/lib/utils/date.util.mjs +56 -56
  20. package/esm2022/lib/utils/disclaimer.util.mjs +490 -490
  21. package/esm2022/lib/utils/field-validation.util.mjs +179 -179
  22. package/esm2022/lib/utils/file.util.mjs +151 -151
  23. package/esm2022/lib/utils/filter-range.util.mjs +32 -32
  24. package/esm2022/lib/utils/generic-functions.utils.mjs +170 -170
  25. package/esm2022/public-api.mjs +35 -34
  26. package/fesm2022/dts-backoffice-util.mjs +2053 -2015
  27. package/fesm2022/dts-backoffice-util.mjs.map +1 -1
  28. package/index.d.ts +5 -5
  29. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +53 -53
  30. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.d.ts +68 -68
  31. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +30 -30
  32. package/lib/dts-backoffice-util.module.d.ts +14 -14
  33. package/lib/interfaces/filter-range.interface.d.ts +18 -18
  34. package/lib/interfaces/totvs-response.interface.d.ts +4 -4
  35. package/lib/model/session-info.model.d.ts +40 -40
  36. package/lib/pipes/dts-date-format.pipe.d.ts +7 -7
  37. package/lib/services/breadcrumb-control.service.d.ts +18 -18
  38. package/lib/services/cache-params.service.d.ts +10 -10
  39. package/lib/services/menu-datasul.service.d.ts +27 -27
  40. package/lib/services/profile.service.d.ts +25 -25
  41. package/lib/services/report.service.d.ts +31 -31
  42. package/lib/services/session-info.service.d.ts +12 -12
  43. package/lib/services/translate.service.d.ts +8 -8
  44. package/lib/services/validate.service.d.ts +12 -0
  45. package/lib/utils/date.util.d.ts +9 -9
  46. package/lib/utils/disclaimer.util.d.ts +40 -40
  47. package/lib/utils/field-validation.util.d.ts +21 -21
  48. package/lib/utils/file.util.d.ts +23 -23
  49. package/lib/utils/filter-range.util.d.ts +7 -7
  50. package/lib/utils/generic-functions.utils.d.ts +24 -24
  51. package/package.json +5 -5
  52. package/public-api.d.ts +21 -20
package/README.md CHANGED
@@ -12,6 +12,7 @@ Segue abaixo as últimas versões da Biblioteca, conforme a versão do PO-UI e A
12
12
 
13
13
  | PO-UI | Angular | Versão dtsBackofficeUtil |
14
14
  |-|-|-|
15
+ | v17 | v17 | 17.1.0 |
15
16
  | v16 | v16 | 16.1.0 |
16
17
  | v15 | v15 | 15.4.1 |
17
18
  | v14 | v14 | 14.4.1 |
@@ -33,35 +34,189 @@ npm install dts-backoffice-util
33
34
 
34
35
  <br>
35
36
 
36
- # Componentes e Serviços Disponíveis
37
+ # Componentes
37
38
 
39
+ ## TotvsScheduleExecutionComponent
38
40
  <br>
39
41
 
40
- # TranslateService
41
-
42
- **Objetivo:** Realizar o controle do idioma corrente, considerando o que estiver parametrizado no Cadastro de Usuários do Datasul, e caso não esteja informado, será considerado o idioma informado no Browse.
42
+ **Objetivo:** Componente para realização de agendamentos RPW.
43
43
 
44
- Importação:
44
+ **Dependências:** Para usar esse componente deve ser instalado no projeto o pacote rxjs-compat.<br/>
45
+ ```cmd
46
+ npm i rxjs-compat --save
45
47
  ```
46
- import { TranslateService } from 'dts-backoffice-util';
48
+ **Importação:** No módulo da aplicação importar o módulo abaixo:
49
+ ```ts
50
+ @NgModule({
51
+ declarations: [
52
+ ...
53
+ ],
54
+ imports: [
55
+ ...,
56
+ DtsBackofficeUtilsModule.forRoot()
57
+ ],
58
+ providers: [],
59
+ bootstrap: [...]
60
+ })
47
61
  ```
48
62
 
49
- Métodos:
63
+ **Parâmetros:**
64
+
65
+ | Nome | Tipo | Obrigatório | Descrição |
66
+ |-|-|-|-|
67
+ | programName | string | Sim | Código de Programa cadastrado no menu, do programa que será executado no RPW. |
68
+ | externalName | string | Sim | Nome completo do Programa que será executado no RPW, diretório + nome externo.<br>**Importante:** Em virtude do dicionário (Foundation), este parâmetro é limitado a 24 dígitos. |
69
+ | programEMS5 | boolean | Não | Indica se o programa progress é do EMS5. |
70
+ | programStyle | number | Não | Número que representa o Estilo do Relatório no EMS5. |
71
+ | programVersion | string | Não | Versão do programa progress. |
72
+ | parameters | Array | Sim | Objeto representando a Temp-Table que será enviada ao progress. |
73
+ | paramDigitDef | Array | Não | Definição da Temp-Table tt-digita. Utilizado apenas pelo EMS2. Para cada campo da tt-digita, deve ser enviado um objeto com o seguinte formato: **{"chave": "string", "tipo": "string" }**. Onde **chave** representa o nome do campo, e **tipo** representa o tipo de dado (exemplo: character, integer, etc...). |
74
+ | paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
75
+ | paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
76
+ | disabledParams | boolean | Não | Quando for igual a **"Sim"**, irá desabilitar todos os campos do Agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
77
+ | loading | boolean | Não | Quando for igual a **"Sim"**, irá apresentar a tela de "loading" no momento da criação da agenda até o retorno do serviço. |
78
+ | endExecution | EventEmitter | Não | Evento que será disparado ao finalizar o agendamento. Ele irá enviar como parâmetro um objeto da interface **IScheduleParameters**, contendo os parâmetros informados pelo usuário. |
79
+ ---
80
+ **Métodos:**
50
81
 
51
82
  | Nome | Descrição |
52
83
  |-|-|
53
- | getCurrentLanguage | Retorna o idioma corrente. Será considerado no primeiro momento a chave "user.language" do localStorage. Caso ela não exista ou seja inválida, será considerado o idioma parametrizado no Browse. Além disso, o idioma deve estar disponível na lista de suportados, conforme métodos "getSuportLanguage".<br>**Parâmetros:** Não há.<br>**Retorno:** string |
54
- | getSuportLanguage | Retornar uma lista com os atuais idiomas suportados.<br>**Parâmetros:** Não há.<br>**Retorno:** Array(string) |
84
+ | setScheduleParameters | Atualiza as informações de agendamento com base no objeto que foi enviado como parâmetro.<br>**Parâmetros:**<br>- schParam (**IScheduleParameters**): Objeto com as informações do agendamento (Data Execução, Servidor, Repetir ocorrência, etc...).<br>**Retorno:** Não há. |
85
+ | getScheduleParameters | Retorna um objeto da interface **IScheduleParameters**, contendo os atuais parâmetros informados pelo usuário na tela de agendamento.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- schParam (**IScheduleParameters**): Objeto com as informações do agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
55
86
  ---
87
+ **Exemplo de Uso:**
88
+
89
+ Em conjunto com o parâmetro **endExecution** o método **setScheduleParameters** pode ser utilizado para salvar e recuperar as informações de agendamento informadas pelo usuário.
90
+
91
+ **Definições no HTML:**
92
+ ```html
93
+ // EXEMPLO PARA EMS5
94
+ <app-totvs-schedule-execution #schParam
95
+ programName="rpt_grp_repres"
96
+ externalName="rpt_grp_repres"
97
+ programEMS5="true"
98
+ programStyle="40"
99
+ programVersion="1.00.00.004"
100
+ [parameters]="parametersRpw"
101
+ [paramSelections]="paramSelectionsRpw"
102
+ (endExecution)="endExecutionSchedule($event)">
103
+ </app-totvs-schedule-execution>
104
+
105
+ // EXEMPLO PARA EMS2
106
+ <app-totvs-schedule-execution #schParam
107
+ programName="pdapi701"
108
+ externalName="pdp/pdapi701.p"
109
+ [parameters]="parametersRpw"
110
+ [paramDigitDef]="paramDigitDefRpw"
111
+ [paramDigitData]="paramDigitDataRpw"
112
+ (endExecution)="endExecutionSchedule($event)">
113
+ </app-totvs-schedule-execution>
114
+ ```
115
+ **Definições no JavaScript:**
116
+ ```ts
117
+ @ViewChild('schParam', { static: true }) schParam: TotvsScheduleExecutionComponent;
118
+
119
+ scheduleParams: IScheduleParameters;
120
+ parametersRpw = new Array<any>();
121
+ paramDigitDefRpw = new Array<any>();
122
+ paramDigitDataRpw = new Array<any>();
123
+ paramSelectionsRpw = new Array<any>();
124
+
125
+ ngOnInit(): void {
126
+ this.loadLocalStorage();
127
+ this.schParam.setScheduleParameters(this.scheduleParams);
128
+
129
+ this.createParametersRpw();
130
+ }
131
+
132
+ createParametersRpw(): void {
133
+ // Parâmetros
134
+ this.parametersRpw = [
135
+ { chave: 'destino', valor: 2, tipo: 'integer' },
136
+ { chave: 'arquivo', valor: '', tipo: 'character' },
137
+ { chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
138
+ { chave: 'perfil', valor: 880, tipo: 'integer' }
139
+ ];
140
+
141
+ // Definição da tt-digita (EMS2)
142
+ this.paramDigitDefRpw = [
143
+ { chave: 'cod-estab', tipo: 'character' },
144
+ { chave: 'cod-ccusto', tipo: 'integer' }
145
+ ];
146
+
147
+ // Dados da tt-digita (EMS2)
148
+ this.paramDigitDataRpw = [
149
+ { "cod-estab": '19', "cod-ccusto": 17 },
150
+ { "cod-estab": '28', "cod-ccusto": 11 },
151
+ { "cod-estab": '73', "cod-ccusto": 90 }
152
+ ];
153
+
154
+ // Seleção (Relatório Regra/Exceção do EMS5)
155
+ this.paramSelectionsRpw = [
156
+ { ind_dwb_set_type: "Regra", cod_dwb_set: "estab",
157
+ cod_dwb_set_initial: "01", cod_dwb_set_final: "FF", log_dwb_rule: true },
158
+ { ind_dwb_set_type: "Exceção", cod_dwb_set: "ccusto",
159
+ cod_dwb_set_initial: "30", cod_dwb_set_final: "35", log_dwb_rule: false }
160
+ ]
161
+ }
162
+
163
+ endExecutionSchedule(event): void {
164
+ this.scheduleParams = event;
165
+ this.saveLocalStorage();
166
+ }
167
+
168
+ private saveLocalStorage(): void {
169
+ if (typeof (Storage) === 'undefined') { return; }
170
+ localStorage.setItem('param-maint.schParam', JSON.stringify(this.scheduleParams));
171
+ }
172
+
173
+ private loadLocalStorage(): void {
174
+ if (typeof (Storage) === 'undefined') { return; }
175
+ this.scheduleParams = JSON.parse(localStorage.getItem('param-maint.schParam'));
176
+ }
177
+ ```
178
+ **Definições no Progress:**
179
+ ```
180
+ DEFINE TEMP-TABLE tt-param NO-UNDO
181
+ FIELD destino AS INTEGER
182
+ FIELD arquivo AS CHARACTER
183
+ FIELD usuario AS CHARACTER
184
+ FIELD perfil AS INTEGER.
185
+
186
+ DEFINE TEMP-TABLE tt-digita NO-UNDO
187
+ FIELD cod-estab AS CHARACTER
188
+ FIELD cod-ccusto AS INTEGER.
189
+ ```
56
190
 
191
+ Interfaces:
192
+
193
+ IScheduleParameters
194
+ | Nome | Tipo | Descrição | Valor - Label Valor |
195
+ |-|-|-|-|
196
+ | executionType | number | Tipo Execução | 1 - Executar Hoje<br>2 - Agendar Execução |
197
+ | execAppointDate | date | Data Agendada | |
198
+ | execAppointHour | string | Hora Agendada | |
199
+ | executionServer | string | Servidor RPW | |
200
+ | repeatExecution | boolean | Repetir Ocorrência | |
201
+ | repeatType | number | Tipo Repetição | 1 - Diária<br>2 - Semanal<br>3 - Mensal |
202
+ | frequency | string | Frequência | "no" - Uma vez no dia<br>"yes" - Várias vezes no dia |
203
+ | frequencyValue | number | Quantidade da Frequência | |
204
+ | frequencyType | string | Tipo Frequência | "hour" - Hora(s)<br>"minute" - Minuto(s) |
205
+ | execAppointHourInit | string | Hora Inicial Frequência | |
206
+ | execAppointHourFinal | string | Hora Final Frequência | |
207
+ | selectWeeklys | Array | Dia da Semana<br>Frequência Semanal | Sunday - Domingo<br>Monday - Segunda<br>Tuesday - Terça<br>Wednesday - Quarta<br>Thursday - Quinta<br>Friday - Sexta<br>Saturday - Sábado |
208
+ | dayOfMonth | number | Dia do Mês<br>Frequência Mensal | |
209
+ ---
57
210
  <br>
58
211
 
59
- # dtsDateFormat
212
+ # Pipes
213
+
214
+ ## dtsDateFormat
60
215
 
61
216
  **Objetivo:** PIPE para formatar datas, ele foi criado pois o PIPE date do angular não consegue formatada datas inferiores a 1901.
62
217
 
63
218
  **Importação:** No módulo de funcionalidade importar o módulo abaixo:
64
- ```
219
+ ```ts
65
220
  @NgModule({
66
221
  declarations: [
67
222
  ...
@@ -76,7 +231,7 @@ Métodos:
76
231
  ```
77
232
 
78
233
  Exemplo de uso:
79
- ```
234
+ ```html
80
235
  <po-info p-label="Data"
81
236
  [p-value]="date | dtsDateFormat : 'dd/MM/yyyy'">
82
237
  </po-info>
@@ -85,22 +240,49 @@ Exemplo de uso:
85
240
  [p-value]="date | dtsDateFormat : 'MM/dd/yyyy'">
86
241
  </po-info>
87
242
  ```
243
+ <br>
244
+
245
+ # Serviços
246
+
247
+ ## BreadcrumbControlService
248
+
249
+ **Objetivo:** Realiza a criação e controle do breadcrumb das telas.
250
+
251
+ **Importação:**
252
+ ```ts
253
+ import { BreadcrumbControlService } from 'dts-backoffice-util';
254
+ ```
255
+
256
+ **Métodos:**
257
+
258
+ | Nome | Descrição |
259
+ |-|-|
260
+ | newBreadcrumb | "Reinicia" o breadcrumb quando necessário. Ex: Telas que possuem menu lateral, ao passar de um menu para outro, o breadcrumb deve ser reiniciado.<br>**Parâmetros:** Não há.<br>**Retorno:** Não há. |
261
+ | addBreadcrumb | Adiciona um item ao breadcrumb, considerando a URL atual da tela.<br>**Parâmetros:**<br>- literal (string): Nome da tela que será apresentado no breadcrumb.<br>- activatedRoute (ActivatedRoute): ActivedRoute da tela.<br>**Retorno:** Não há. |
262
+ | addBreadcrumbURL | Adiciona um item ao breadcrumb, informando uma URL específica.<br>**Parâmetros:**<br>- literal (string): Nome da tela que será apresentado no breadcrumb.<br>- url (string): URL específica.<br>**Retorno:** Não há. |
263
+ | updBreadcrumbURL | Altera uma informação qualquer contida na URL do item informado.<br>**Parâmetros:**<br>- literal (string): Nome da tela que está no breadcrumb.<br>- valueOld (string): Valor a ser substituído.<br>- valueNew (string): Novo valor.<br>**Retorno:** Não há. |
264
+ | delBreadcrumb | Exclui um item do breadcrumb.<br>**Parâmetros:**<br>- literal (string): Nome do item (nome da tela), que deve ser excluído do breadcrumb.<br>**Retorno:** Não há. |
265
+ | getBreadcrumb | Retorna o breadcrumb atual completo.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- breadcrumb (PoBreadcrumb) |
266
+ | getCurrentRouter | Retorna a URL do breadcrumb do item corrente.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
267
+ | getPrevRouter | Retorna a URL do breadcrumb do item anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
268
+ | hasPreviousRouter | Indica se existe um item de breadcrumb anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- exist (boolean) |
269
+ ---
88
270
 
89
271
  <br>
90
272
 
91
- # MenuDatasulService
273
+ ## MenuDatasulService
92
274
 
93
275
  **Objetivo:** Interagir com o Menu do Datasul.
94
276
 
95
- Importação:
96
- ```
277
+ **Importação:**
278
+ ```ts
97
279
  import { MenuDatasulService } from 'dts-backoffice-util';
98
280
 
99
281
  constructor(public menuDatasulService: MenuDatasulService) {
100
282
  }
101
283
  ```
102
284
 
103
- Métodos:
285
+ **Métodos:**
104
286
 
105
287
  | Nome | Descrição |
106
288
  |-|-|
@@ -111,8 +293,8 @@ Métodos:
111
293
  | programSecurity | Verifica a Segurança do Menu, identificando se o usuário corrente possui acesso a um ou mais programas.<br>**Parâmetros:**<br>- programName (string ou Array): Nome do Programa cadastro no Menu, que se deseja consultar a segurança. Podendo ser informado uma string simples com o Nome do Programa, ou um Array de strings com a lista de Programas.<br>**Retorno:** response (Observable(Array)): Array com as informações dos Programas pesquisados. O objeto contido no Array terá dois atributos:<br>programName (string): Nome do Programa no Menu.<br>hasAccess (boolean): Valor "TRUE" ou "FALSE", indicando se o usuário tem acesso ao programa. **Obs:** Se o programa não estiver cadastro no Menu, o retorno deste atributo será "FALSE". |
112
294
  ---
113
295
 
114
- Exemplo de uso:
115
- ```
296
+ **Exemplo de uso:**
297
+ ```ts
116
298
  // Executando uma tela Progress
117
299
  program = {
118
300
  prg: 'bas_lote_liquidac_acr',
@@ -166,182 +348,150 @@ this.menuDatasulService
166
348
 
167
349
  <br>
168
350
 
169
- # TotvsScheduleExecutionComponent
351
+ ## ProfileService
170
352
 
171
- **Objetivo:** Componente para realização de agendamentos RPW.
353
+ **Objetivo:** Salvar preferências do usuário.
172
354
 
173
- **Dependências:** Para usar esse componente deve ser instalado no projeto o pacote rxjs-compat.<br/>
174
- - **npm i rxjs-compat --save**
355
+ **Importação:**
356
+ ```ts
357
+ import { ProfileService, IProfile } from 'dts-backoffice-util';
175
358
 
176
- **Importação:** No módulo da aplicação importar o módulo abaixo:
177
- ```
178
- @NgModule({
179
- declarations: [
180
- ...
181
- ],
182
- imports: [
183
- ...,
184
- DtsBackofficeUtilsModule.forRoot()
185
- ],
186
- providers: [],
187
- bootstrap: [...]
188
- })
359
+ constructor(public preferenceService: ProfileService) {
360
+ }
189
361
  ```
190
362
 
191
- Parâmetros:
192
-
193
- | Nome | Tipo | Obrigatório | Descrição |
194
- |-|-|-|-|
195
- | programName | string | Sim | Código de Programa cadastrado no menu, do programa que será executado no RPW. |
196
- | externalName | string | Sim | Nome completo do Programa que será executado no RPW, diretório + nome externo.<br>**Importante:** Em virtude do dicionário (Foundation), este parâmetro é limitado a 24 dígitos. |
197
- | programEMS5 | boolean | Não | Indica se o programa progress é do EMS5. |
198
- | programStyle | number | Não | Número que representa o Estilo do Relatório no EMS5. |
199
- | programVersion | string | Não | Versão do programa progress. |
200
- | parameters | Array | Sim | Objeto representando a Temp-Table que será enviada ao progress. |
201
- | paramDigitDef | Array | Não | Definição da Temp-Table tt-digita. Utilizado apenas pelo EMS2. Para cada campo da tt-digita, deve ser enviado um objeto com o seguinte formato: **{"chave": "string", "tipo": "string" }**. Onde **chave** representa o nome do campo, e **tipo** representa o tipo de dado (exemplo: character, integer, etc...). |
202
- | paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
203
- | paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
204
- | disabledParams | boolean | Não | Quando for igual a **"Sim"**, irá desabilitar todos os campos do Agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
205
- | loading | boolean | Não | Quando for igual a **"Sim"**, irá apresentar a tela de "loading" no momento da criação da agenda até o retorno do serviço. |
206
- | endExecution | EventEmitter | Não | Evento que será disparado ao finalizar o agendamento. Ele irá enviar como parâmetro um objeto da interface **IScheduleParameters**, contendo os parâmetros informados pelo usuário. |
207
-
208
- Métodos:
363
+ **Métodos:**
209
364
 
210
365
  | Nome | Descrição |
211
366
  |-|-|
212
- | setScheduleParameters | Atualiza as informações de agendamento com base no objeto que foi enviado como parâmetro.<br>**Parâmetros:**<br>- schParam (**IScheduleParameters**): Objeto com as informações do agendamento (Data Execução, Servidor, Repetir ocorrência, etc...).<br>**Retorno:** Não há. |
213
- | getScheduleParameters | Retorna um objeto da interface **IScheduleParameters**, contendo os atuais parâmetros informados pelo usuário na tela de agendamento.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- schParam (**IScheduleParameters**): Objeto com as informações do agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
367
+ | setProfile | Salva informações no profile do usuário.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário e as informações serem salvas.<br>**Retorno:**<br>- response (Observable(any)): Retorno do BackEnd. |
368
+ | getProfileAsString | Retorna os valores salvos no formato de uma string.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(string)): Informações salvas. |
369
+ | getProfileAsJSON | Retorna os valores salvos no formato de um JSON.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(object)): Informações salvas. |
370
+ ---
214
371
 
215
- Exemplo de Uso:
372
+ **Interfaces:**
216
373
 
217
- Em conjunto com o parâmetro **endExecution** o método **setScheduleParameters** pode ser utilizado para salvar e recuperar as informações de agendamento informadas pelo usuário.
374
+ IProfile
375
+ | Nome | Tipo | Obrigatório | Descrição |
376
+ |-|-|-|-|
377
+ | pageId | string | Sim | Um ID para identificar a Tela que está salvando os parâmetros. |
378
+ | userCode | string | Sim | Código do usuário (login). |
379
+ | dataCode | string | Sim | Um ID para identificar o parâmetro. |
380
+ | dataValue | string | Não | Valor a ser salvo, nos GET's é opcional. |
381
+ ---
218
382
 
219
- **Definições no HTML:**
220
- ```
221
- // EXEMPLO PARA EMS5
222
- <app-totvs-schedule-execution #schParam
223
- programName="rpt_grp_repres"
224
- externalName="rpt_grp_repres"
225
- programEMS5="true"
226
- programStyle="40"
227
- programVersion="1.00.00.004"
228
- [parameters]="parametersRpw"
229
- [paramSelections]="paramSelectionsRpw"
230
- (endExecution)="endExecutionSchedule($event)">
231
- </app-totvs-schedule-execution>
383
+ **Exemplo de Uso:**
384
+ ```ts
385
+ const profile: IProfile = {
386
+ pageId: 'about-component',
387
+ userCode: 'super',
388
+ dataCode: 'preference',
389
+ dataValue: this.preference
390
+ };
232
391
 
233
- // EXEMPLO PARA EMS2
234
- <app-totvs-schedule-execution #schParam
235
- programName="pdapi701"
236
- externalName="pdp/pdapi701.p"
237
- [parameters]="parametersRpw"
238
- [paramDigitDef]="paramDigitDefRpw"
239
- [paramDigitData]="paramDigitDataRpw"
240
- (endExecution)="endExecutionSchedule($event)">
241
- </app-totvs-schedule-execution>
242
- ```
243
- **Definições no JavaScript:**
392
+ this.preferenceService
393
+ .setProfile(profile)
394
+ .subscribe((response) => {
395
+ this.notification.success('Preferência salva com sucesso!');
396
+ }, (error) => {
397
+ this.notification.error('Não foi possível salvar a preferência');
398
+ });
244
399
  ```
245
- @ViewChild('schParam', { static: true }) schParam: TotvsScheduleExecutionComponent;
246
400
 
247
- scheduleParams: IScheduleParameters;
248
- parametersRpw = new Array<any>();
249
- paramDigitDefRpw = new Array<any>();
250
- paramDigitDataRpw = new Array<any>();
251
- paramSelectionsRpw = new Array<any>();
401
+ <br>
252
402
 
253
- ngOnInit(): void {
254
- this.loadLocalStorage();
255
- this.schParam.setScheduleParameters(this.scheduleParams);
403
+ ## ReportService
256
404
 
257
- this.createParametersRpw();
405
+ **Objetivo:** Faz a chamada do datasul-report e realiza o download do arquivo caso seja especificado.
406
+
407
+ **Importação:**
408
+ ```ts
409
+ import {
410
+ ReportService,
411
+ IReportServiceParams,
412
+ ReportFormats
413
+ } from 'dts-backoffice-util';
414
+
415
+ constructor(public reportService: ReportService) {
258
416
  }
417
+ ```
418
+ **Métodos:**
259
419
 
260
- createParametersRpw(): void {
261
- // Parâmetros
262
- this.parametersRpw = [
263
- { chave: 'destino', valor: 2, tipo: 'integer' },
264
- { chave: 'arquivo', valor: '', tipo: 'character' },
265
- { chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
266
- { chave: 'perfil', valor: 880, tipo: 'integer' }
267
- ];
420
+ | Nome | Descrição |
421
+ |-|-|
422
+ | generate | Retorna o arquivo binário gerado pelo datasul-report e faz o download do arquivo.<br>**Parâmetros:**<br>- params (IReportServiceParams): Parâmetros para execução do relatório.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(Blob)) |
423
+ ---
424
+ <br>
268
425
 
269
- // Definição da tt-digita (EMS2)
270
- this.paramDigitDefRpw = [
271
- { chave: 'cod-estab', tipo: 'character' },
272
- { chave: 'cod-ccusto', tipo: 'integer' }
273
- ];
426
+ **Interfaces:**
274
427
 
275
- // Dados da tt-digita (EMS2)
276
- this.paramDigitDataRpw = [
277
- { "cod-estab": '19', "cod-ccusto": 17 },
278
- { "cod-estab": '28', "cod-ccusto": 11 },
279
- { "cod-estab": '73', "cod-ccusto": 90 }
280
- ];
428
+ IReportServiceParams
429
+
430
+ | Nome | Tipo | Obrigatório | Descrição |
431
+ |-|-|-|-|
432
+ | reportName | string | Sim | Nome do arquivo .rptDesign |
433
+ | programName | string | Sim | Nome do programa progress. |
434
+ | properties | Array | Sim | Lista de parâmetros que serão enviados ao progress. O objeto do Array deve implementar a interface **IProperty**. |
435
+ | dialect | string | Sim | Idioma do usuário. |
436
+ | downloadName | string | Sim | Nome que será dado ao arquivo de download. |
437
+ | download | boolean | Sim | O download deve ser efetuado |
438
+ | format | enum | Sim | Formato do Arquivo (XLSX, PDF, DOCX ou HTML). Enum: **ReportFormats**. |
439
+ ---
281
440
 
282
- // Seleção (Relatório Regra/Exceção do EMS5)
283
- this.paramSelectionsRpw = [
284
- { ind_dwb_set_type: "Regra", cod_dwb_set: "estab",
285
- cod_dwb_set_initial: "01", cod_dwb_set_final: "FF", log_dwb_rule: true },
286
- { ind_dwb_set_type: "Exceção", cod_dwb_set: "ccusto",
287
- cod_dwb_set_initial: "30", cod_dwb_set_final: "35", log_dwb_rule: false }
288
- ]
289
- }
441
+ IProperty
290
442
 
291
- endExecutionSchedule(event): void {
292
- this.scheduleParams = event;
293
- this.saveLocalStorage();
294
- }
443
+ | Nome | Tipo | Obrigatório | Descrição |
444
+ |-|-|-|-|
445
+ | name | string | Sim | Nome do parâmetro |
446
+ | value | string | Sim | Valor do parâmetro |
447
+ ---
295
448
 
296
- private saveLocalStorage(): void {
297
- if (typeof (Storage) === 'undefined') { return; }
298
- localStorage.setItem('param-maint.schParam', JSON.stringify(this.scheduleParams));
299
- }
449
+ <br>
300
450
 
301
- private loadLocalStorage(): void {
302
- if (typeof (Storage) === 'undefined') { return; }
303
- this.scheduleParams = JSON.parse(localStorage.getItem('param-maint.schParam'));
451
+ **Enums**
452
+ ```ts
453
+ declare enum ReportFormats {
454
+ XLSX = "xlsx",
455
+ PDF = "pdf",
456
+ DOCX = "docx",
457
+ HTML = "html"
304
458
  }
305
459
  ```
306
- **Definições no Progress:**
307
- ```
308
- DEFINE TEMP-TABLE tt-param NO-UNDO
309
- FIELD destino AS INTEGER
310
- FIELD arquivo AS CHARACTER
311
- FIELD usuario AS CHARACTER
312
- FIELD perfil AS INTEGER.
313
-
314
- DEFINE TEMP-TABLE tt-digita NO-UNDO
315
- FIELD cod-estab AS CHARACTER
316
- FIELD cod-ccusto AS INTEGER.
317
- ```
318
460
 
319
- Interfaces:
461
+ **Exemplo de Uso:**
462
+ ```ts
463
+ const properties: Array<IProperty> = [
464
+ {
465
+ name: 'custom.quick_search',
466
+ value: '186'
467
+ }
468
+ ];
320
469
 
321
- IScheduleParameters
322
- | Nome | Tipo | Descrição | Valor - Label Valor |
323
- |-|-|-|-|
324
- | executionType | number | Tipo Execução | 1 - Executar Hoje<br>2 - Agendar Execução |
325
- | execAppointDate | date | Data Agendada | |
326
- | execAppointHour | string | Hora Agendada | |
327
- | executionServer | string | Servidor RPW | |
328
- | repeatExecution | boolean | Repetir Ocorrência | |
329
- | repeatType | number | Tipo Repetição | 1 - Diária<br>2 - Semanal<br>3 - Mensal |
330
- | frequency | string | Frequência | "no" - Uma vez no dia<br>"yes" - Várias vezes no dia |
331
- | frequencyValue | number | Quantidade da Frequência | |
332
- | frequencyType | string | Tipo Frequência | "hour" - Hora(s)<br>"minute" - Minuto(s) |
333
- | execAppointHourInit | string | Hora Inicial Frequência | |
334
- | execAppointHourFinal | string | Hora Final Frequência | |
335
- | selectWeeklys | Array | Dia da Semana<br>Frequência Semanal | Sunday - Domingo<br>Monday - Segunda<br>Tuesday - Terça<br>Wednesday - Quarta<br>Thursday - Quinta<br>Friday - Sexta<br>Saturday - Sábado |
336
- | dayOfMonth | number | Dia do Mês<br>Frequência Mensal | |
470
+ const params: IReportServiceParams = {
471
+ reportName: 'crm/rel_campaign_export',
472
+ programName: '/report/crm/crm0010',
473
+ properties,
474
+ dialect: 'pt',
475
+ download: true,
476
+ downloadName: '2020-1-10_13-51-53_CRM_CAMPANHAS',
477
+ format: ReportFormats.XLSX
478
+ };
337
479
 
480
+ this.reportService
481
+ .generate(params)
482
+ .subscribe(() => {
483
+ this.notification.error("Arquivo baixado com sucesso!");
484
+ }, () => {
485
+ this.notification.error("Não foi possível baixar o arquivo");
486
+ });
487
+ ```
338
488
  <br>
339
489
 
340
- # TotvsScheduleExecutionService
490
+ ## TotvsScheduleExecutionService
341
491
 
342
492
  **Objetivo:** Serviço que disponibiliza métodos para geração de agendamento e acompanhamento do RPW.
343
493
 
344
- Métodos:
494
+ **Métodos:**
345
495
 
346
496
  | Nome | Descrição |
347
497
  |-|-|
@@ -351,13 +501,13 @@ Métodos:
351
501
  | followUpExcByJobScheduleID | Utilizado para acompanhar a execução do agendamento realizado no RPW, verificando o status da execução, até que ele seja finalizado.<br>**Parâmetros:**<br>- jobScheduleID (string): ID interno do Agendamento que se deseja acompanhar.<br>- intervalNum (number): Tempo em milisegundos para verificação do status do agendamento. Por exemplo, se for informado **5000**, será verificado o status do agendamento em 5 e 5 segundos até a execução terminar.<br>- fncCallBack (Function): Método que será executado após a tela receber o status da execução do agendamento. Ele será executado várias vezes até a execução terminar, no intervalo de tempo determinado no parâmetro **intervalNum**. Este método irá receber um objeto da interface **IExecutionStatus** com o status da execução. O método deverá retornar um valor **boolean** indicando se o processo deve continuar sendo monitorado ou não. Se for retornado "false", o agendamento não será mais monitorado. **Observação**: Isto não afeta a execução do agendamento no RPW, ele continuará executando normalmente.<br>- loading (boolean): Quando for igual a **"Sim"**, irá apresentar a tela de "loading" até finalizar o acompanhamento do agendamento.<br>**Retorno:** Não há. |
352
502
  | followUpExcByExecutionID | Utilizado para acompanhar a execução do agendamento realizado no RPW, verificando o status da execução, até que ele seja finalizado.<br>**Parâmetros:**<br>- executionID (string): Número do Agendamento que se deseja acompanhar.<br>- intervalNum (number): Tempo em milisegundos para verificação do status do agendamento. Por exemplo, se for informado **5000**, será verificado o status do agendamento em 5 e 5 segundos até a execução terminar.<br>- fncCallBack (Function): Método que será executado após a tela receber o status da execução do agendamento. Ele será executado várias vezes até a execução terminar, no intervalo de tempo determinado no parâmetro **intervalNum**. Este método irá receber um objeto da interface **IExecutionStatus** com o status da execução. O método deverá retornar um valor **boolean** indicando se o processo deve continuar sendo monitorado ou não. Se for retornado "false", o agendamento não será mais monitorado. **Observação**: Isto não afeta a execução do agendamento no RPW, ele continuará executando normalmente.<br>- loading (boolean): Quando for igual a **"Sim"**, irá apresentar a tela de "loading" até finalizar o acompanhamento do agendamento.<br>**Retorno:** Não há. |
353
503
  | getObjectByValue <br> getFilteredItems | Métodos utilizados pelo componente PO-LOOKUP. Desta forma, é possível utilizar o **TotvsScheduleExecutionService** para disponibilizar um lookup de Servidor de Execução RPW na tela. |
354
-
355
- Exemplo de Uso:
504
+ ---
505
+ **Exemplo de Uso:**
356
506
 
357
507
  Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da execução.
358
508
 
359
509
  **Definições no HTML:**
360
- ```
510
+ ```html
361
511
  <po-lookup
362
512
  p-label="Servidor RPW"
363
513
  p-placeholder="Servidor RPW"
@@ -370,7 +520,7 @@ Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da exe
370
520
  </po-lookup>
371
521
  ```
372
522
  **Definições no JavaScript:**
373
- ```
523
+ ```ts
374
524
  executionServer: string;
375
525
  jobScheduleID: string;
376
526
  executionID: string;
@@ -535,7 +685,7 @@ DEFINE TEMP-TABLE tt-digita NO-UNDO
535
685
  FIELD cod-ccusto AS INTEGER.
536
686
  ```
537
687
 
538
- Interfaces:
688
+ **Interfaces:**
539
689
 
540
690
  IExecutionParameters
541
691
  | Nome | Tipo | Obrigatório | Descrição |
@@ -550,6 +700,7 @@ IExecutionParameters
550
700
  | paramDigitDef | Array | Não | Definição da Temp-Table tt-digita. Utilizado apenas pelo EMS2. Para cada campo da tt-digita, deve ser enviado um objeto com o seguinte formato: **{"chave": "string", "tipo": "string" }**. Onde **chave** representa o nome do campo, e **tipo** representa o tipo de dado (exemplo: character, integer, etc...). |
551
701
  | paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
552
702
  | paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
703
+ ---
553
704
 
554
705
  IExecutionStatus
555
706
  | Nome | Tipo | Descrição |
@@ -559,214 +710,137 @@ IExecutionStatus
559
710
  | startedDate | Date | Data e hora em que o agendamento iniciou a execução no RPW. |
560
711
  | error | string | Quando o status for igual a **'FAILURE'**, esta propriedade terá a descrição do erro. |
561
712
  | status | string | Status da execução, podendo ser:<br>- PENDING: O agendamento está enfileirado, aguardando o início da execução.<br>- RUNNING: O agendamento está em execução.<br>- SUCCESS: O agendamento terminou corretamente, sem erros.<br>- FAILURE: O agendamento terminou com erro. A descrição do erro estará disponível na propriedade **error**. Observação: Caso não exista um agendamento com o ID informado, também será retornar este status de erro. |
562
-
563
713
  ---
564
714
 
565
715
  <br>
566
716
 
567
- # ProfileService
568
-
569
- **Objetivo:** Salvar preferências do usuário.
717
+ ## TranslateService
570
718
 
571
- Importação:
572
- ```
573
- import { ProfileService, IProfile } from 'dts-backoffice-util';
719
+ **Objetivo:** Realizar o controle do idioma corrente, considerando o que estiver parametrizado no Cadastro de Usuários do Datasul, e caso não esteja informado, será considerado o idioma informado no Browse.
574
720
 
575
- constructor(public preferenceService: ProfileService) {
576
- }
721
+ **Importação:**
722
+ ```ts
723
+ import { TranslateService } from 'dts-backoffice-util';
577
724
  ```
578
725
 
579
- Métodos:
726
+ **Métodos:**
580
727
 
581
728
  | Nome | Descrição |
582
729
  |-|-|
583
- | setProfile | Salva informações no profile do usuário.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário e as informações serem salvas.<br>**Retorno:**<br>- response (Observable(any)): Retorno do BackEnd. |
584
- | getProfileAsString | Retorna os valores salvos no formato de uma string.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(string)): Informações salvas. |
585
- | getProfileAsJSON | Retorna os valores salvos no formato de um JSON.<br>**Parâmetros:**<br>- profile (IProfile): Objeto com as informações do usuário.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(object)): Informações salvas. |
586
- ---
587
-
588
- Interfaces:
589
-
590
- IProfile
591
- | Nome | Tipo | Obrigatório | Descrição |
592
- |-|-|-|-|
593
- | pageId | string | Sim | Um ID para identificar a Tela que está salvando os parâmetros. |
594
- | userCode | string | Sim | Código do usuário (login). |
595
- | dataCode | string | Sim | Um ID para identificar o parâmetro. |
596
- | dataValue | string | Não | Valor a ser salvo, nos GET's é opcional. |
730
+ | getCurrentLanguage | Retorna o idioma corrente. Será considerado no primeiro momento a chave "user.language" do localStorage. Caso ela não exista ou seja inválida, será considerado o idioma parametrizado no Browse. Além disso, o idioma deve estar disponível na lista de suportados, conforme métodos "getSuportLanguage".<br>**Parâmetros:** Não há.<br>**Retorno:** string |
731
+ | getSuportLanguage | Retornar uma lista com os atuais idiomas suportados.<br>**Parâmetros:** Não há.<br>**Retorno:** Array(string) |
597
732
  ---
598
733
 
599
- Exemplo de Uso:
600
- ```
601
- const profile: IProfile = {
602
- pageId: 'about-component',
603
- userCode: 'super',
604
- dataCode: 'preference',
605
- dataValue: this.preference
606
- };
607
-
608
- this.preferenceService
609
- .setProfile(profile)
610
- .subscribe((response) => {
611
- this.notification.success('Preferência salva com sucesso!');
612
- }, (error) => {
613
- this.notification.error('Não foi possível salvar a preferência');
614
- });
615
- ```
616
-
617
734
  <br>
618
735
 
619
- # UserLoginService
736
+ ## UserLoginService
620
737
 
621
738
  **Objetivo:** Retorna o login do usuário tanto no framework atual e quanto no novo framework.
622
739
 
623
- Importação:
624
- ```
740
+ **Importação:**
741
+ ```ts
625
742
  import { UserLoginService } from 'dts-backoffice-util';
626
743
 
627
744
  constructor( public sessionService: UserLoginService) {
628
745
  }
629
746
  ```
630
747
 
631
- Métodos:
748
+ **Métodos:**
632
749
 
633
750
  | Nome | Descrição |
634
751
  |-|-|
635
752
  | getUserLogin | Retorna o login do usuário.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- response (Observable(string)) |
636
753
  ---
637
754
 
638
- Exemplo de Uso:
639
- ```
755
+ **Exemplo de Uso:**
756
+ ```ts
640
757
  this.sessionService
641
758
  .getUserLogin()
642
759
  .subscribe((user) => {
643
760
  this.notification.success(`O usuário logado é ${user}`);
644
761
  });
645
762
  ```
646
-
647
763
  <br>
648
764
 
649
- # ReportService
765
+ ## ValidateService
650
766
 
651
- **Objetivo:** Faz a chamada do datasul-report e realiza o download do arquivo caso seja especificado.
767
+ **Objetivo:** Realizar o tratamento da validação de campos em formulários, quando utilizados vários componentes **Dynamic Form** na tela de criação/edição. Nesse caso, ao disparar uma validação através de um campo presente em um formulário e nessa validação alterar propriedades e valores de campos que estão em um formulário diferente, a validação não é aplicada. Para o correto funcionamento das validações, é necessário que haja um tratamento da validação no Front End utilizando os métodos criados neste serviço.
652
768
 
653
- Importação:
654
- ```
655
- import {
656
- ReportService,
657
- IReportServiceParams,
658
- ReportFormats
659
- } from 'dts-backoffice-util';
769
+ **Importação:**
770
+ ```ts
771
+ import { ValidateService } from 'dts-backoffice-util';
660
772
 
661
- constructor(public reportService: ReportService) {
773
+ constructor(private validateService: ValidateService) {
662
774
  }
663
775
  ```
664
- Métodos:
776
+
777
+ **Métodos:**
665
778
 
666
779
  | Nome | Descrição |
667
780
  |-|-|
668
- | generate | Retorna o arquivo binário gerado pelo datasul-report e faz o download do arquivo.<br>**Parâmetros:**<br>- params (IReportServiceParams): Parâmetros para execução do relatório.<br>- showLoading (boolean): Indica se deve apresentar a tela de loading enquanto busca as informações.<br>**Retorno:**<br>- response (Observable(Blob)) |
669
- ---
670
-
671
- Interfaces:
672
-
673
- IReportServiceParams
674
-
675
- | Nome | Tipo | Obrigatório | Descrição |
676
- |-|-|-|-|
677
- | reportName | string | Sim | Nome do arquivo .rptDesign |
678
- | programName | string | Sim | Nome do programa progress. |
679
- | properties | Array | Sim | Lista de parâmetros que serão enviados ao progress. O objeto do Array deve implementar a interface **IProperty**. |
680
- | dialect | string | Sim | Idioma do usuário. |
681
- | downloadName | string | Sim | Nome que será dado ao arquivo de download. |
682
- | download | boolean | Sim | O download deve ser efetuado |
683
- | format | enum | Sim | Formato do Arquivo (XLSX, PDF, DOCX ou HTML). Enum: **ReportFormats**. |
781
+ | validate | Realiza uma requisição com o verbo POST para a URL de validação recebida por parâmetro e enviando no payload o objeto de validação também recebido por parâmetro.<br>**Parâmetros:** <br>- url (string): URL referente ao endPoint de validação de formulários da API. Ex.: "/api/rep/v1/userParameters/validateForm".<br>- value ([PoDynamicFormFieldChanged](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.ts)): Objeto com a interface do PO UI que é recebido na função de `validate` do [Dynamic Form](https://po-ui.io/documentation/po-dynamic-form).<br>**Retorno:** Promise([PoDynamicFormValidation](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.ts)) - Retorna uma promise de um objeto com a interface PoDynamicFormValidation. |
782
+ | updateFormFields | Atualiza as propriedades dos campos do formulário enviado por parâmetro com base nas validações, também recebidas por parâmetro.<br>**Parâmetros:** <br>- validation ([PoDynamicFormValidation](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.ts)): Objeto com o resultado das validações retornado pelo método validate.<br>- fields (Array([PoDynamicFormField](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.ts))): Array de objetos com a interface do PO UI. Esse array corresponde à lista de campos do formulário, utilizado para definir a propriedade `fields` no [Dynamic Form](https://po-ui.io/documentation/po-dynamic-form).<br>**Retorno:** Array([PoDynamicFormField](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.ts)) - Retorna o array de campos com as propriedades atualizadas conforme a validação. |
783
+ | updateFormValue | Atualiza os valores dos campos utilizados no formulário com base nas validações.<br>**Parâmetros:** <br>- validation ([PoDynamicFormValidation](https://github.com/po-ui/po-angular/blob/master/projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.ts)): Objeto com o resultado das validações retornado pelo método validate.<br>- value (Objeto(any)): Objeto com os dados da entidade/recurso utilizado para alimentar os campos dos formulários, utilizado para definir a propriedade `fields` no [Dynamic Form](https://po-ui.io/documentation/po-dynamic-form).<br>**Retorno:** Objeto(any) - Retorna o objeto de dados da entidade/recurso com os dados atualizados conforme a validação. |
684
784
  ---
685
785
 
686
- IProperty
786
+ **Exemplo de Uso:**
687
787
 
688
- | Nome | Tipo | Obrigatório | Descrição |
689
- |-|-|-|-|
690
- | name | string | Sim | Nome do parâmetro |
691
- | value | string | Sim | Valor do parâmetro |
692
- ---
788
+ **Definições no HTML:**
693
789
 
694
- Enums
695
- ```
696
- declare enum ReportFormats {
697
- XLSX = "xlsx",
698
- PDF = "pdf",
699
- DOCX = "docx",
700
- HTML = "html"
790
+ Ao invés de passar diretamente a url do endPoint para a propriedade `p-validate` do componente Dynamic Form, deve ser passada uma função `[p-validate]="onValidate.bind(this)"`, como apresentado a seguir. Fazer isso para todos os componentes Dynamic Form.
791
+ ```html
792
+ <po-accordion-item [p-label]="metadata?.literals?.enableDisableFields" #enableDisableFields>
793
+ <po-dynamic-form name="formEnableDisableFields"
794
+ [p-fields]="metadata?.fieldsTypingEnableDisable"
795
+ [p-value]="userParameters"
796
+ [p-validate]="onValidate.bind(this)"
797
+ [p-validate-fields]='metadata?.validateFields'>
798
+ </po-dynamic-form>
799
+ </po-accordion-item>
800
+
801
+ <po-accordion-item [p-label]="metadata?.literals?.configurations" #configurationsTyping>
802
+ <po-dynamic-form name="formConfigurations"
803
+ [p-fields]="metadata?.fieldsTypingConfigurations"
804
+ [p-value]="userParameters"
805
+ [p-validate]="onValidate.bind(this)"
806
+ [p-validate-fields]='metadata?.validateFields'>
807
+ </po-dynamic-form>
808
+ </po-accordion-item>
809
+ ```
810
+ **Definições no TypeScript:**
811
+
812
+ No typescript de controle do componente defina a função de validação conforme apresentado a seguir.
813
+ ```ts
814
+ public async onValidate(fieldChanged: PoDynamicFormFieldChanged){
815
+ let validation: PoDynamicFormValidation = await this.validateService.validate('/api/rep/v1/userParameters/validateForm', fieldChanged);
816
+
817
+ this.metadata.fieldsTypingEnableDisable = [...this.validateService.updateFormFields(validation, this.metadata.fieldsTypingEnableDisable)];
818
+ this.metadata.fieldsTypingConfigurations = [...this.validateService.updateFormFields(validation, this.metadata.fieldsTypingConfigurations)];
819
+
820
+ this.userParameters = {...this.validateService.updateFormValue(validation, this.userParameters)};
821
+
822
+ return validation;
701
823
  }
702
824
  ```
703
-
704
- Exemplo de Uso:
705
- ```
706
- const properties: Array<IProperty> = [
707
- {
708
- name: 'custom.quick_search',
709
- value: '186'
710
- }
711
- ];
712
-
713
- const params: IReportServiceParams = {
714
- reportName: 'crm/rel_campaign_export',
715
- programName: '/report/crm/crm0010',
716
- properties,
717
- dialect: 'pt',
718
- download: true,
719
- downloadName: '2020-1-10_13-51-53_CRM_CAMPANHAS',
720
- format: ReportFormats.XLSX
721
- };
722
-
723
- this.reportService
724
- .generate(params)
725
- .subscribe(() => {
726
- this.notification.error("Arquivo baixado com sucesso!");
727
- }, () => {
728
- this.notification.error("Não foi possível baixar o arquivo");
729
- });
730
- ```
731
-
732
- <br>
733
-
734
- # BreadcrumbControlService
735
-
736
- **Objetivo:** Realiza a criação e controle do breadcrumb das telas.
737
-
738
- Importação:
739
- ```
740
- import { BreadcrumbControlService } from 'dts-backoffice-util';
741
- ```
742
-
743
- Métodos:
744
-
745
- | Nome | Descrição |
746
- |-|-|
747
- | newBreadcrumb | "Reinicia" o breadcrumb quando necessário. Ex: Telas que possuem menu lateral, ao passar de um menu para outro, o breadcrumb deve ser reiniciado.<br>**Parâmetros:** Não há.<br>**Retorno:** Não há. |
748
- | addBreadcrumb | Adiciona um item ao breadcrumb, considerando a URL atual da tela.<br>**Parâmetros:**<br>- literal (string): Nome da tela que será apresentado no breadcrumb.<br>- activatedRoute (ActivatedRoute): ActivedRoute da tela.<br>**Retorno:** Não há. |
749
- | addBreadcrumbURL | Adiciona um item ao breadcrumb, informando uma URL específica.<br>**Parâmetros:**<br>- literal (string): Nome da tela que será apresentado no breadcrumb.<br>- url (string): URL específica.<br>**Retorno:** Não há. |
750
- | updBreadcrumbURL | Altera uma informação qualquer contida na URL do item informado.<br>**Parâmetros:**<br>- literal (string): Nome da tela que está no breadcrumb.<br>- valueOld (string): Valor a ser substituído.<br>- valueNew (string): Novo valor.<br>**Retorno:** Não há. |
751
- | delBreadcrumb | Exclui um item do breadcrumb.<br>**Parâmetros:**<br>- literal (string): Nome do item (nome da tela), que deve ser excluído do breadcrumb.<br>**Retorno:** Não há. |
752
- | getBreadcrumb | Retorna o breadcrumb atual completo.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- breadcrumb (PoBreadcrumb) |
753
- | getCurrentRouter | Retorna a URL do breadcrumb do item corrente.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
754
- | getPrevRouter | Retorna a URL do breadcrumb do item anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
755
- | hasPreviousRouter | Indica se existe um item de breadcrumb anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- exist (boolean) |
756
- ---
825
+ > Notas:
826
+ > + A função `onValidate` precisar ser definado com a palavre `async`, pois precisa aguardar o retorno da função `validate` do serviço.
827
+ > + Substitua o array de campos nas chamadas do método `updateFormFields` para corresponder ao array utilizado no Dynamic Form. Para cada formulário dinâmico existente na tela, deve haver uma chamada ao método `updateFormFields`.
828
+ > + Substitua o objeto na chamada do método `updateFormValue` para corresponder ao objeto utilizado no `p-value` dos formulários. Como será utilizado o mesmo objeto para os valores essa chamada ocorrerá apenas uma vez.
757
829
 
758
830
  <br>
759
831
 
760
- # DateUtil
832
+ # Utils
833
+
834
+ ## DateUtil
761
835
 
762
836
  **Objetivo:** Manipula informações de data.
763
837
 
764
- Importação:
765
- ```
838
+ **Importação:**
839
+ ```ts
766
840
  import { DateUtil } from 'dts-backoffice-util';
767
841
  ```
768
842
 
769
- Métodos:
843
+ **Métodos:**
770
844
 
771
845
  | Nome | Descrição |
772
846
  |-|-|
@@ -777,19 +851,30 @@ Métodos:
777
851
  | ajustDateToModel | Ajusta a data para o padrão do objeto Date. Utilizado nos construtores dos modelos.<br>**Parâmetros:**<br>- object (object): Objeto que possui atributos do tipo data.<br>- fieldName (string): Nome do Atributo que possui a data.<br>**Retorno:**<br>- date (date) |
778
852
  | pad | Adiciona zero à esquerda do número.<br>**Parâmetros:**<br>- number (number): Número.<br>**Retorno:**<br>- number (string) |
779
853
  ---
854
+ <br>
855
+
856
+ ## DisclaimerUtil
857
+
858
+ xxxx
859
+
860
+ <br>
861
+
862
+ ## FieldValidationUtil
863
+
864
+ xxxx
780
865
 
781
866
  <br>
782
867
 
783
- # FileUtil
868
+ ## FileUtil
784
869
 
785
870
  **Objetivo:** Auxílio na manipulação de Arquivos.
786
871
 
787
- Importação:
788
- ```
872
+ **Importação:**
873
+ ```ts
789
874
  import { FileUtil } from 'dts-backoffice-util';
790
875
  ```
791
876
 
792
- Métodos:
877
+ **Métodos:**
793
878
 
794
879
  | Nome | Descrição |
795
880
  |-|-|
@@ -797,13 +882,12 @@ Métodos:
797
882
  | downloadData | Realiza a criação e o download de um arquivo CSV gerado a partir de um listagem de dados (criada diretamente no FrontEnd ou retornada do BackEnd). Este método pode ser utilizado para, por exemplo, exportar os dados de um Grid.<br>**Parâmetros:**<br>- data (Array): Um Array com a listagem de dados, por exemplo, uma lista de clientes.<br>- dwldDataParam (IDownloadDataParams): Parâmetros de configuração do arquivo. Este parâmetro é opcional, caso ele não seja informado, serão assumidos valores padrões de configuração, conforme descrito na inteface **IDownloadDataParams**.<br>**Retorno:** não há. |
798
883
  | fileToB64 | Realiza a conversão de um arquivo para o formato Base64.<br>**Parâmetros:**<br>- file (File): Objeto do Tipo "File".<br>**Retorno:**<br>- content (string): Conteúdo do arquivo no formato Base64. |
799
884
  | b64toBlob | Realiza a conversão de um arquivo que está no formato Base64, para o formato Blob.<br>**Parâmetros:**<br>- b64Data (any): Conteúdo do Arquivo no formato Base64.<br>- contentType (string): Tipo do Arquivo no formato [**MIME Type**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). Este parâmetro é opcional.<br>**Retorno:**<br>- content (Blob): Conteúdo do arquivo no formato Blob. |
800
-
801
885
  ---
802
886
 
803
- Exemplo de Uso:
887
+ **Exemplo de Uso:**
804
888
 
805
889
  **Definições no JavaScript:**
806
- ```
890
+ ```ts
807
891
  // TS da Tela
808
892
 
809
893
  import { FileUtil } from 'dts-backoffice-util';
@@ -884,7 +968,7 @@ oOutput:ADD("filename", v_cod_arq).
884
968
  oOutput:ADD("content", v_lch_arq).
885
969
  ```
886
970
 
887
- Interfaces:
971
+ **Interfaces:**
888
972
 
889
973
  IDownloadDataParams
890
974
 
@@ -895,27 +979,16 @@ IDownloadDataParams
895
979
  | columnDelimiter | string | Não | Caracter utilizado para separação das colunas. Caso não seja informado, será utilizado o caracter **";"**. |
896
980
  | columnList | Array(string) | Não | Lista das colunas que devem ser exportadas para o arquivo. As colunas serão exportadas na mesma ordem informada neste parâmetro. Caso não seja informada, serão exportadas todas as colunas da listagem. |
897
981
  | columnExclude | Array(string) | Não | Lista das colunas que não devem ser exportadas para o arquivo. Caso não seja informada, serão exportadas todas as colunas da listagem. |
982
+ ---
898
983
 
899
984
  <br>
900
985
 
901
- # DisclaimerUtil
902
-
903
- xxxx
904
-
905
- <br>
906
-
907
- # FieldValidationUtil
908
-
909
- xxxx
910
-
911
- <br>
912
-
913
- # FilterRangeUtil
986
+ ## FilterRangeUtil
914
987
 
915
988
  xxxx
916
989
 
917
990
  <br>
918
991
 
919
- # GenericFunctionsUtils
992
+ ## GenericFunctionsUtils
920
993
 
921
994
  xxxx