@hed-hog/operations 0.0.306 → 0.0.310
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/dist/controllers/operations-approvals.controller.d.ts +114 -1
- package/dist/controllers/operations-approvals.controller.d.ts.map +1 -1
- package/dist/controllers/operations-approvals.controller.js +16 -3
- package/dist/controllers/operations-approvals.controller.js.map +1 -1
- package/dist/controllers/operations-collaborators.controller.d.ts +16 -1
- package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
- package/dist/controllers/operations-collaborators.controller.js +16 -3
- package/dist/controllers/operations-collaborators.controller.js.map +1 -1
- package/dist/controllers/operations-contracts.controller.d.ts +14 -453
- package/dist/controllers/operations-contracts.controller.d.ts.map +1 -1
- package/dist/controllers/operations-contracts.controller.js +11 -112
- package/dist/controllers/operations-contracts.controller.js.map +1 -1
- package/dist/controllers/operations-org-structure.controller.d.ts +65 -2
- package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -1
- package/dist/controllers/operations-org-structure.controller.js +18 -5
- package/dist/controllers/operations-org-structure.controller.js.map +1 -1
- package/dist/controllers/operations-projects.controller.d.ts +28 -4
- package/dist/controllers/operations-projects.controller.d.ts.map +1 -1
- package/dist/controllers/operations-projects.controller.js +17 -5
- package/dist/controllers/operations-projects.controller.js.map +1 -1
- package/dist/controllers/operations-timesheets.controller.d.ts +31 -4
- package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -1
- package/dist/controllers/operations-timesheets.controller.js +16 -11
- package/dist/controllers/operations-timesheets.controller.js.map +1 -1
- package/dist/dto/list-approvals.dto.d.ts +6 -0
- package/dist/dto/list-approvals.dto.d.ts.map +1 -0
- package/dist/dto/list-approvals.dto.js +28 -0
- package/dist/dto/list-approvals.dto.js.map +1 -0
- package/dist/dto/list-collaborator-types.dto.d.ts +3 -1
- package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -1
- package/dist/dto/list-collaborator-types.dto.js +7 -1
- package/dist/dto/list-collaborator-types.dto.js.map +1 -1
- package/dist/dto/list-collaborators.dto.d.ts +1 -0
- package/dist/dto/list-collaborators.dto.d.ts.map +1 -1
- package/dist/dto/list-collaborators.dto.js +5 -0
- package/dist/dto/list-collaborators.dto.js.map +1 -1
- package/dist/dto/list-contracts.dto.d.ts +8 -0
- package/dist/dto/list-contracts.dto.d.ts.map +1 -0
- package/dist/dto/list-contracts.dto.js +38 -0
- package/dist/dto/list-contracts.dto.js.map +1 -0
- package/dist/dto/list-departments.dto.d.ts +5 -0
- package/dist/dto/list-departments.dto.d.ts.map +1 -0
- package/dist/dto/list-departments.dto.js +23 -0
- package/dist/dto/list-departments.dto.js.map +1 -0
- package/dist/dto/list-projects.dto.d.ts +5 -0
- package/dist/dto/list-projects.dto.d.ts.map +1 -0
- package/dist/dto/list-projects.dto.js +23 -0
- package/dist/dto/list-projects.dto.js.map +1 -0
- package/dist/dto/list-schedule-adjustments.dto.d.ts +5 -0
- package/dist/dto/list-schedule-adjustments.dto.d.ts.map +1 -0
- package/dist/dto/list-schedule-adjustments.dto.js +23 -0
- package/dist/dto/list-schedule-adjustments.dto.js.map +1 -0
- package/dist/dto/list-time-off-requests.dto.d.ts +5 -0
- package/dist/dto/list-time-off-requests.dto.d.ts.map +1 -0
- package/dist/dto/list-time-off-requests.dto.js +23 -0
- package/dist/dto/list-time-off-requests.dto.js.map +1 -0
- package/dist/dto/list-timesheets.dto.d.ts +5 -0
- package/dist/dto/list-timesheets.dto.d.ts.map +1 -0
- package/dist/dto/list-timesheets.dto.js +23 -0
- package/dist/dto/list-timesheets.dto.js.map +1 -0
- package/dist/dto/reorder-collaborator-types.dto.d.ts +4 -0
- package/dist/dto/reorder-collaborator-types.dto.d.ts.map +1 -0
- package/dist/dto/reorder-collaborator-types.dto.js +25 -0
- package/dist/dto/reorder-collaborator-types.dto.js.map +1 -0
- package/dist/operations.service.d.ts +340 -271
- package/dist/operations.service.d.ts.map +1 -1
- package/dist/operations.service.js +1007 -1043
- package/dist/operations.service.js.map +1 -1
- package/dist/operations.service.spec.js +0 -22
- package/dist/operations.service.spec.js.map +1 -1
- package/hedhog/data/menu.yaml +0 -36
- package/hedhog/data/route.yaml +42 -73
- package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +8 -1
- package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +15 -10
- package/hedhog/frontend/app/_components/contract-details-screen.tsx.ejs +108 -213
- package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +251 -2039
- package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +167 -60
- package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +70 -301
- package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +102 -51
- package/hedhog/frontend/app/_lib/types.ts.ejs +19 -24
- package/hedhog/frontend/app/_lib/utils/format.ts.ejs +14 -9
- package/hedhog/frontend/app/approvals/page.tsx.ejs +842 -150
- package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +445 -153
- package/hedhog/frontend/app/collaborators/page.tsx.ejs +118 -49
- package/hedhog/frontend/app/contracts/[id]/page.tsx.ejs +2 -2
- package/hedhog/frontend/app/contracts/page.tsx.ejs +215 -617
- package/hedhog/frontend/app/departments/page.tsx.ejs +257 -113
- package/hedhog/frontend/app/projects/page.tsx.ejs +90 -51
- package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +412 -147
- package/hedhog/frontend/app/time-off/page.tsx.ejs +400 -123
- package/hedhog/frontend/app/timesheets/page.tsx.ejs +460 -365
- package/hedhog/frontend/messages/en.json +143 -14
- package/hedhog/frontend/messages/pt.json +192 -54
- package/hedhog/table/operations_contract.yaml +0 -9
- package/package.json +4 -4
- package/src/controllers/operations-approvals.controller.ts +9 -3
- package/src/controllers/operations-collaborators.controller.ts +15 -2
- package/src/controllers/operations-contracts.controller.ts +8 -92
- package/src/controllers/operations-org-structure.controller.ts +17 -4
- package/src/controllers/operations-projects.controller.ts +10 -4
- package/src/controllers/operations-timesheets.controller.ts +17 -8
- package/src/dto/list-approvals.dto.ts +12 -0
- package/src/dto/list-collaborator-types.dto.ts +7 -2
- package/src/dto/list-collaborators.dto.ts +4 -0
- package/src/dto/list-contracts.dto.ts +20 -0
- package/src/dto/list-departments.dto.ts +8 -0
- package/src/dto/list-projects.dto.ts +8 -0
- package/src/dto/list-schedule-adjustments.dto.ts +8 -0
- package/src/dto/list-time-off-requests.dto.ts +8 -0
- package/src/dto/list-timesheets.dto.ts +8 -0
- package/src/dto/reorder-collaborator-types.dto.ts +10 -0
- package/src/operations.service.spec.ts +0 -30
- package/src/operations.service.ts +1557 -1806
- package/hedhog/frontend/app/_components/contract-creation-wizard.tsx.ejs +0 -631
- package/hedhog/frontend/app/_components/contract-template-form-screen.tsx.ejs +0 -526
- package/hedhog/frontend/app/_components/contract-template-select-with-create.tsx.ejs +0 -247
- package/hedhog/frontend/app/_components/contract-wizard-sheet.tsx.ejs +0 -3520
- package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +0 -380
- package/hedhog/frontend/app/team/page.tsx.ejs +0 -352
- package/hedhog/table/operations_contract_financial_term.yaml +0 -40
- package/hedhog/table/operations_contract_revision.yaml +0 -38
- package/hedhog/table/operations_contract_signature.yaml +0 -38
- package/hedhog/table/operations_contract_template.yaml +0 -58
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"addLine": "Adicionar linha",
|
|
14
14
|
"approve": "Aprovar",
|
|
15
15
|
"reject": "Rejeitar",
|
|
16
|
+
"submit": "Enviar",
|
|
16
17
|
"cancel": "Cancelar",
|
|
17
18
|
"loadMore": "Carregar mais",
|
|
18
19
|
"clearSelection": "Limpar seleção",
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
"notAvailable": "Não informado",
|
|
30
31
|
"notAssigned": "Não atribuído",
|
|
31
32
|
"collaborator": "Colaborador",
|
|
33
|
+
"collaborators": "Colaboradores",
|
|
32
34
|
"collaboratorType": "Tipo",
|
|
33
35
|
"department": "Departamento",
|
|
34
36
|
"supervisor": "Supervisor",
|
|
@@ -92,7 +94,11 @@
|
|
|
92
94
|
"role": "Papel",
|
|
93
95
|
"total": "Total",
|
|
94
96
|
"pending": "Pendentes",
|
|
95
|
-
"approved": "Aprovadas"
|
|
97
|
+
"approved": "Aprovadas",
|
|
98
|
+
"searchCollaborator": "Buscar colaborador...",
|
|
99
|
+
"noCollaboratorsFound": "Nenhum colaborador encontrado.",
|
|
100
|
+
"searchTemplate": "Buscar template...",
|
|
101
|
+
"noTemplatesFound": "Nenhum template encontrado."
|
|
96
102
|
},
|
|
97
103
|
"states": {
|
|
98
104
|
"emptyTitle": "Nenhum registro encontrado",
|
|
@@ -101,7 +107,7 @@
|
|
|
101
107
|
}
|
|
102
108
|
},
|
|
103
109
|
"DashboardPage": {
|
|
104
|
-
"title": "Dashboard de
|
|
110
|
+
"title": "Dashboard de Operações",
|
|
105
111
|
"description": "Monitore entrega, solicitações e aprovações da equipe em um único lugar.",
|
|
106
112
|
"breadcrumb": "Dashboard",
|
|
107
113
|
"cards": {
|
|
@@ -223,6 +229,9 @@
|
|
|
223
229
|
"description": "Descrição",
|
|
224
230
|
"status": "Status"
|
|
225
231
|
},
|
|
232
|
+
"viewMode": "Visualização",
|
|
233
|
+
"viewModeTable": "Tabela",
|
|
234
|
+
"viewModeCards": "Grade",
|
|
226
235
|
"messages": {
|
|
227
236
|
"requiredFields": "O nome do departamento é obrigatório.",
|
|
228
237
|
"saveSuccess": "Departamento salvo com sucesso.",
|
|
@@ -373,6 +382,7 @@
|
|
|
373
382
|
"inactive": "Tipos inativos"
|
|
374
383
|
},
|
|
375
384
|
"columns": {
|
|
385
|
+
"drag": "Mover",
|
|
376
386
|
"name": "Nome",
|
|
377
387
|
"slug": "Slug",
|
|
378
388
|
"category": "Categoria",
|
|
@@ -380,6 +390,10 @@
|
|
|
380
390
|
"sortOrder": "Ordem",
|
|
381
391
|
"collaborators": "Colaboradores"
|
|
382
392
|
},
|
|
393
|
+
"reorder": {
|
|
394
|
+
"description": "Arraste as linhas da tabela para salvar a ordem automaticamente.",
|
|
395
|
+
"filtered": "A reordenação fica disponível na visualização em tabela, sem busca, sem filtros e com todos os itens carregados na página."
|
|
396
|
+
},
|
|
383
397
|
"sheet": {
|
|
384
398
|
"createTitle": "Criar tipo de colaborador",
|
|
385
399
|
"editTitle": "Editar tipo de colaborador",
|
|
@@ -393,10 +407,15 @@
|
|
|
393
407
|
"sortOrder": "Ordem de exibição",
|
|
394
408
|
"status": "Status"
|
|
395
409
|
},
|
|
410
|
+
"viewMode": "Visualização",
|
|
411
|
+
"viewModeTable": "Tabela",
|
|
412
|
+
"viewModeCards": "Grade",
|
|
396
413
|
"messages": {
|
|
397
414
|
"requiredFields": "O nome do tipo de colaborador é obrigatório.",
|
|
398
415
|
"saveSuccess": "Tipo de colaborador salvo com sucesso.",
|
|
399
416
|
"saveError": "Não foi possível salvar o tipo de colaborador.",
|
|
417
|
+
"reorderSuccess": "Ordem atualizada com sucesso.",
|
|
418
|
+
"reorderError": "Não foi possível salvar a nova ordem.",
|
|
400
419
|
"statusSuccess": "Status do tipo de colaborador atualizado com sucesso.",
|
|
401
420
|
"statusError": "Não foi possível atualizar o status do tipo de colaborador."
|
|
402
421
|
}
|
|
@@ -404,37 +423,37 @@
|
|
|
404
423
|
"CollaboratorDetailsPage": {
|
|
405
424
|
"title": "Detalhes do Colaborador",
|
|
406
425
|
"breadcrumb": "Detalhes do Colaborador",
|
|
407
|
-
"description": "Consulte
|
|
408
|
-
"notFound": "O colaborador solicitado
|
|
426
|
+
"description": "Consulte informações operacionais do colaborador, contratos relacionados, alocações, horário e resumos de solicitações.",
|
|
427
|
+
"notFound": "O colaborador solicitado não foi encontrado ou não está visível no seu escopo de acesso.",
|
|
409
428
|
"cards": {
|
|
410
429
|
"timesheets": "Timesheets",
|
|
411
|
-
"timesheetsDescription": "{pending} pendentes de
|
|
412
|
-
"loggedHours": "Horas
|
|
413
|
-
"loggedHoursDescription": "Total de horas registradas
|
|
414
|
-
"timeOff": "
|
|
415
|
-
"timeOffDescription": "{pending}
|
|
416
|
-
"assignments": "
|
|
417
|
-
"assignmentsDescription": "
|
|
430
|
+
"timesheetsDescription": "{pending} pendentes de revisão",
|
|
431
|
+
"loggedHours": "Horas lançadas",
|
|
432
|
+
"loggedHoursDescription": "Total de horas registradas até o momento.",
|
|
433
|
+
"timeOff": "Solicitações de ausência",
|
|
434
|
+
"timeOffDescription": "{pending} solicitação(ões) pendente(s)",
|
|
435
|
+
"assignments": "Alocações em projetos",
|
|
436
|
+
"assignmentsDescription": "Vínculos ativos e históricos em projetos."
|
|
418
437
|
},
|
|
419
438
|
"sections": {
|
|
420
439
|
"profile": "Perfil",
|
|
421
440
|
"primaryContract": "Contratos relacionados",
|
|
422
441
|
"projects": "Projetos vinculados",
|
|
423
442
|
"projectsDescription": "Projetos atualmente ou anteriormente ligados a este colaborador.",
|
|
424
|
-
"schedule": "
|
|
425
|
-
"scheduleDescription": "
|
|
426
|
-
"timeOff": "Resumo de
|
|
427
|
-
"timeOffDescription": "Contagem de
|
|
428
|
-
"scheduleAdjustments": "Ajustes de
|
|
429
|
-
"scheduleAdjustmentsDescription": "
|
|
430
|
-
},
|
|
431
|
-
"noContracts": "Ainda
|
|
432
|
-
"noProjects": "Ainda
|
|
433
|
-
"noScheduleAdjustments": "Nenhuma
|
|
443
|
+
"schedule": "Horário semanal",
|
|
444
|
+
"scheduleDescription": "Horário padrão atualmente registrado para este colaborador.",
|
|
445
|
+
"timeOff": "Resumo de ausências",
|
|
446
|
+
"timeOffDescription": "Contagem de solicitações visíveis no histórico do colaborador.",
|
|
447
|
+
"scheduleAdjustments": "Ajustes de horário",
|
|
448
|
+
"scheduleAdjustmentsDescription": "Solicitações recentes de ajuste de horário criadas por este colaborador."
|
|
449
|
+
},
|
|
450
|
+
"noContracts": "Ainda não existem contratos relacionados a este colaborador.",
|
|
451
|
+
"noProjects": "Ainda não existem projetos vinculados a este colaborador.",
|
|
452
|
+
"noScheduleAdjustments": "Nenhuma solicitação de ajuste de horário foi encontrada."
|
|
434
453
|
},
|
|
435
454
|
"ProjectsPage": {
|
|
436
455
|
"title": "Projetos",
|
|
437
|
-
"description": "Acompanhe projetos de clientes e
|
|
456
|
+
"description": "Acompanhe projetos de clientes e serviços conectados a alocação, entrega e contratos.",
|
|
438
457
|
"breadcrumb": "Projetos",
|
|
439
458
|
"searchPlaceholder": "Buscar projeto, cliente, gestor ou contrato...",
|
|
440
459
|
"emptyDescription": "Nenhum projeto corresponde aos filtros atuais.",
|
|
@@ -460,18 +479,18 @@
|
|
|
460
479
|
"description": "Crie ou atualize um projeto de entrega usado por timesheets e pela visibilidade da equipe."
|
|
461
480
|
},
|
|
462
481
|
"form": {
|
|
463
|
-
"code": "
|
|
482
|
+
"code": "Código",
|
|
464
483
|
"name": "Nome do projeto",
|
|
465
484
|
"clientName": "Nome do cliente",
|
|
466
485
|
"deliveryModel": "Modelo de entrega",
|
|
467
486
|
"summary": "Resumo"
|
|
468
487
|
},
|
|
469
488
|
"messages": {
|
|
470
|
-
"requiredFields": "
|
|
489
|
+
"requiredFields": "Código e nome do projeto são obrigatórios.",
|
|
471
490
|
"saveSuccess": "Projeto salvo com sucesso.",
|
|
472
|
-
"saveError": "
|
|
491
|
+
"saveError": "Não foi possível salvar o projeto.",
|
|
473
492
|
"statusSuccess": "Status do projeto atualizado com sucesso.",
|
|
474
|
-
"statusError": "
|
|
493
|
+
"statusError": "Não foi possível atualizar o status do projeto."
|
|
475
494
|
}
|
|
476
495
|
},
|
|
477
496
|
"ProjectFormPage": {
|
|
@@ -498,7 +517,7 @@
|
|
|
498
517
|
"nextStepsDescription": "Depois de criar o projeto, você pode montar a equipe, conectar um contrato ou template e acompanhar controles detalhados de entrega pela tela do projeto."
|
|
499
518
|
},
|
|
500
519
|
"fields": {
|
|
501
|
-
"code": "
|
|
520
|
+
"code": "Código do projeto",
|
|
502
521
|
"name": "Nome do projeto",
|
|
503
522
|
"clientName": "Nome do cliente",
|
|
504
523
|
"deliveryModel": "Modelo de entrega",
|
|
@@ -529,7 +548,7 @@
|
|
|
529
548
|
"contract": "Ao selecionar um contrato existente, a geração automática do rascunho é desativada.",
|
|
530
549
|
"contractTemplate": "Use um template para pré-preencher o novo contrato ou o rascunho automático deste projeto.",
|
|
531
550
|
"contractCode": "Usado apenas se um contrato rascunho for gerado a partir deste projeto.",
|
|
532
|
-
"contractName": "
|
|
551
|
+
"contractName": "Título visível para o contrato rascunho gerado.",
|
|
533
552
|
"contractDescription": "Observações comerciais ou cláusulas opcionais para o rascunho."
|
|
534
553
|
},
|
|
535
554
|
"placeholders": {
|
|
@@ -544,8 +563,8 @@
|
|
|
544
563
|
"contractTemplateSearch": "Buscar template de contrato...",
|
|
545
564
|
"monthlyHourCap": "Limite mensal de horas",
|
|
546
565
|
"contractCode": "Usado apenas ao criar contrato rascunho",
|
|
547
|
-
"contractName": "Nome
|
|
548
|
-
"contractDescription": "Adicione
|
|
566
|
+
"contractName": "Nome visível do contrato gerado",
|
|
567
|
+
"contractDescription": "Adicione observações comerciais ou cláusulas da entrega",
|
|
549
568
|
"roleLabel": "Selecione ou informe o papel...",
|
|
550
569
|
"roleLabelCreate": "Novo papel ou responsabilidade"
|
|
551
570
|
},
|
|
@@ -593,42 +612,81 @@
|
|
|
593
612
|
"loggedHours": "Horas lançadas",
|
|
594
613
|
"loggedHoursDescription": "Total de horas vinculadas a este projeto.",
|
|
595
614
|
"allocation": "Alocação média",
|
|
596
|
-
"allocationDescription": "
|
|
615
|
+
"allocationDescription": "Média de alocação das atribuições do projeto."
|
|
597
616
|
},
|
|
598
617
|
"sections": {
|
|
599
|
-
"overview": "
|
|
618
|
+
"overview": "Visão geral",
|
|
600
619
|
"contract": "Contrato relacionado",
|
|
601
620
|
"team": "Colaboradores vinculados",
|
|
602
|
-
"teamDescription": "Equipe inicial e
|
|
621
|
+
"teamDescription": "Equipe inicial e alocações em andamento associadas ao projeto.",
|
|
603
622
|
"indicators": "Indicadores operacionais",
|
|
604
|
-
"indicatorsDescription": "
|
|
623
|
+
"indicatorsDescription": "Métricas atuais de equipe e entrega do projeto."
|
|
605
624
|
},
|
|
606
625
|
"indicators": {
|
|
607
|
-
"activeAssignments": "
|
|
608
|
-
"
|
|
609
|
-
"averageAllocation": "
|
|
626
|
+
"activeAssignments": "Atribuições ativas",
|
|
627
|
+
"completedAssignments": "Atribuições concluídas",
|
|
628
|
+
"averageAllocation": "Alocação média",
|
|
610
629
|
"totalWeeklyHours": "Total de horas semanais"
|
|
611
630
|
},
|
|
612
631
|
"noContract": "Ainda não existe contrato relacionado a este projeto.",
|
|
613
|
-
"noAssignments": "Ainda não existem colaboradores vinculados a este projeto."
|
|
632
|
+
"noAssignments": "Ainda não existem colaboradores vinculados a este projeto.",
|
|
633
|
+
"sections": {
|
|
634
|
+
"overview": "Visão geral",
|
|
635
|
+
"contract": "Contrato relacionado",
|
|
636
|
+
"team": "Colaboradores vinculados",
|
|
637
|
+
"teamDescription": "Equipe inicial e alocações em andamento associadas ao projeto.",
|
|
638
|
+
"indicators": "Indicadores operacionais",
|
|
639
|
+
"indicatorsDescription": "Métricas atuais de equipe e entrega do projeto.",
|
|
640
|
+
"deliveryHealth": "Saúde da entrega",
|
|
641
|
+
"deliveryHealthDescription": "Leitura visual de alocação e ritmo operacional da equipe.",
|
|
642
|
+
"quickRadar": "Radar rápido",
|
|
643
|
+
"quickRadarDescription": "Sinais para tomada de decisão no curto prazo.",
|
|
644
|
+
"taskBoard": "Quadro de tarefas",
|
|
645
|
+
"taskBoardDescription": "Board estilo Kanban com arraste entre colunas e detalhe lateral da tarefa."
|
|
646
|
+
},
|
|
647
|
+
"charts": {
|
|
648
|
+
"allocationByCollaborator": "Alocação por colaborador",
|
|
649
|
+
"weeklyVelocity": "Velocidade semanal"
|
|
650
|
+
},
|
|
651
|
+
"quickRadar": {
|
|
652
|
+
"activeAssignments": "Atribuições ativas",
|
|
653
|
+
"timesheetPendencies": "Pendências de timesheet",
|
|
654
|
+
"plannedWeeklyHours": "Horas semanais planejadas"
|
|
655
|
+
},
|
|
656
|
+
"taskForm": {
|
|
657
|
+
"titleNew": "Nova tarefa",
|
|
658
|
+
"titleEdit": "Editar tarefa",
|
|
659
|
+
"nameLabel": "Nome",
|
|
660
|
+
"namePlaceholder": "Nome da tarefa",
|
|
661
|
+
"descriptionLabel": "Descrição",
|
|
662
|
+
"descriptionPlaceholder": "Descrição opcional",
|
|
663
|
+
"priorityLabel": "Prioridade",
|
|
664
|
+
"columnLabel": "Coluna",
|
|
665
|
+
"deadlineLabel": "Prazo",
|
|
666
|
+
"estimateLabel": "Estimativa (h)",
|
|
667
|
+
"tagsLabel": "Etiquetas",
|
|
668
|
+
"tagsPlaceholder": "planejamento, cliente, design (separadas por vírgula)",
|
|
669
|
+
"saving": "Salvando..."
|
|
670
|
+
}
|
|
614
671
|
},
|
|
615
672
|
"ContractsPage": {
|
|
616
673
|
"title": "Contratos",
|
|
617
|
-
"description": "
|
|
674
|
+
"description": "Gestão enxuta de contratos com nome, arquivo, status e acesso rápido à prévia.",
|
|
618
675
|
"breadcrumb": "Contratos",
|
|
619
|
-
"searchPlaceholder": "Buscar contrato
|
|
676
|
+
"searchPlaceholder": "Buscar contrato por nome ou arquivo...",
|
|
620
677
|
"emptyDescription": "Nenhum contrato corresponde aos filtros atuais.",
|
|
621
678
|
"cards": {
|
|
622
679
|
"total": "Total de contratos",
|
|
623
680
|
"active": "Contratos ativos",
|
|
624
|
-
"
|
|
625
|
-
"
|
|
681
|
+
"inactive": "Contratos inativos",
|
|
682
|
+
"withFile": "Com arquivo"
|
|
626
683
|
},
|
|
627
684
|
"viewMode": "Visualização",
|
|
628
685
|
"viewModeTable": "Tabela",
|
|
629
686
|
"viewModeCards": "Cards",
|
|
630
687
|
"columns": {
|
|
631
688
|
"title": "Título",
|
|
689
|
+
"file": "Arquivo",
|
|
632
690
|
"code": "Código",
|
|
633
691
|
"type": "Tipo",
|
|
634
692
|
"origin": "Origem",
|
|
@@ -639,6 +697,7 @@
|
|
|
639
697
|
"financials": "Resumo financeiro"
|
|
640
698
|
},
|
|
641
699
|
"actions": {
|
|
700
|
+
"preview": "Visualizar",
|
|
642
701
|
"downloadPdf": "Baixar PDF",
|
|
643
702
|
"uploadPdf": "Enviar PDF",
|
|
644
703
|
"duplicate": "Duplicar",
|
|
@@ -716,7 +775,7 @@
|
|
|
716
775
|
"statusSuccess": "Status do contrato atualizado com sucesso.",
|
|
717
776
|
"statusError": "Não foi possível atualizar o status do contrato.",
|
|
718
777
|
"uploadSuccess": "PDF do contrato enviado com sucesso.",
|
|
719
|
-
"uploadError": "
|
|
778
|
+
"uploadError": "Não foi possível enviar o PDF do contrato.",
|
|
720
779
|
"noPdf": "Nenhum PDF está disponível para este contrato.",
|
|
721
780
|
"deleteSuccess": "Contrato excluído com sucesso.",
|
|
722
781
|
"deleteError": "Não foi possível excluir o contrato.",
|
|
@@ -752,6 +811,9 @@
|
|
|
752
811
|
"editTitle": "Editar Template de Contrato",
|
|
753
812
|
"description": "Mantenha modelos reutilizáveis para acelerar novos contratos e rascunhos de projeto."
|
|
754
813
|
},
|
|
814
|
+
"viewMode": "Visualização",
|
|
815
|
+
"viewModeTable": "Tabela",
|
|
816
|
+
"viewModeCards": "Grade",
|
|
755
817
|
"messages": {
|
|
756
818
|
"statusSuccess": "Status do template atualizado com sucesso.",
|
|
757
819
|
"statusError": "Não foi possível atualizar o status do template."
|
|
@@ -790,9 +852,9 @@
|
|
|
790
852
|
"messages": {
|
|
791
853
|
"requiredFields": "O nome do template é obrigatório.",
|
|
792
854
|
"createSuccess": "Template criado com sucesso.",
|
|
793
|
-
"createError": "
|
|
855
|
+
"createError": "Não foi possível criar o template.",
|
|
794
856
|
"updateSuccess": "Template atualizado com sucesso.",
|
|
795
|
-
"updateError": "
|
|
857
|
+
"updateError": "Não foi possível atualizar o template."
|
|
796
858
|
}
|
|
797
859
|
},
|
|
798
860
|
"ContractFormPage": {
|
|
@@ -800,10 +862,11 @@
|
|
|
800
862
|
"editTitle": "Editar Contrato",
|
|
801
863
|
"duplicateTitle": "Duplicar Contrato",
|
|
802
864
|
"breadcrumb": "Cadastro de Contrato",
|
|
803
|
-
"description": "Crie ou atualize contratos
|
|
865
|
+
"description": "Crie ou atualize contratos com um fluxo direto de nome, arquivo e status.",
|
|
804
866
|
"noAccessDescription": "Permissões de diretor são necessárias para gerenciar contratos.",
|
|
805
867
|
"loading": "Carregando dados do contrato...",
|
|
806
868
|
"tabs": {
|
|
869
|
+
"preview": "Prévia",
|
|
807
870
|
"overview": "Visão geral",
|
|
808
871
|
"parties": "Partes",
|
|
809
872
|
"signatures": "Assinaturas",
|
|
@@ -815,6 +878,7 @@
|
|
|
815
878
|
"sections": {
|
|
816
879
|
"overview": "Visão geral",
|
|
817
880
|
"overviewDescription": "Campos centrais de registro, ciclo de vida, origem e ownership.",
|
|
881
|
+
"simpleDescription": "Somente nome, arquivo e status ficam editáveis aqui. Relações já existentes do contrato são preservadas ao salvar.",
|
|
818
882
|
"parties": "Partes",
|
|
819
883
|
"partiesDescription": "Pessoas e empresas principais relacionadas ao contrato.",
|
|
820
884
|
"signatures": "Assinaturas",
|
|
@@ -834,6 +898,7 @@
|
|
|
834
898
|
"code": "Código",
|
|
835
899
|
"name": "Título do contrato",
|
|
836
900
|
"clientName": "Nome do cliente",
|
|
901
|
+
"relationsPreserved": "Relações preservadas",
|
|
837
902
|
"contractTemplate": "Template do contrato",
|
|
838
903
|
"contractTemplateDescription": "Selecione um template reutilizável para preencher metadados e conteúdo iniciais deste contrato.",
|
|
839
904
|
"contractCategory": "Categoria",
|
|
@@ -869,6 +934,12 @@
|
|
|
869
934
|
"revisionStatus": "Status da revisão",
|
|
870
935
|
"summary": "Resumo"
|
|
871
936
|
},
|
|
937
|
+
"labels": {
|
|
938
|
+
"projectsCount": "{count} projeto(s)",
|
|
939
|
+
"partiesCount": "{count} parte(s)",
|
|
940
|
+
"signaturesCount": "{count} assinatura(s)",
|
|
941
|
+
"documentsCount": "{count} documento(s)"
|
|
942
|
+
},
|
|
872
943
|
"options": {
|
|
873
944
|
"contractCategories": {
|
|
874
945
|
"employee": "Funcionário",
|
|
@@ -933,7 +1004,7 @@
|
|
|
933
1004
|
"other": "Outro"
|
|
934
1005
|
},
|
|
935
1006
|
"recurrences": {
|
|
936
|
-
"one_time": "
|
|
1007
|
+
"one_time": "Única",
|
|
937
1008
|
"monthly": "Mensal",
|
|
938
1009
|
"quarterly": "Trimestral",
|
|
939
1010
|
"yearly": "Anual",
|
|
@@ -948,13 +1019,13 @@
|
|
|
948
1019
|
"extractionStatuses": {
|
|
949
1020
|
"pending": "Pendente",
|
|
950
1021
|
"processing": "Processando",
|
|
951
|
-
"completed": "
|
|
1022
|
+
"completed": "Concluída",
|
|
952
1023
|
"failed": "Falhou",
|
|
953
1024
|
"skipped": "Ignorada"
|
|
954
1025
|
}
|
|
955
1026
|
},
|
|
956
1027
|
"messages": {
|
|
957
|
-
"requiredFields": "
|
|
1028
|
+
"requiredFields": "O nome do contrato é obrigatório.",
|
|
958
1029
|
"createSuccess": "Contrato criado com sucesso.",
|
|
959
1030
|
"createError": "Não foi possível criar o contrato.",
|
|
960
1031
|
"updateSuccess": "Contrato atualizado com sucesso.",
|
|
@@ -983,7 +1054,7 @@
|
|
|
983
1054
|
"ContractDetailsPage": {
|
|
984
1055
|
"title": "Detalhes do Contrato",
|
|
985
1056
|
"breadcrumb": "Detalhes do Contrato",
|
|
986
|
-
"description": "Consulte
|
|
1057
|
+
"description": "Consulte a prévia do contrato, faça download do arquivo e acompanhe as relações vinculadas.",
|
|
987
1058
|
"notFound": "O contrato solicitado não foi encontrado ou não está visível no seu escopo de acesso.",
|
|
988
1059
|
"tabs": {
|
|
989
1060
|
"overview": "Visão geral",
|
|
@@ -992,9 +1063,11 @@
|
|
|
992
1063
|
"financials": "Financeiro",
|
|
993
1064
|
"documents": "Documentos",
|
|
994
1065
|
"revisions": "Revisões",
|
|
995
|
-
"history": "Histórico"
|
|
1066
|
+
"history": "Histórico",
|
|
1067
|
+
"preview": "Prévia"
|
|
996
1068
|
},
|
|
997
1069
|
"sections": {
|
|
1070
|
+
"preview": "Prévia do contrato",
|
|
998
1071
|
"overview": "Visão geral",
|
|
999
1072
|
"parties": "Partes",
|
|
1000
1073
|
"signatures": "Assinaturas",
|
|
@@ -1004,6 +1077,7 @@
|
|
|
1004
1077
|
"history": "Histórico / Auditoria"
|
|
1005
1078
|
},
|
|
1006
1079
|
"actions": {
|
|
1080
|
+
"preview": "Visualizar",
|
|
1007
1081
|
"downloadPdf": "Baixar PDF",
|
|
1008
1082
|
"download": "Baixar"
|
|
1009
1083
|
},
|
|
@@ -1017,8 +1091,8 @@
|
|
|
1017
1091
|
"inactive": "Inativo",
|
|
1018
1092
|
"partyRole": "Papel da parte",
|
|
1019
1093
|
"partyType": "Tipo da parte",
|
|
1020
|
-
"documentNumber": "
|
|
1021
|
-
"signer": "
|
|
1094
|
+
"documentNumber": "Número do documento",
|
|
1095
|
+
"signer": "Signatário",
|
|
1022
1096
|
"signedAt": "Assinado em",
|
|
1023
1097
|
"value": "Valor",
|
|
1024
1098
|
"payment": "Pagamentos",
|
|
@@ -1027,6 +1101,7 @@
|
|
|
1027
1101
|
"revision": "Revisão"
|
|
1028
1102
|
},
|
|
1029
1103
|
"states": {
|
|
1104
|
+
"previewUnavailable": "Ainda não existe um PDF disponível para pré-visualização deste contrato.",
|
|
1030
1105
|
"noParties": "Ainda não existem partes relacionadas a este contrato.",
|
|
1031
1106
|
"noSignatures": "Ainda não existem assinaturas registradas.",
|
|
1032
1107
|
"noDocuments": "Ainda não existem documentos para este contrato.",
|
|
@@ -1093,12 +1168,22 @@
|
|
|
1093
1168
|
"projectHint": "Projetos com alocação ativa aparecem aqui automaticamente.",
|
|
1094
1169
|
"activityPlaceholder": "Exemplo: Daily, implementação, QA, alinhamento com cliente"
|
|
1095
1170
|
},
|
|
1171
|
+
"details": {
|
|
1172
|
+
"title": "Detalhes da timesheet",
|
|
1173
|
+
"description": "Consulte o resumo enviado e a lista de lançamentos vinculados a esta semana.",
|
|
1174
|
+
"period": "Período",
|
|
1175
|
+
"entriesTitle": "Lançamentos da semana",
|
|
1176
|
+
"noEntries": "Nenhum lançamento foi vinculado a esta timesheet."
|
|
1177
|
+
},
|
|
1096
1178
|
"recentEntries": {
|
|
1097
1179
|
"title": "Lançamentos recentes",
|
|
1098
1180
|
"description": "Seus registros mais recentes aparecem aqui logo após salvar.",
|
|
1099
1181
|
"empty": "Seus lançamentos recentes aparecerão aqui.",
|
|
1100
1182
|
"loading": "Carregando lançamentos recentes..."
|
|
1101
1183
|
},
|
|
1184
|
+
"actions": {
|
|
1185
|
+
"viewDetails": "Ver detalhes"
|
|
1186
|
+
},
|
|
1102
1187
|
"cards": {
|
|
1103
1188
|
"visible": "Timesheets visíveis",
|
|
1104
1189
|
"visibleDescription": "Registros semanais visíveis para o seu escopo de acesso.",
|
|
@@ -1107,6 +1192,9 @@
|
|
|
1107
1192
|
"hours": "Horas lançadas",
|
|
1108
1193
|
"hoursDescription": "Total de horas trabalhadas em todos os timesheets visíveis."
|
|
1109
1194
|
},
|
|
1195
|
+
"viewMode": "Visualização",
|
|
1196
|
+
"viewModeTable": "Tabela",
|
|
1197
|
+
"viewModeCards": "Grade",
|
|
1110
1198
|
"messages": {
|
|
1111
1199
|
"requiredFields": "Projeto, tarefa, data e duração são obrigatórios.",
|
|
1112
1200
|
"collaboratorContextRequired": "Seu usuário precisa estar vinculado a um colaborador para lançar horas.",
|
|
@@ -1128,6 +1216,12 @@
|
|
|
1128
1216
|
"submitError": "Não foi possível enviar a timesheet.",
|
|
1129
1217
|
"taskCreateSuccess": "Tarefa criada com sucesso.",
|
|
1130
1218
|
"taskCreateError": "Não foi possível criar a tarefa."
|
|
1219
|
+
},
|
|
1220
|
+
"statuses": {
|
|
1221
|
+
"draft": "Rascunho",
|
|
1222
|
+
"submitted": "Aguardando análise",
|
|
1223
|
+
"approved": "Aprovado",
|
|
1224
|
+
"rejected": "Não aprovado"
|
|
1131
1225
|
}
|
|
1132
1226
|
},
|
|
1133
1227
|
"ApprovalsPage": {
|
|
@@ -1151,6 +1245,22 @@
|
|
|
1151
1245
|
"description": "Adicione uma observação opcional para a solicitação de {requester}: {target}.",
|
|
1152
1246
|
"notePlaceholder": "Ex.: Aprovado para o período solicitado. Verifique a disponibilidade da equipe no calendário."
|
|
1153
1247
|
},
|
|
1248
|
+
"details": {
|
|
1249
|
+
"title": "Detalhes da aprovação",
|
|
1250
|
+
"description": "Consulte o envio, o período solicitado e o retorno registrado pelo aprovador.",
|
|
1251
|
+
"period": "Período",
|
|
1252
|
+
"projects": "Projetos vinculados",
|
|
1253
|
+
"decidedAt": "Decidido em",
|
|
1254
|
+
"timesheetSection": "Detalhes do Timesheet",
|
|
1255
|
+
"timeOffSection": "Detalhes da Ausência",
|
|
1256
|
+
"scheduleSection": "Detalhes do Ajuste de Jornada",
|
|
1257
|
+
"entriesTitle": "Lançamentos",
|
|
1258
|
+
"noEntries": "Nenhum lançamento registrado neste timesheet.",
|
|
1259
|
+
"loadingEntries": "Carregando lançamentos...",
|
|
1260
|
+
"loadingSchedule": "Carregando horários...",
|
|
1261
|
+
"currentSchedule": "Horário atual",
|
|
1262
|
+
"requestedSchedule": "Horário solicitado"
|
|
1263
|
+
},
|
|
1154
1264
|
"options": {
|
|
1155
1265
|
"statuses": {
|
|
1156
1266
|
"pending": "Pendente",
|
|
@@ -1175,6 +1285,12 @@
|
|
|
1175
1285
|
"permanent": "Permanente"
|
|
1176
1286
|
}
|
|
1177
1287
|
},
|
|
1288
|
+
"actions": {
|
|
1289
|
+
"viewDetails": "Ver detalhes"
|
|
1290
|
+
},
|
|
1291
|
+
"viewMode": "Visualização",
|
|
1292
|
+
"viewModeTable": "Tabela",
|
|
1293
|
+
"viewModeCards": "Grade",
|
|
1178
1294
|
"messages": {
|
|
1179
1295
|
"approveSuccess": "Aprovação concluída com sucesso.",
|
|
1180
1296
|
"approveError": "Não foi possível aprovar a solicitação.",
|
|
@@ -1195,6 +1311,11 @@
|
|
|
1195
1311
|
"helperDescription": "Férias, licença médica, folga pessoal e outras ausências continuam reunidas aqui para manter o histórico simples de acompanhar.",
|
|
1196
1312
|
"reasonPlaceholder": "Adicione um contexto curto que ajude o supervisor a revisar esta solicitação."
|
|
1197
1313
|
},
|
|
1314
|
+
"details": {
|
|
1315
|
+
"title": "Detalhes da ausência",
|
|
1316
|
+
"description": "Consulte o período solicitado, os dias calculados e o retorno do aprovador.",
|
|
1317
|
+
"period": "Período"
|
|
1318
|
+
},
|
|
1198
1319
|
"cards": {
|
|
1199
1320
|
"submitted": "Aguardando análise",
|
|
1200
1321
|
"submittedDescription": "Solicitações enviadas e pendentes de decisão do supervisor.",
|
|
@@ -1224,6 +1345,12 @@
|
|
|
1224
1345
|
"approved": "Aprovado e mantido no histórico.",
|
|
1225
1346
|
"rejected": "Confira as observações do gestor para os próximos passos."
|
|
1226
1347
|
},
|
|
1348
|
+
"viewMode": "Visualização",
|
|
1349
|
+
"viewModeTable": "Tabela",
|
|
1350
|
+
"viewModeCards": "Grade",
|
|
1351
|
+
"actions": {
|
|
1352
|
+
"viewDetails": "Ver detalhes"
|
|
1353
|
+
},
|
|
1227
1354
|
"messages": {
|
|
1228
1355
|
"requiredFields": "Datas inicial e final são obrigatórias.",
|
|
1229
1356
|
"saveSuccess": "Solicitação de ausência enviada com sucesso.",
|
|
@@ -1241,6 +1368,10 @@
|
|
|
1241
1368
|
"description": "Informe os dias e horários que deseja ajustar. O supervisor comparará esta solicitação com o seu horário semanal atual.",
|
|
1242
1369
|
"reasonPlaceholder": "Explique brevemente por que esta mudança de horário é necessária."
|
|
1243
1370
|
},
|
|
1371
|
+
"details": {
|
|
1372
|
+
"title": "Detalhes do ajuste",
|
|
1373
|
+
"description": "Compare o horário atual com o solicitado e consulte o contexto enviado para aprovação."
|
|
1374
|
+
},
|
|
1244
1375
|
"cards": {
|
|
1245
1376
|
"submitted": "Aguardando análise",
|
|
1246
1377
|
"submittedDescription": "Solicitações de ajuste enviadas e aguardando aprovação.",
|
|
@@ -1264,7 +1395,8 @@
|
|
|
1264
1395
|
},
|
|
1265
1396
|
"table": {
|
|
1266
1397
|
"currentSchedule": "Horário atual",
|
|
1267
|
-
"requestedSchedule": "Horário solicitado"
|
|
1398
|
+
"requestedSchedule": "Horário solicitado",
|
|
1399
|
+
"scope": "Escopo"
|
|
1268
1400
|
},
|
|
1269
1401
|
"scheduleEditor": {
|
|
1270
1402
|
"summaryLabel": "Resumo semanal solicitado",
|
|
@@ -1279,6 +1411,12 @@
|
|
|
1279
1411
|
"approved": "Aprovado e mantido no histórico.",
|
|
1280
1412
|
"rejected": "Confira as observações do gestor para os próximos passos."
|
|
1281
1413
|
},
|
|
1414
|
+
"viewMode": "Visualização",
|
|
1415
|
+
"viewModeTable": "Tabela",
|
|
1416
|
+
"viewModeCards": "Grade",
|
|
1417
|
+
"actions": {
|
|
1418
|
+
"viewDetails": "Ver detalhes"
|
|
1419
|
+
},
|
|
1282
1420
|
"messages": {
|
|
1283
1421
|
"requiredFields": "Uma data inicial de vigência é obrigatória.",
|
|
1284
1422
|
"saveSuccess": "Ajuste de horário enviado com sucesso.",
|
|
@@ -46,14 +46,6 @@ columns:
|
|
|
46
46
|
column: id
|
|
47
47
|
onDelete: SET NULL
|
|
48
48
|
onUpdate: CASCADE
|
|
49
|
-
- name: contract_template_id
|
|
50
|
-
type: fk
|
|
51
|
-
isNullable: true
|
|
52
|
-
references:
|
|
53
|
-
table: operations_contract_template
|
|
54
|
-
column: id
|
|
55
|
-
onDelete: SET NULL
|
|
56
|
-
onUpdate: CASCADE
|
|
57
49
|
- name: origin_type
|
|
58
50
|
type: enum
|
|
59
51
|
values: [manual, employee_hiring, client_project, crm_proposal]
|
|
@@ -115,7 +107,6 @@ indices:
|
|
|
115
107
|
isUnique: true
|
|
116
108
|
- columns: [account_manager_collaborator_id]
|
|
117
109
|
- columns: [related_collaborator_id]
|
|
118
|
-
- columns: [contract_template_id]
|
|
119
110
|
- columns: [contract_category]
|
|
120
111
|
- columns: [contract_type]
|
|
121
112
|
- columns: [origin_type]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/operations",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.310",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"@nestjs/core": "^11",
|
|
10
10
|
"@nestjs/jwt": "^11",
|
|
11
11
|
"@nestjs/mapped-types": "*",
|
|
12
|
-
"@hed-hog/api-pagination": "0.0.7",
|
|
13
12
|
"@hed-hog/api": "0.0.6",
|
|
14
13
|
"@hed-hog/api-prisma": "0.0.6",
|
|
15
|
-
"@hed-hog/
|
|
14
|
+
"@hed-hog/api-pagination": "0.0.7",
|
|
16
15
|
"@hed-hog/api-locale": "0.0.14",
|
|
17
16
|
"@hed-hog/api-types": "0.0.1",
|
|
18
|
-
"@hed-hog/contact": "0.0.
|
|
17
|
+
"@hed-hog/contact": "0.0.310",
|
|
18
|
+
"@hed-hog/core": "0.0.310"
|
|
19
19
|
},
|
|
20
20
|
"exports": {
|
|
21
21
|
".": {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Role, User } from '@hed-hog/api';
|
|
2
|
-
import { Body, Controller, Get, Param, ParseIntPipe, Post } from '@nestjs/common';
|
|
2
|
+
import { Body, Controller, Get, Param, ParseIntPipe, Post, Query } from '@nestjs/common';
|
|
3
|
+
import { ListApprovalsDto } from '../dto/list-approvals.dto';
|
|
3
4
|
import { OperationsService } from '../operations.service';
|
|
4
5
|
|
|
5
6
|
@Role()
|
|
@@ -8,8 +9,13 @@ export class OperationsApprovalsController {
|
|
|
8
9
|
constructor(private readonly operationsService: OperationsService) {}
|
|
9
10
|
|
|
10
11
|
@Get('approvals')
|
|
11
|
-
listApprovals(@User() user) {
|
|
12
|
-
return this.operationsService.listApprovals(Number(user?.id || 0));
|
|
12
|
+
listApprovals(@User() user, @Query() filters: ListApprovalsDto) {
|
|
13
|
+
return this.operationsService.listApprovals(Number(user?.id || 0), filters);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Get('approvals/:id')
|
|
17
|
+
getApprovalDetail(@User() user, @Param('id', ParseIntPipe) id: number) {
|
|
18
|
+
return this.operationsService.getApprovalDetail(Number(user?.id || 0), id);
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
@Post('approvals/:id/approve')
|