dts-backoffice-util 17.0.0 → 17.2.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.
package/README.md CHANGED
@@ -12,7 +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.0.0 |
15
+ | v17 | v17 | 17.2.0 |
16
16
  | v16 | v16 | 16.1.0 |
17
17
  | v15 | v15 | 15.4.1 |
18
18
  | v14 | v14 | 14.4.1 |
@@ -28,41 +28,331 @@ Segue abaixo as últimas versões da Biblioteca, conforme a versão do PO-UI e A
28
28
 
29
29
  **Instalação do Pacote:**
30
30
 
31
- ```
31
+ ```cmd
32
32
  npm install dts-backoffice-util
33
33
  ```
34
34
 
35
35
  <br>
36
36
 
37
- # Componentes e Serviços Disponíveis
37
+ # Componentes
38
38
 
39
+ ## TotvsScheduleExecutionComponent
39
40
  <br>
40
41
 
41
- # TranslateService
42
-
43
- **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.
44
43
 
45
- 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
46
47
  ```
47
- 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
+ })
48
61
  ```
49
62
 
50
- 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:**
51
81
 
52
82
  | Nome | Descrição |
53
83
  |-|-|
54
- | 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 |
55
- | 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...). |
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
+ ```ts
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
+ ```
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 | |
56
209
  ---
210
+ <br>
57
211
 
212
+ ## TotvsMapComponent
58
213
  <br>
59
214
 
60
- # dtsDateFormat
215
+ **Objetivo:** Componente para utilização de um mapa do Brasil interativo, que permite a seleção de um estado específico, que dispara um evento, pegando o estado selecionado.
216
+
217
+ **Importação:** Importar o componente do mapa no módulo que será utilizado.
218
+
219
+ ```ts
220
+ @NgModule({
221
+ declarations: [
222
+ ...
223
+ ],
224
+ imports: [
225
+ ...,
226
+ DtsBackofficeUtilsModule.forRoot()
227
+ ],
228
+ providers: [],
229
+ bootstrap: [...]
230
+ })
231
+ ```
232
+
233
+ **Parâmetros:**
234
+
235
+ | Nome | Tipo | Obrigatório | Descrição |
236
+ |-|-|-|-|
237
+ | enabledStates | string[] | Não | Parâmetro que recebe uma lista de siglas de estados que devem ser habilitados no mapa, aqueles não que forem informados serão desabilitado. Se este parâmetro não for informado, todos os estados ficaram habilitados.<br>Se o parâmetro receber uma variável, sempre que o conteúdo dela for alterado, o mapa será atualizado automaticamente com o novo valor.
238
+ | initialSelectedState | string | Não | Parâmetro para fornecer um estado a ser selecionado no mapa.<br>Se o parâmetro receber uma variável, sempre que o conteúdo dela for alterado, o mapa será atualizado automaticamente com o novo valor.
239
+ | selectedStateEvent | EventEmitter | Sim | Evento disparado ao selecionar um estado do mapa.<br>**Parâmetros:**<br>- State: Responsável por receber do componente o estado selecionado. |
240
+ ---
241
+ **Exemplo de Uso:**
242
+
243
+ Para a utilização, basta chamar o componente no .HTML e fazer a definição no .TS do seu método.
244
+
245
+ **Definições no HTML:**
246
+ ```html
247
+ // EXEMPLO
248
+ <app-totvs-map
249
+ [enabledStates]="enabledStates"
250
+ [initialSelectedState]="initialSelectedState"
251
+ (selectedStateEvent)="selectedState($event)">
252
+ </app-totvs-map>
253
+ ```
254
+
255
+ **Definições no JavaScript:**
256
+ ```ts
257
+ state: string;
258
+ enabledStates: string[];
259
+ initialSelectedState: string;
260
+
261
+ searchTax(): void {
262
+ this.servTaxSubscription$ = this.servTax
263
+ .getTax()
264
+ .subscribe((response: ITotalTax) => {
265
+
266
+ if (response) {
267
+ ...
268
+ this.enabledStates = response.listStates;
269
+ this.initialSelectedState = response.listStates[0];
270
+ }
271
+ });
272
+ }
273
+
274
+ selectedState(state: string) {
275
+ this.state = state;
276
+ }
277
+ ```
278
+
279
+ **Alterando as cores do mapa:**
280
+
281
+ O mapa já possui as cores da TOTVS como padrão. Mas caso seja necessário alterar alguma cor, deve-se utilizar o código abaixo dentro do styles.css do projeto, alterando os valores.
282
+
283
+ ```css
284
+ /* Cor padrão de um estado não selecionado */
285
+ .defaultState {
286
+ fill: #0c6c94;
287
+ }
288
+
289
+ /* Cor padrão de um estado não selecionado, quando passar o mouse em cima*/
290
+ .defaultState:hover {
291
+ fill: #29b5c4;
292
+ cursor: pointer;
293
+ }
294
+
295
+ /* Cor padrão de um estado pequeno (DF, ES, RJ) não selecionado */
296
+ .defaultStateCircle {
297
+ fill: #0c6c94;
298
+ }
299
+
300
+ /* Cor padrão de um estado pequeno (DF, ES, RJ) não selecionado, quando passar o mouse em cima */
301
+ .defaultStateCircle:hover {
302
+ fill: #29b5c4;
303
+ cursor: pointer;
304
+ }
305
+
306
+ /* Cor padrão de um estado desabilitado */
307
+ .disabledState {
308
+ fill: grey !important;
309
+ }
310
+
311
+ /* Cor padrão de um estado selecionado */
312
+ .selectedState {
313
+ fill: #29b5c4;
314
+ }
315
+
316
+ /* Cor padrão de um estado pequeno (DF, ES, RJ) selecionado */
317
+ .selectedStateCircle {
318
+ fill: #29b5c4;
319
+ }
320
+
321
+ .disableEvents {
322
+ pointer-events: none;
323
+ }
324
+
325
+ /* Cor e fonte padrão do nome dos estados */
326
+ .text {
327
+ fill: #fff;
328
+ font: 12px Arial-BoldMT, sans-serif;
329
+ cursor: pointer
330
+ }
331
+
332
+ /* Padrão do estado como um todo - estado + texto (que seria a tag <a>) */
333
+ .stateWithText {
334
+ text-decoration: none
335
+ }
336
+
337
+ .stateWithText:hover {
338
+ cursor: pointer;
339
+ text-decoration: none;
340
+ }
341
+
342
+ /* Cor padrão ao passar o mouse em cima do estado como um todo - estado + texto */
343
+ .stateWithText:hover .defaultState, .stateWithText:hover .defaultStateCircle {
344
+ fill: #29b5c4;
345
+ }
346
+ ```
347
+
348
+ # Pipes
349
+
350
+ ## dtsDateFormat
61
351
 
62
352
  **Objetivo:** PIPE para formatar datas, ele foi criado pois o PIPE date do angular não consegue formatada datas inferiores a 1901.
63
353
 
64
354
  **Importação:** No módulo de funcionalidade importar o módulo abaixo:
65
- ```
355
+ ```ts
66
356
  @NgModule({
67
357
  declarations: [
68
358
  ...
@@ -77,7 +367,7 @@ Métodos:
77
367
  ```
78
368
 
79
369
  Exemplo de uso:
80
- ```
370
+ ```html
81
371
  <po-info p-label="Data"
82
372
  [p-value]="date | dtsDateFormat : 'dd/MM/yyyy'">
83
373
  </po-info>
@@ -86,22 +376,49 @@ Exemplo de uso:
86
376
  [p-value]="date | dtsDateFormat : 'MM/dd/yyyy'">
87
377
  </po-info>
88
378
  ```
379
+ <br>
380
+
381
+ # Serviços
382
+
383
+ ## BreadcrumbControlService
384
+
385
+ **Objetivo:** Realiza a criação e controle do breadcrumb das telas.
386
+
387
+ **Importação:**
388
+ ```ts
389
+ import { BreadcrumbControlService } from 'dts-backoffice-util';
390
+ ```
391
+
392
+ **Métodos:**
393
+
394
+ | Nome | Descrição |
395
+ |-|-|
396
+ | 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á. |
397
+ | 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á. |
398
+ | 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á. |
399
+ | 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á. |
400
+ | 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á. |
401
+ | getBreadcrumb | Retorna o breadcrumb atual completo.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- breadcrumb (PoBreadcrumb) |
402
+ | getCurrentRouter | Retorna a URL do breadcrumb do item corrente.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
403
+ | getPrevRouter | Retorna a URL do breadcrumb do item anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
404
+ | hasPreviousRouter | Indica se existe um item de breadcrumb anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- exist (boolean) |
405
+ ---
89
406
 
90
407
  <br>
91
408
 
92
- # MenuDatasulService
409
+ ## MenuDatasulService
93
410
 
94
411
  **Objetivo:** Interagir com o Menu do Datasul.
95
412
 
96
- Importação:
97
- ```
413
+ **Importação:**
414
+ ```ts
98
415
  import { MenuDatasulService } from 'dts-backoffice-util';
99
416
 
100
417
  constructor(public menuDatasulService: MenuDatasulService) {
101
418
  }
102
419
  ```
103
420
 
104
- Métodos:
421
+ **Métodos:**
105
422
 
106
423
  | Nome | Descrição |
107
424
  |-|-|
@@ -112,8 +429,8 @@ Métodos:
112
429
  | 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". |
113
430
  ---
114
431
 
115
- Exemplo de uso:
116
- ```
432
+ **Exemplo de uso:**
433
+ ```ts
117
434
  // Executando uma tela Progress
118
435
  program = {
119
436
  prg: 'bas_lote_liquidac_acr',
@@ -167,182 +484,150 @@ this.menuDatasulService
167
484
 
168
485
  <br>
169
486
 
170
- # TotvsScheduleExecutionComponent
487
+ ## ProfileService
171
488
 
172
- **Objetivo:** Componente para realização de agendamentos RPW.
489
+ **Objetivo:** Salvar preferências do usuário.
173
490
 
174
- **Dependências:** Para usar esse componente deve ser instalado no projeto o pacote rxjs-compat.<br/>
175
- - **npm i rxjs-compat --save**
491
+ **Importação:**
492
+ ```ts
493
+ import { ProfileService, IProfile } from 'dts-backoffice-util';
176
494
 
177
- **Importação:** No módulo da aplicação importar o módulo abaixo:
178
- ```
179
- @NgModule({
180
- declarations: [
181
- ...
182
- ],
183
- imports: [
184
- ...,
185
- DtsBackofficeUtilsModule.forRoot()
186
- ],
187
- providers: [],
188
- bootstrap: [...]
189
- })
495
+ constructor(public preferenceService: ProfileService) {
496
+ }
190
497
  ```
191
498
 
192
- Parâmetros:
193
-
194
- | Nome | Tipo | Obrigatório | Descrição |
195
- |-|-|-|-|
196
- | programName | string | Sim | Código de Programa cadastrado no menu, do programa que será executado no RPW. |
197
- | 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. |
198
- | programEMS5 | boolean | Não | Indica se o programa progress é do EMS5. |
199
- | programStyle | number | Não | Número que representa o Estilo do Relatório no EMS5. |
200
- | programVersion | string | Não | Versão do programa progress. |
201
- | parameters | Array | Sim | Objeto representando a Temp-Table que será enviada ao progress. |
202
- | 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...). |
203
- | paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
204
- | paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
205
- | disabledParams | boolean | Não | Quando for igual a **"Sim"**, irá desabilitar todos os campos do Agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
206
- | 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. |
207
- | 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. |
208
-
209
- Métodos:
499
+ **Métodos:**
210
500
 
211
501
  | Nome | Descrição |
212
502
  |-|-|
213
- | 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á. |
214
- | 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...). |
503
+ | 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. |
504
+ | 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. |
505
+ | 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. |
506
+ ---
215
507
 
216
- Exemplo de Uso:
508
+ **Interfaces:**
217
509
 
218
- 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.
510
+ IProfile
511
+ | Nome | Tipo | Obrigatório | Descrição |
512
+ |-|-|-|-|
513
+ | pageId | string | Sim | Um ID para identificar a Tela que está salvando os parâmetros. |
514
+ | userCode | string | Sim | Código do usuário (login). |
515
+ | dataCode | string | Sim | Um ID para identificar o parâmetro. |
516
+ | dataValue | string | Não | Valor a ser salvo, nos GET's é opcional. |
517
+ ---
219
518
 
220
- **Definições no HTML:**
221
- ```
222
- // EXEMPLO PARA EMS5
223
- <app-totvs-schedule-execution #schParam
224
- programName="rpt_grp_repres"
225
- externalName="rpt_grp_repres"
226
- programEMS5="true"
227
- programStyle="40"
228
- programVersion="1.00.00.004"
229
- [parameters]="parametersRpw"
230
- [paramSelections]="paramSelectionsRpw"
231
- (endExecution)="endExecutionSchedule($event)">
232
- </app-totvs-schedule-execution>
519
+ **Exemplo de Uso:**
520
+ ```ts
521
+ const profile: IProfile = {
522
+ pageId: 'about-component',
523
+ userCode: 'super',
524
+ dataCode: 'preference',
525
+ dataValue: this.preference
526
+ };
233
527
 
234
- // EXEMPLO PARA EMS2
235
- <app-totvs-schedule-execution #schParam
236
- programName="pdapi701"
237
- externalName="pdp/pdapi701.p"
238
- [parameters]="parametersRpw"
239
- [paramDigitDef]="paramDigitDefRpw"
240
- [paramDigitData]="paramDigitDataRpw"
241
- (endExecution)="endExecutionSchedule($event)">
242
- </app-totvs-schedule-execution>
243
- ```
244
- **Definições no JavaScript:**
528
+ this.preferenceService
529
+ .setProfile(profile)
530
+ .subscribe((response) => {
531
+ this.notification.success('Preferência salva com sucesso!');
532
+ }, (error) => {
533
+ this.notification.error('Não foi possível salvar a preferência');
534
+ });
245
535
  ```
246
- @ViewChild('schParam', { static: true }) schParam: TotvsScheduleExecutionComponent;
247
536
 
248
- scheduleParams: IScheduleParameters;
249
- parametersRpw = new Array<any>();
250
- paramDigitDefRpw = new Array<any>();
251
- paramDigitDataRpw = new Array<any>();
252
- paramSelectionsRpw = new Array<any>();
537
+ <br>
253
538
 
254
- ngOnInit(): void {
255
- this.loadLocalStorage();
256
- this.schParam.setScheduleParameters(this.scheduleParams);
539
+ ## ReportService
257
540
 
258
- this.createParametersRpw();
541
+ **Objetivo:** Faz a chamada do datasul-report e realiza o download do arquivo caso seja especificado.
542
+
543
+ **Importação:**
544
+ ```ts
545
+ import {
546
+ ReportService,
547
+ IReportServiceParams,
548
+ ReportFormats
549
+ } from 'dts-backoffice-util';
550
+
551
+ constructor(public reportService: ReportService) {
259
552
  }
553
+ ```
554
+ **Métodos:**
260
555
 
261
- createParametersRpw(): void {
262
- // Parâmetros
263
- this.parametersRpw = [
264
- { chave: 'destino', valor: 2, tipo: 'integer' },
265
- { chave: 'arquivo', valor: '', tipo: 'character' },
266
- { chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
267
- { chave: 'perfil', valor: 880, tipo: 'integer' }
268
- ];
556
+ | Nome | Descrição |
557
+ |-|-|
558
+ | 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)) |
559
+ ---
560
+ <br>
269
561
 
270
- // Definição da tt-digita (EMS2)
271
- this.paramDigitDefRpw = [
272
- { chave: 'cod-estab', tipo: 'character' },
273
- { chave: 'cod-ccusto', tipo: 'integer' }
274
- ];
562
+ **Interfaces:**
275
563
 
276
- // Dados da tt-digita (EMS2)
277
- this.paramDigitDataRpw = [
278
- { "cod-estab": '19', "cod-ccusto": 17 },
279
- { "cod-estab": '28', "cod-ccusto": 11 },
280
- { "cod-estab": '73', "cod-ccusto": 90 }
281
- ];
564
+ IReportServiceParams
565
+
566
+ | Nome | Tipo | Obrigatório | Descrição |
567
+ |-|-|-|-|
568
+ | reportName | string | Sim | Nome do arquivo .rptDesign |
569
+ | programName | string | Sim | Nome do programa progress. |
570
+ | properties | Array | Sim | Lista de parâmetros que serão enviados ao progress. O objeto do Array deve implementar a interface **IProperty**. |
571
+ | dialect | string | Sim | Idioma do usuário. |
572
+ | downloadName | string | Sim | Nome que será dado ao arquivo de download. |
573
+ | download | boolean | Sim | O download deve ser efetuado |
574
+ | format | enum | Sim | Formato do Arquivo (XLSX, PDF, DOCX ou HTML). Enum: **ReportFormats**. |
575
+ ---
282
576
 
283
- // Seleção (Relatório Regra/Exceção do EMS5)
284
- this.paramSelectionsRpw = [
285
- { ind_dwb_set_type: "Regra", cod_dwb_set: "estab",
286
- cod_dwb_set_initial: "01", cod_dwb_set_final: "FF", log_dwb_rule: true },
287
- { ind_dwb_set_type: "Exceção", cod_dwb_set: "ccusto",
288
- cod_dwb_set_initial: "30", cod_dwb_set_final: "35", log_dwb_rule: false }
289
- ]
290
- }
577
+ IProperty
291
578
 
292
- endExecutionSchedule(event): void {
293
- this.scheduleParams = event;
294
- this.saveLocalStorage();
295
- }
579
+ | Nome | Tipo | Obrigatório | Descrição |
580
+ |-|-|-|-|
581
+ | name | string | Sim | Nome do parâmetro |
582
+ | value | string | Sim | Valor do parâmetro |
583
+ ---
296
584
 
297
- private saveLocalStorage(): void {
298
- if (typeof (Storage) === 'undefined') { return; }
299
- localStorage.setItem('param-maint.schParam', JSON.stringify(this.scheduleParams));
300
- }
585
+ <br>
301
586
 
302
- private loadLocalStorage(): void {
303
- if (typeof (Storage) === 'undefined') { return; }
304
- this.scheduleParams = JSON.parse(localStorage.getItem('param-maint.schParam'));
587
+ **Enums**
588
+ ```ts
589
+ declare enum ReportFormats {
590
+ XLSX = "xlsx",
591
+ PDF = "pdf",
592
+ DOCX = "docx",
593
+ HTML = "html"
305
594
  }
306
595
  ```
307
- **Definições no Progress:**
308
- ```
309
- DEFINE TEMP-TABLE tt-param NO-UNDO
310
- FIELD destino AS INTEGER
311
- FIELD arquivo AS CHARACTER
312
- FIELD usuario AS CHARACTER
313
- FIELD perfil AS INTEGER.
314
-
315
- DEFINE TEMP-TABLE tt-digita NO-UNDO
316
- FIELD cod-estab AS CHARACTER
317
- FIELD cod-ccusto AS INTEGER.
318
- ```
319
596
 
320
- Interfaces:
597
+ **Exemplo de Uso:**
598
+ ```ts
599
+ const properties: Array<IProperty> = [
600
+ {
601
+ name: 'custom.quick_search',
602
+ value: '186'
603
+ }
604
+ ];
321
605
 
322
- IScheduleParameters
323
- | Nome | Tipo | Descrição | Valor - Label Valor |
324
- |-|-|-|-|
325
- | executionType | number | Tipo Execução | 1 - Executar Hoje<br>2 - Agendar Execução |
326
- | execAppointDate | date | Data Agendada | |
327
- | execAppointHour | string | Hora Agendada | |
328
- | executionServer | string | Servidor RPW | |
329
- | repeatExecution | boolean | Repetir Ocorrência | |
330
- | repeatType | number | Tipo Repetição | 1 - Diária<br>2 - Semanal<br>3 - Mensal |
331
- | frequency | string | Frequência | "no" - Uma vez no dia<br>"yes" - Várias vezes no dia |
332
- | frequencyValue | number | Quantidade da Frequência | |
333
- | frequencyType | string | Tipo Frequência | "hour" - Hora(s)<br>"minute" - Minuto(s) |
334
- | execAppointHourInit | string | Hora Inicial Frequência | |
335
- | execAppointHourFinal | string | Hora Final Frequência | |
336
- | 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 |
337
- | dayOfMonth | number | Dia do Mês<br>Frequência Mensal | |
606
+ const params: IReportServiceParams = {
607
+ reportName: 'crm/rel_campaign_export',
608
+ programName: '/report/crm/crm0010',
609
+ properties,
610
+ dialect: 'pt',
611
+ download: true,
612
+ downloadName: '2020-1-10_13-51-53_CRM_CAMPANHAS',
613
+ format: ReportFormats.XLSX
614
+ };
338
615
 
616
+ this.reportService
617
+ .generate(params)
618
+ .subscribe(() => {
619
+ this.notification.error("Arquivo baixado com sucesso!");
620
+ }, () => {
621
+ this.notification.error("Não foi possível baixar o arquivo");
622
+ });
623
+ ```
339
624
  <br>
340
625
 
341
- # TotvsScheduleExecutionService
626
+ ## TotvsScheduleExecutionService
342
627
 
343
628
  **Objetivo:** Serviço que disponibiliza métodos para geração de agendamento e acompanhamento do RPW.
344
629
 
345
- Métodos:
630
+ **Métodos:**
346
631
 
347
632
  | Nome | Descrição |
348
633
  |-|-|
@@ -352,13 +637,13 @@ Métodos:
352
637
  | 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á. |
353
638
  | 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á. |
354
639
  | 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. |
355
-
356
- Exemplo de Uso:
640
+ ---
641
+ **Exemplo de Uso:**
357
642
 
358
643
  Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da execução.
359
644
 
360
645
  **Definições no HTML:**
361
- ```
646
+ ```html
362
647
  <po-lookup
363
648
  p-label="Servidor RPW"
364
649
  p-placeholder="Servidor RPW"
@@ -371,7 +656,7 @@ Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da exe
371
656
  </po-lookup>
372
657
  ```
373
658
  **Definições no JavaScript:**
374
- ```
659
+ ```ts
375
660
  executionServer: string;
376
661
  jobScheduleID: string;
377
662
  executionID: string;
@@ -524,7 +809,7 @@ followUpCallBack(execStatus: IExecutionStatus): boolean {
524
809
  }
525
810
  ```
526
811
  **Definições no Progress:**
527
- ```
812
+ ```ts
528
813
  DEFINE TEMP-TABLE tt-param NO-UNDO
529
814
  FIELD destino AS INTEGER
530
815
  FIELD arquivo AS CHARACTER
@@ -536,7 +821,7 @@ DEFINE TEMP-TABLE tt-digita NO-UNDO
536
821
  FIELD cod-ccusto AS INTEGER.
537
822
  ```
538
823
 
539
- Interfaces:
824
+ **Interfaces:**
540
825
 
541
826
  IExecutionParameters
542
827
  | Nome | Tipo | Obrigatório | Descrição |
@@ -551,6 +836,7 @@ IExecutionParameters
551
836
  | 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...). |
552
837
  | paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
553
838
  | paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
839
+ ---
554
840
 
555
841
  IExecutionStatus
556
842
  | Nome | Tipo | Descrição |
@@ -560,214 +846,137 @@ IExecutionStatus
560
846
  | startedDate | Date | Data e hora em que o agendamento iniciou a execução no RPW. |
561
847
  | error | string | Quando o status for igual a **'FAILURE'**, esta propriedade terá a descrição do erro. |
562
848
  | 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. |
563
-
564
849
  ---
565
850
 
566
851
  <br>
567
852
 
568
- # ProfileService
569
-
570
- **Objetivo:** Salvar preferências do usuário.
853
+ ## TranslateService
571
854
 
572
- Importação:
573
- ```
574
- import { ProfileService, IProfile } from 'dts-backoffice-util';
855
+ **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.
575
856
 
576
- constructor(public preferenceService: ProfileService) {
577
- }
857
+ **Importação:**
858
+ ```ts
859
+ import { TranslateService } from 'dts-backoffice-util';
578
860
  ```
579
861
 
580
- Métodos:
862
+ **Métodos:**
581
863
 
582
864
  | Nome | Descrição |
583
865
  |-|-|
584
- | 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. |
585
- | 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. |
586
- | 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. |
587
- ---
588
-
589
- Interfaces:
590
-
591
- IProfile
592
- | Nome | Tipo | Obrigatório | Descrição |
593
- |-|-|-|-|
594
- | pageId | string | Sim | Um ID para identificar a Tela que está salvando os parâmetros. |
595
- | userCode | string | Sim | Código do usuário (login). |
596
- | dataCode | string | Sim | Um ID para identificar o parâmetro. |
597
- | dataValue | string | Não | Valor a ser salvo, nos GET's é opcional. |
866
+ | 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 |
867
+ | getSuportLanguage | Retornar uma lista com os atuais idiomas suportados.<br>**Parâmetros:** Não há.<br>**Retorno:** Array(string) |
598
868
  ---
599
869
 
600
- Exemplo de Uso:
601
- ```
602
- const profile: IProfile = {
603
- pageId: 'about-component',
604
- userCode: 'super',
605
- dataCode: 'preference',
606
- dataValue: this.preference
607
- };
608
-
609
- this.preferenceService
610
- .setProfile(profile)
611
- .subscribe((response) => {
612
- this.notification.success('Preferência salva com sucesso!');
613
- }, (error) => {
614
- this.notification.error('Não foi possível salvar a preferência');
615
- });
616
- ```
617
-
618
870
  <br>
619
871
 
620
- # UserLoginService
872
+ ## UserLoginService
621
873
 
622
874
  **Objetivo:** Retorna o login do usuário tanto no framework atual e quanto no novo framework.
623
875
 
624
- Importação:
625
- ```
876
+ **Importação:**
877
+ ```ts
626
878
  import { UserLoginService } from 'dts-backoffice-util';
627
879
 
628
880
  constructor( public sessionService: UserLoginService) {
629
881
  }
630
882
  ```
631
883
 
632
- Métodos:
884
+ **Métodos:**
633
885
 
634
886
  | Nome | Descrição |
635
887
  |-|-|
636
888
  | getUserLogin | Retorna o login do usuário.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- response (Observable(string)) |
637
889
  ---
638
890
 
639
- Exemplo de Uso:
640
- ```
891
+ **Exemplo de Uso:**
892
+ ```ts
641
893
  this.sessionService
642
894
  .getUserLogin()
643
895
  .subscribe((user) => {
644
896
  this.notification.success(`O usuário logado é ${user}`);
645
897
  });
646
898
  ```
647
-
648
899
  <br>
649
900
 
650
- # ReportService
901
+ ## ValidateService
651
902
 
652
- **Objetivo:** Faz a chamada do datasul-report e realiza o download do arquivo caso seja especificado.
903
+ **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.
653
904
 
654
- Importação:
655
- ```
656
- import {
657
- ReportService,
658
- IReportServiceParams,
659
- ReportFormats
660
- } from 'dts-backoffice-util';
905
+ **Importação:**
906
+ ```ts
907
+ import { ValidateService } from 'dts-backoffice-util';
661
908
 
662
- constructor(public reportService: ReportService) {
909
+ constructor(private validateService: ValidateService) {
663
910
  }
664
911
  ```
665
- Métodos:
912
+
913
+ **Métodos:**
666
914
 
667
915
  | Nome | Descrição |
668
916
  |-|-|
669
- | 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)) |
670
- ---
671
-
672
- Interfaces:
673
-
674
- IReportServiceParams
675
-
676
- | Nome | Tipo | Obrigatório | Descrição |
677
- |-|-|-|-|
678
- | reportName | string | Sim | Nome do arquivo .rptDesign |
679
- | programName | string | Sim | Nome do programa progress. |
680
- | properties | Array | Sim | Lista de parâmetros que serão enviados ao progress. O objeto do Array deve implementar a interface **IProperty**. |
681
- | dialect | string | Sim | Idioma do usuário. |
682
- | downloadName | string | Sim | Nome que será dado ao arquivo de download. |
683
- | download | boolean | Sim | O download deve ser efetuado |
684
- | format | enum | Sim | Formato do Arquivo (XLSX, PDF, DOCX ou HTML). Enum: **ReportFormats**. |
917
+ | 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. |
918
+ | 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. |
919
+ | 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. |
685
920
  ---
686
921
 
687
- IProperty
922
+ **Exemplo de Uso:**
688
923
 
689
- | Nome | Tipo | Obrigatório | Descrição |
690
- |-|-|-|-|
691
- | name | string | Sim | Nome do parâmetro |
692
- | value | string | Sim | Valor do parâmetro |
693
- ---
924
+ **Definições no HTML:**
694
925
 
695
- Enums
926
+ 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.
927
+ ```html
928
+ <po-accordion-item [p-label]="metadata?.literals?.enableDisableFields" #enableDisableFields>
929
+ <po-dynamic-form name="formEnableDisableFields"
930
+ [p-fields]="metadata?.fieldsTypingEnableDisable"
931
+ [p-value]="userParameters"
932
+ [p-validate]="onValidate.bind(this)"
933
+ [p-validate-fields]='metadata?.validateFields'>
934
+ </po-dynamic-form>
935
+ </po-accordion-item>
936
+
937
+ <po-accordion-item [p-label]="metadata?.literals?.configurations" #configurationsTyping>
938
+ <po-dynamic-form name="formConfigurations"
939
+ [p-fields]="metadata?.fieldsTypingConfigurations"
940
+ [p-value]="userParameters"
941
+ [p-validate]="onValidate.bind(this)"
942
+ [p-validate-fields]='metadata?.validateFields'>
943
+ </po-dynamic-form>
944
+ </po-accordion-item>
696
945
  ```
697
- declare enum ReportFormats {
698
- XLSX = "xlsx",
699
- PDF = "pdf",
700
- DOCX = "docx",
701
- HTML = "html"
946
+ **Definições no TypeScript:**
947
+
948
+ No typescript de controle do componente defina a função de validação conforme apresentado a seguir.
949
+ ```ts
950
+ public async onValidate(fieldChanged: PoDynamicFormFieldChanged){
951
+ let validation: PoDynamicFormValidation = await this.validateService.validate('/api/rep/v1/userParameters/validateForm', fieldChanged);
952
+
953
+ this.metadata.fieldsTypingEnableDisable = [...this.validateService.updateFormFields(validation, this.metadata.fieldsTypingEnableDisable)];
954
+ this.metadata.fieldsTypingConfigurations = [...this.validateService.updateFormFields(validation, this.metadata.fieldsTypingConfigurations)];
955
+
956
+ this.userParameters = {...this.validateService.updateFormValue(validation, this.userParameters)};
957
+
958
+ return validation;
702
959
  }
703
960
  ```
704
-
705
- Exemplo de Uso:
706
- ```
707
- const properties: Array<IProperty> = [
708
- {
709
- name: 'custom.quick_search',
710
- value: '186'
711
- }
712
- ];
713
-
714
- const params: IReportServiceParams = {
715
- reportName: 'crm/rel_campaign_export',
716
- programName: '/report/crm/crm0010',
717
- properties,
718
- dialect: 'pt',
719
- download: true,
720
- downloadName: '2020-1-10_13-51-53_CRM_CAMPANHAS',
721
- format: ReportFormats.XLSX
722
- };
723
-
724
- this.reportService
725
- .generate(params)
726
- .subscribe(() => {
727
- this.notification.error("Arquivo baixado com sucesso!");
728
- }, () => {
729
- this.notification.error("Não foi possível baixar o arquivo");
730
- });
731
- ```
732
-
733
- <br>
734
-
735
- # BreadcrumbControlService
736
-
737
- **Objetivo:** Realiza a criação e controle do breadcrumb das telas.
738
-
739
- Importação:
740
- ```
741
- import { BreadcrumbControlService } from 'dts-backoffice-util';
742
- ```
743
-
744
- Métodos:
745
-
746
- | Nome | Descrição |
747
- |-|-|
748
- | 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á. |
749
- | 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á. |
750
- | 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á. |
751
- | 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á. |
752
- | 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á. |
753
- | getBreadcrumb | Retorna o breadcrumb atual completo.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- breadcrumb (PoBreadcrumb) |
754
- | getCurrentRouter | Retorna a URL do breadcrumb do item corrente.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
755
- | getPrevRouter | Retorna a URL do breadcrumb do item anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- url (string) |
756
- | hasPreviousRouter | Indica se existe um item de breadcrumb anterior.<br>**Parâmetros:** Não há.<br>**Retorno:**<br>- exist (boolean) |
757
- ---
961
+ > Notas:
962
+ > + A função `onValidate` precisar ser definado com a palavre `async`, pois precisa aguardar o retorno da função `validate` do serviço.
963
+ > + 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`.
964
+ > + 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.
758
965
 
759
966
  <br>
760
967
 
761
- # DateUtil
968
+ # Utils
969
+
970
+ ## DateUtil
762
971
 
763
972
  **Objetivo:** Manipula informações de data.
764
973
 
765
- Importação:
766
- ```
974
+ **Importação:**
975
+ ```ts
767
976
  import { DateUtil } from 'dts-backoffice-util';
768
977
  ```
769
978
 
770
- Métodos:
979
+ **Métodos:**
771
980
 
772
981
  | Nome | Descrição |
773
982
  |-|-|
@@ -778,19 +987,30 @@ Métodos:
778
987
  | 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) |
779
988
  | pad | Adiciona zero à esquerda do número.<br>**Parâmetros:**<br>- number (number): Número.<br>**Retorno:**<br>- number (string) |
780
989
  ---
990
+ <br>
991
+
992
+ ## DisclaimerUtil
993
+
994
+ xxxx
995
+
996
+ <br>
997
+
998
+ ## FieldValidationUtil
999
+
1000
+ xxxx
781
1001
 
782
1002
  <br>
783
1003
 
784
- # FileUtil
1004
+ ## FileUtil
785
1005
 
786
1006
  **Objetivo:** Auxílio na manipulação de Arquivos.
787
1007
 
788
- Importação:
789
- ```
1008
+ **Importação:**
1009
+ ```ts
790
1010
  import { FileUtil } from 'dts-backoffice-util';
791
1011
  ```
792
1012
 
793
- Métodos:
1013
+ **Métodos:**
794
1014
 
795
1015
  | Nome | Descrição |
796
1016
  |-|-|
@@ -798,13 +1018,12 @@ Métodos:
798
1018
  | 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á. |
799
1019
  | 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. |
800
1020
  | 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. |
801
-
802
1021
  ---
803
1022
 
804
- Exemplo de Uso:
1023
+ **Exemplo de Uso:**
805
1024
 
806
1025
  **Definições no JavaScript:**
807
- ```
1026
+ ```ts
808
1027
  // TS da Tela
809
1028
 
810
1029
  import { FileUtil } from 'dts-backoffice-util';
@@ -867,7 +1086,7 @@ getQrCode(text: string): Observable<Blob> {
867
1086
  }
868
1087
  ```
869
1088
  **Definições no Progress:**
870
- ```
1089
+ ```ts
871
1090
  // Conteúdo do Método que BackEnd que retorna o Arquivo em Base64
872
1091
  DEFINE VARIABLE v_dir_arq AS CHARACTER NO-UNDO.
873
1092
  DEFINE VARIABLE v_cod_arq AS CHARACTER NO-UNDO.
@@ -885,7 +1104,7 @@ oOutput:ADD("filename", v_cod_arq).
885
1104
  oOutput:ADD("content", v_lch_arq).
886
1105
  ```
887
1106
 
888
- Interfaces:
1107
+ **Interfaces:**
889
1108
 
890
1109
  IDownloadDataParams
891
1110
 
@@ -896,27 +1115,16 @@ IDownloadDataParams
896
1115
  | columnDelimiter | string | Não | Caracter utilizado para separação das colunas. Caso não seja informado, será utilizado o caracter **";"**. |
897
1116
  | 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. |
898
1117
  | 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. |
1118
+ ---
899
1119
 
900
1120
  <br>
901
1121
 
902
- # DisclaimerUtil
903
-
904
- xxxx
905
-
906
- <br>
907
-
908
- # FieldValidationUtil
909
-
910
- xxxx
911
-
912
- <br>
913
-
914
- # FilterRangeUtil
1122
+ ## FilterRangeUtil
915
1123
 
916
1124
  xxxx
917
1125
 
918
1126
  <br>
919
1127
 
920
- # GenericFunctionsUtils
1128
+ ## GenericFunctionsUtils
921
1129
 
922
1130
  xxxx