@hed-hog/operations 0.0.318 → 0.0.321

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/controllers/operations-collaborator-costs.controller.d.ts +144 -0
  2. package/dist/controllers/operations-collaborator-costs.controller.d.ts.map +1 -0
  3. package/dist/controllers/operations-collaborator-costs.controller.js +162 -0
  4. package/dist/controllers/operations-collaborator-costs.controller.js.map +1 -0
  5. package/dist/controllers/operations-collaborators.controller.d.ts +14 -0
  6. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  7. package/dist/controllers/operations-collaborators.controller.js +11 -0
  8. package/dist/controllers/operations-collaborators.controller.js.map +1 -1
  9. package/dist/controllers/operations-contracts.controller.d.ts +9 -9
  10. package/dist/controllers/operations-projects.controller.d.ts +31 -0
  11. package/dist/controllers/operations-projects.controller.d.ts.map +1 -1
  12. package/dist/controllers/operations-projects.controller.js +23 -0
  13. package/dist/controllers/operations-projects.controller.js.map +1 -1
  14. package/dist/controllers/operations-reports.controller.d.ts +199 -0
  15. package/dist/controllers/operations-reports.controller.d.ts.map +1 -0
  16. package/dist/controllers/operations-reports.controller.js +53 -0
  17. package/dist/controllers/operations-reports.controller.js.map +1 -0
  18. package/dist/controllers/operations-tasks.controller.d.ts +41 -2
  19. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  20. package/dist/controllers/operations-tasks.controller.js +17 -5
  21. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  22. package/dist/dto/create-collaborator-cost.dto.d.ts +16 -0
  23. package/dist/dto/create-collaborator-cost.dto.d.ts.map +1 -0
  24. package/dist/dto/create-collaborator-cost.dto.js +88 -0
  25. package/dist/dto/create-collaborator-cost.dto.js.map +1 -0
  26. package/dist/dto/create-collaborator.dto.d.ts +0 -1
  27. package/dist/dto/create-collaborator.dto.d.ts.map +1 -1
  28. package/dist/dto/create-collaborator.dto.js +0 -6
  29. package/dist/dto/create-collaborator.dto.js.map +1 -1
  30. package/dist/dto/create-cost-type.dto.d.ts +13 -0
  31. package/dist/dto/create-cost-type.dto.d.ts.map +1 -0
  32. package/dist/dto/create-cost-type.dto.js +87 -0
  33. package/dist/dto/create-cost-type.dto.js.map +1 -0
  34. package/dist/dto/list-approvals.dto.d.ts +2 -0
  35. package/dist/dto/list-approvals.dto.d.ts.map +1 -1
  36. package/dist/dto/list-approvals.dto.js +10 -0
  37. package/dist/dto/list-approvals.dto.js.map +1 -1
  38. package/dist/dto/list-collaborator-costs.dto.d.ts +5 -0
  39. package/dist/dto/list-collaborator-costs.dto.d.ts.map +1 -0
  40. package/dist/dto/list-collaborator-costs.dto.js +23 -0
  41. package/dist/dto/list-collaborator-costs.dto.js.map +1 -0
  42. package/dist/dto/list-cost-types.dto.d.ts +6 -0
  43. package/dist/dto/list-cost-types.dto.d.ts.map +1 -0
  44. package/dist/dto/list-cost-types.dto.js +35 -0
  45. package/dist/dto/list-cost-types.dto.js.map +1 -0
  46. package/dist/dto/list-my-projects.dto.d.ts +5 -0
  47. package/dist/dto/list-my-projects.dto.d.ts.map +1 -0
  48. package/dist/dto/list-my-projects.dto.js +23 -0
  49. package/dist/dto/list-my-projects.dto.js.map +1 -0
  50. package/dist/dto/list-my-tasks.dto.d.ts +6 -0
  51. package/dist/dto/list-my-tasks.dto.d.ts.map +1 -0
  52. package/dist/dto/list-my-tasks.dto.js +33 -0
  53. package/dist/dto/list-my-tasks.dto.js.map +1 -0
  54. package/dist/dto/list-projects.dto.d.ts +1 -0
  55. package/dist/dto/list-projects.dto.d.ts.map +1 -1
  56. package/dist/dto/list-projects.dto.js +7 -0
  57. package/dist/dto/list-projects.dto.js.map +1 -1
  58. package/dist/dto/list-reports.dto.d.ts +16 -0
  59. package/dist/dto/list-reports.dto.d.ts.map +1 -0
  60. package/dist/dto/list-reports.dto.js +75 -0
  61. package/dist/dto/list-reports.dto.js.map +1 -0
  62. package/dist/dto/list-tasks.dto.d.ts +2 -0
  63. package/dist/dto/list-tasks.dto.d.ts.map +1 -1
  64. package/dist/dto/list-tasks.dto.js +12 -0
  65. package/dist/dto/list-tasks.dto.js.map +1 -1
  66. package/dist/dto/list-timesheets.dto.d.ts +2 -0
  67. package/dist/dto/list-timesheets.dto.d.ts.map +1 -1
  68. package/dist/dto/list-timesheets.dto.js +10 -0
  69. package/dist/dto/list-timesheets.dto.js.map +1 -1
  70. package/dist/dto/update-collaborator-cost.dto.d.ts +6 -0
  71. package/dist/dto/update-collaborator-cost.dto.d.ts.map +1 -0
  72. package/dist/dto/update-collaborator-cost.dto.js +9 -0
  73. package/dist/dto/update-collaborator-cost.dto.js.map +1 -0
  74. package/dist/dto/update-task.dto.d.ts +1 -0
  75. package/dist/dto/update-task.dto.d.ts.map +1 -1
  76. package/dist/dto/update-task.dto.js +6 -0
  77. package/dist/dto/update-task.dto.js.map +1 -1
  78. package/dist/operations.module.d.ts.map +1 -1
  79. package/dist/operations.module.js +4 -0
  80. package/dist/operations.module.js.map +1 -1
  81. package/dist/operations.service.d.ts +457 -3
  82. package/dist/operations.service.d.ts.map +1 -1
  83. package/dist/operations.service.js +1445 -208
  84. package/dist/operations.service.js.map +1 -1
  85. package/dist/operations.service.spec.js +31 -7
  86. package/dist/operations.service.spec.js.map +1 -1
  87. package/hedhog/data/menu.yaml +112 -7
  88. package/hedhog/data/operations_cost_type.yaml +166 -0
  89. package/hedhog/data/route.yaml +185 -0
  90. package/hedhog/frontend/app/_components/collaborator-costs-section.tsx.ejs +884 -0
  91. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +80 -1
  92. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +219 -94
  93. package/hedhog/frontend/app/_components/contract-details-screen.tsx.ejs +21 -32
  94. package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +178 -89
  95. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +1185 -0
  96. package/hedhog/frontend/app/_components/operations-calendar-view.tsx.ejs +306 -0
  97. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +943 -782
  98. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +223 -0
  99. package/hedhog/frontend/app/_lib/api.ts.ejs +162 -0
  100. package/hedhog/frontend/app/_lib/types.ts.ejs +227 -1
  101. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +11 -3
  102. package/hedhog/frontend/app/approvals/page.tsx.ejs +191 -46
  103. package/hedhog/frontend/app/collaborators/page.tsx.ejs +133 -25
  104. package/hedhog/frontend/app/my-projects/[id]/page.tsx.ejs +11 -0
  105. package/hedhog/frontend/app/my-projects/page.tsx.ejs +440 -0
  106. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +1304 -0
  107. package/hedhog/frontend/app/reports/collaborators/page.tsx.ejs +771 -0
  108. package/hedhog/frontend/app/reports/projects/page.tsx.ejs +809 -0
  109. package/hedhog/frontend/app/timesheets/page.tsx.ejs +322 -58
  110. package/hedhog/frontend/messages/en.json +234 -25
  111. package/hedhog/frontend/messages/pt.json +234 -25
  112. package/hedhog/table/operations_collaborator.yaml +0 -4
  113. package/hedhog/table/operations_collaborator_compensation_history.yaml +28 -0
  114. package/hedhog/table/operations_collaborator_cost.yaml +56 -0
  115. package/hedhog/table/operations_cost_type.yaml +38 -0
  116. package/package.json +7 -7
  117. package/src/controllers/operations-collaborator-costs.controller.ts +147 -0
  118. package/src/controllers/operations-collaborators.controller.ts +19 -8
  119. package/src/controllers/operations-projects.controller.ts +19 -8
  120. package/src/controllers/operations-reports.controller.ts +32 -0
  121. package/src/controllers/operations-tasks.controller.ts +32 -12
  122. package/src/dto/create-collaborator-cost.dto.ts +78 -0
  123. package/src/dto/create-collaborator.dto.ts +9 -14
  124. package/src/dto/create-cost-type.dto.ts +62 -0
  125. package/src/dto/list-approvals.dto.ts +8 -0
  126. package/src/dto/list-collaborator-costs.dto.ts +8 -0
  127. package/src/dto/list-cost-types.dto.ts +19 -0
  128. package/src/dto/list-my-projects.dto.ts +8 -0
  129. package/src/dto/list-my-tasks.dto.ts +17 -0
  130. package/src/dto/list-projects.dto.ts +7 -1
  131. package/src/dto/list-reports.dto.ts +51 -0
  132. package/src/dto/list-tasks.dto.ts +11 -1
  133. package/src/dto/list-timesheets.dto.ts +8 -0
  134. package/src/dto/update-collaborator-cost.dto.ts +4 -0
  135. package/src/dto/update-task.dto.ts +6 -0
  136. package/src/operations.module.ts +4 -0
  137. package/src/operations.service.spec.ts +45 -7
  138. package/src/operations.service.ts +1988 -221
@@ -10,6 +10,8 @@
10
10
  "deactivate": "Desativar",
11
11
  "save": "Salvar",
12
12
  "delete": "Excluir",
13
+ "archive": "Arquivar",
14
+ "unarchive": "Desarquivar",
13
15
  "addLine": "Adicionar linha",
14
16
  "approve": "Aprovar",
15
17
  "reject": "Rejeitar",
@@ -24,7 +26,9 @@
24
26
  },
25
27
  "filters": {
26
28
  "allStatuses": "Todos os status",
27
- "allTypes": "Todos os tipos"
29
+ "allTypes": "Todos os tipos",
30
+ "dateFrom": "De",
31
+ "dateTo": "Até"
28
32
  },
29
33
  "labels": {
30
34
  "notAvailable": "Não informado",
@@ -38,7 +42,9 @@
38
42
  "joinedAt": "Entrada",
39
43
  "leftAt": "Saída",
40
44
  "actions": "Ações",
45
+ "name": "Nome",
41
46
  "status": "Status",
47
+ "task": "Tarefa",
42
48
  "project": "Projeto",
43
49
  "contract": "Contrato",
44
50
  "contractStatus": "Status do contrato",
@@ -72,6 +78,7 @@
72
78
  "projectAssignment": "Alocação do projeto",
73
79
  "activity": "Tarefa / atividade",
74
80
  "description": "Descrição",
81
+ "deadline": "Prazo",
75
82
  "workDate": "Data trabalhada",
76
83
  "hours": "Horas",
77
84
  "days": "Dias",
@@ -98,7 +105,8 @@
98
105
  "searchCollaborator": "Buscar colaborador...",
99
106
  "noCollaboratorsFound": "Nenhum colaborador encontrado.",
100
107
  "searchTemplate": "Buscar template...",
101
- "noTemplatesFound": "Nenhum template encontrado."
108
+ "noTemplatesFound": "Nenhum template encontrado.",
109
+ "loading": "Carregando..."
102
110
  },
103
111
  "states": {
104
112
  "emptyTitle": "Nenhum registro encontrado",
@@ -167,13 +175,29 @@
167
175
  "viewModeCards": "Grade",
168
176
  "cards": {
169
177
  "total": "Total de colaboradores",
170
- "totalDescription": "Todos os colaboradores operacionais registrados no sistema.",
178
+ "totalDescription": "Todos os colaboradores registrados.",
179
+ "totalTooltip": "Inclui todos os colaboradores operacionais cadastrados no sistema, independente do status.",
171
180
  "active": "Colaboradores ativos",
172
- "activeDescription": "Em atividade com status operacional ativo.",
181
+ "activeDescription": "Com status operacional ativo.",
182
+ "activeTooltip": "Colaboradores em atividade com status ativo no momento da consulta.",
173
183
  "onLeave": "Em afastamento",
174
- "onLeaveDescription": "Temporariamente afastados — incluídos na capacidade, mas não alocáveis.",
184
+ "onLeaveDescription": "Afastados temporariamente.",
185
+ "onLeaveTooltip": "Temporariamente afastados — contabilizados na capacidade, mas não disponíveis para alocação.",
175
186
  "withContracts": "Com contrato",
176
- "withContractsDescription": "Colaboradores vinculados a pelo menos um contrato."
187
+ "withContractsDescription": "Vinculados a ao menos um contrato.",
188
+ "withContractsTooltip": "Colaboradores com pelo menos um contrato ativo ou histórico registrado.",
189
+ "totalSalary": "Total de salários",
190
+ "totalSalaryDescription": "Soma das remunerações base (todos).",
191
+ "totalSalaryTooltip": "Soma do valor de remuneração base do contrato principal de cada colaborador ativo no sistema.",
192
+ "totalCosts": "Total de custos",
193
+ "totalCostsDescription": "Soma dos custos adicionais (todos).",
194
+ "totalCostsTooltip": "Soma de todos os custos extras cadastrados (benefícios, encargos, equipamentos etc.) para todos os colaboradores.",
195
+ "avgSalaryPlusCosts": "Total salário + custos",
196
+ "avgSalaryPlusCostsDescription": "Remunerações + custos combinados (todos).",
197
+ "avgSalaryPlusCostsTooltip": "Soma global de remunerações base e custos adicionais de todos os colaboradores do sistema.",
198
+ "avgSalaryPlusCostsPerCollaborator": "Médio por colaborador",
199
+ "avgSalaryPlusCostsPerCollaboratorDescription": "Custo médio total por colaborador (todos).",
200
+ "avgSalaryPlusCostsPerCollaboratorTooltip": "Média de (salário + custos) dividida pelo total de colaboradores do sistema."
177
201
  },
178
202
  "sheet": {
179
203
  "createTitle": "Criar colaborador",
@@ -263,8 +287,11 @@
263
287
  "equityDescription": "Preencha esta seção apenas quando a relação selecionada exigir dados de propriedade ou governança.",
264
288
  "supervisor": "Vínculo de supervisor",
265
289
  "supervisorDescription": "Associe o supervisor direto usado para visão de equipe e aprovações.",
266
- "contract": "Remuneração e contrato rascunho",
267
- "contractDescription": "Informe os dados contratuais básicos e escolha se o sistema deve gerar automaticamente um contrato relacionado a partir da contratação.",
290
+ "contract": "Remuneração e contrato",
291
+ "contractDescription": "Defina a remuneração base e vincule ou crie o contrato relacionado a este colaborador.",
292
+ "costs": "Custos do colaborador",
293
+ "costsDescription": "Gerencie custos recorrentes e avulsos associados a este colaborador.",
294
+ "costsSaveBefore": "Salve o colaborador antes de adicionar custos.",
268
295
  "schedule": "Horário semanal padrão",
269
296
  "scheduleDescription": "Defina o horário recorrente esperado para uso operacional e nos fluxos de aprovação."
270
297
  },
@@ -287,7 +314,12 @@
287
314
  "collaboratorTypeDescription": "Selecione a natureza da relação com a empresa. Função e participação societária permanecem separadas.",
288
315
  "weeklyCapacityHours": "Carga horária semanal",
289
316
  "compensationAmount": "Valor da remuneração",
290
- "contractDescription": "Observações do contrato rascunho",
317
+ "contract": "Contrato",
318
+ "contractPlaceholder": "Pesquisar ou selecionar contrato…",
319
+ "contractEmpty": "Nenhum contrato vinculado",
320
+ "contractCreateTitle": "Novo contrato",
321
+ "contractCreateDescription": "Crie um novo contrato e vincule a este colaborador.",
322
+ "contractNameField": "Nome do contrato",
291
323
  "equityParticipationType": "Tipo de participação",
292
324
  "equityPercentage": "Percentual societário",
293
325
  "votingPower": "Poder de voto (%)",
@@ -350,7 +382,8 @@
350
382
  "createUserPassword": "Senha forte"
351
383
  },
352
384
  "actions": {
353
- "createUser": "Criar usuário do sistema"
385
+ "createUser": "Criar usuário do sistema",
386
+ "editPersonCrm": "Editar cadastro de pessoa (CRM)"
354
387
  },
355
388
  "states": {
356
389
  "loadingCollaboratorTypes": "Carregando tipos de colaborador..."
@@ -445,11 +478,21 @@
445
478
  "timeOff": "Resumo de ausências",
446
479
  "timeOffDescription": "Contagem de solicitações visíveis no histórico do colaborador.",
447
480
  "scheduleAdjustments": "Ajustes de horário",
448
- "scheduleAdjustmentsDescription": "Solicitações recentes de ajuste de horário criadas por este colaborador."
481
+ "scheduleAdjustmentsDescription": "Solicitações recentes de ajuste de horário criadas por este colaborador.",
482
+ "compensationHistory": "Histórico de salário",
483
+ "compensationHistoryDescription": "Registro histórico das alterações de salário deste colaborador."
449
484
  },
450
485
  "noContracts": "Ainda não existem contratos relacionados a este colaborador.",
451
486
  "noProjects": "Ainda não existem projetos vinculados a este colaborador.",
452
- "noScheduleAdjustments": "Nenhuma solicitação de ajuste de horário foi encontrada."
487
+ "noScheduleAdjustments": "Nenhuma solicitação de ajuste de horário foi encontrada.",
488
+ "noCompensationHistory": "Nenhuma alteração de salário foi registrada para este colaborador ainda.",
489
+ "compensationHistory": {
490
+ "amount": "Valor",
491
+ "effectiveDate": "Data de vigência",
492
+ "recordedAt": "Registrado em",
493
+ "changedBy": "Alterado por",
494
+ "notes": "Observações"
495
+ }
453
496
  },
454
497
  "ProjectsPage": {
455
498
  "title": "Projetos",
@@ -493,6 +536,72 @@
493
536
  "statusError": "Não foi possível atualizar o status do projeto."
494
537
  }
495
538
  },
539
+ "MyProjectsPage": {
540
+ "title": "Meus Projetos",
541
+ "description": "Projetos dos quais você faz parte.",
542
+ "breadcrumb": "Meus Projetos",
543
+ "searchPlaceholder": "Buscar projeto, cliente ou contrato...",
544
+ "emptyDescription": "Você ainda não está alocado em nenhum projeto.",
545
+ "cards": {
546
+ "total": "Meus Projetos",
547
+ "totalDescription": "Projetos em que você tem alocação.",
548
+ "active": "Ativos",
549
+ "activeDescription": "Projetos abertos para lançamentos de timesheet.",
550
+ "atRisk": "Em risco",
551
+ "atRiskDescription": "Projetos sinalizados com problemas.",
552
+ "upcomingDeliveries": "Com prazo",
553
+ "upcomingDeliveriesDescription": "Projetos com data de entrega definida."
554
+ },
555
+ "viewMode": "Visualização",
556
+ "viewModeTable": "Tabela",
557
+ "viewModeCards": "Cards"
558
+ },
559
+ "MyTasksPage": {
560
+ "title": "Minhas Tarefas",
561
+ "description": "Suas tarefas em todos os projetos.",
562
+ "breadcrumb": "Minhas Tarefas",
563
+ "searchPlaceholder": "Buscar tarefa ou projeto...",
564
+ "viewMode": "Visualização",
565
+ "viewModeTable": "Tabela",
566
+ "viewModeCards": "Cards",
567
+ "viewModeBoard": "Board",
568
+ "emptyDescription": "Você não possui tarefas atribuídas no momento.",
569
+ "collections": {
570
+ "active": "Ativas",
571
+ "archived": "Arquivadas"
572
+ },
573
+ "actions": {
574
+ "create": "Nova tarefa"
575
+ },
576
+ "dialogs": {
577
+ "createTitle": "Criar nova tarefa",
578
+ "createProjectPlaceholder": "Selecione um projeto",
579
+ "createNameLabel": "Nome",
580
+ "createNamePlaceholder": "Nome da tarefa",
581
+ "createDescriptionLabel": "Descrição",
582
+ "createDescriptionPlaceholder": "Descrição opcional",
583
+ "archiveTitle": "Arquivar tarefa",
584
+ "archiveDescription": "A tarefa sairá da lista principal e irá para a lista de arquivadas. Se preferir, você também pode excluí-la agora.",
585
+ "deleteTitle": "Excluir tarefa",
586
+ "deleteDescription": "Tem certeza que deseja excluir esta tarefa de forma permanente? Esta ação não pode ser desfeita."
587
+ },
588
+ "cards": {
589
+ "total": "Tarefas",
590
+ "totalDescription": "Total de tarefas atribuídas a você.",
591
+ "doing": "Em andamento",
592
+ "doingDescription": "Tarefas que estão sendo executadas.",
593
+ "review": "Em revisão",
594
+ "reviewDescription": "Tarefas aguardando revisão.",
595
+ "done": "Concluídas",
596
+ "doneDescription": "Tarefas finalizadas."
597
+ },
598
+ "status": {
599
+ "todo": "A fazer",
600
+ "doing": "Em andamento",
601
+ "review": "Em revisão",
602
+ "done": "Concluída"
603
+ }
604
+ },
496
605
  "ProjectFormPage": {
497
606
  "newTitle": "Novo Projeto",
498
607
  "editTitle": "Editar Projeto",
@@ -642,7 +751,9 @@
642
751
  "quickRadar": "Radar rápido",
643
752
  "quickRadarDescription": "Sinais para tomada de decisão no curto prazo.",
644
753
  "taskBoard": "Quadro de tarefas",
645
- "taskBoardDescription": "Board estilo Kanban com arraste entre colunas e detalhe lateral da tarefa."
754
+ "taskBoardDescription": "Board estilo Kanban com arraste entre colunas e detalhe lateral da tarefa.",
755
+ "archivedTasks": "Tarefas arquivadas",
756
+ "archivedTasksDescription": "Consulte tarefas arquivadas do projeto, veja detalhes, desarquive ou exclua definitivamente."
646
757
  },
647
758
  "charts": {
648
759
  "allocationByCollaborator": "Alocação por colaborador",
@@ -667,7 +778,14 @@
667
778
  "tagsLabel": "Etiquetas",
668
779
  "tagsPlaceholder": "planejamento, cliente, design (separadas por vírgula)",
669
780
  "saving": "Salvando..."
670
- }
781
+ },
782
+ "dialogs": {
783
+ "archiveTitle": "Arquivar tarefa",
784
+ "archiveDescription": "A tarefa será movida para a lista de arquivadas. Se quiser, você também pode excluí-la definitivamente agora.",
785
+ "deleteTitle": "Excluir tarefa",
786
+ "deleteDescription": "Tem certeza que deseja excluir esta tarefa de forma permanente? Esta ação não pode ser desfeita."
787
+ },
788
+ "emptyArchivedDescription": "Nenhuma tarefa arquivada neste projeto."
671
789
  },
672
790
  "ContractsPage": {
673
791
  "title": "Contratos",
@@ -1022,6 +1140,17 @@
1022
1140
  "completed": "Concluída",
1023
1141
  "failed": "Falhou",
1024
1142
  "skipped": "Ignorada"
1143
+ },
1144
+ "documentTypes": {
1145
+ "source_upload": "Documento principal",
1146
+ "generated_pdf": "PDF gerado",
1147
+ "attachment": "Anexo",
1148
+ "other": "Outro"
1149
+ },
1150
+ "historyActions": {
1151
+ "created": "Criado",
1152
+ "updated": "Atualizado",
1153
+ "deleted": "Excluído"
1025
1154
  }
1026
1155
  },
1027
1156
  "messages": {
@@ -1030,7 +1159,7 @@
1030
1159
  "createError": "Não foi possível criar o contrato.",
1031
1160
  "updateSuccess": "Contrato atualizado com sucesso.",
1032
1161
  "updateError": "Não foi possível atualizar o contrato.",
1033
- "pdfHint": "Envie um PDF, DOC ou DOCX para anexar como documento atual do contrato.",
1162
+ "pdfHint": "Envie um ou mais arquivos PDF, DOC ou DOCX. O primeiro arquivo vira o documento principal e os demais entram como anexos.",
1034
1163
  "pdfReady": "Documento pronto para salvar: {name}"
1035
1164
  }
1036
1165
  },
@@ -1054,7 +1183,7 @@
1054
1183
  "ContractDetailsPage": {
1055
1184
  "title": "Detalhes do Contrato",
1056
1185
  "breadcrumb": "Detalhes do Contrato",
1057
- "description": "Consulte a prévia do contrato, faça download do arquivo e acompanhe as relações vinculadas.",
1186
+ "description": "Baixe os arquivos do contrato e acompanhe as relações vinculadas.",
1058
1187
  "notFound": "O contrato solicitado não foi encontrado ou não está visível no seu escopo de acesso.",
1059
1188
  "tabs": {
1060
1189
  "overview": "Visão geral",
@@ -1107,11 +1236,16 @@
1107
1236
  "noDocuments": "Ainda não existem documentos para este contrato.",
1108
1237
  "noRevisions": "Ainda não existem aditivos, renovações ou revisões vinculados.",
1109
1238
  "noHistory": "Ainda não existe histórico de auditoria."
1239
+ },
1240
+ "historyNotes": {
1241
+ "manualCreated": "Contrato manual criado a partir do cadastro.",
1242
+ "registryUpdated": "Dados do cadastro do contrato atualizados.",
1243
+ "documentsRemoved": "Arquivos do contrato removidos."
1110
1244
  }
1111
1245
  },
1112
1246
  "TimesheetsPage": {
1113
1247
  "title": "Timesheets",
1114
- "description": "Lance horas de projeto em segundos, mantenha os rascunhos semanais organizados e envie quando estiver pronto.",
1248
+ "description": "Lance horas de projeto por dia, mantenha os rascunhos organizados e envie quando estiver pronto.",
1115
1249
  "breadcrumb": "Timesheets",
1116
1250
  "searchPlaceholder": "Buscar colaborador, projeto, tarefa, aprovador ou observações...",
1117
1251
  "emptyDescription": "Nenhuma timesheet corresponde aos filtros atuais.",
@@ -1139,7 +1273,7 @@
1139
1273
  "task": "Apenas tarefas da alocação de projeto selecionada aparecem aqui.",
1140
1274
  "selectProjectFirst": "Selecione um projeto primeiro para carregar ou criar tarefas.",
1141
1275
  "keepContext": "Manter projeto, tarefa e data após salvar",
1142
- "keepContextDescription": "Ideal para registrar vários lançamentos em sequência."
1276
+ "keepContextDescription": "Ideal para registrar vários lançamentos do mesmo dia em sequência."
1143
1277
  },
1144
1278
  "validation": {
1145
1279
  "descriptionMaxLength": "A descrição pode ter no máximo 500 caracteres."
@@ -1170,9 +1304,9 @@
1170
1304
  },
1171
1305
  "details": {
1172
1306
  "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",
1307
+ "description": "Consulte o resumo enviado e a lista de lançamentos vinculados a este dia.",
1308
+ "period": "Dia",
1309
+ "entriesTitle": "Lançamentos do dia",
1176
1310
  "noEntries": "Nenhum lançamento foi vinculado a esta timesheet."
1177
1311
  },
1178
1312
  "recentEntries": {
@@ -1186,7 +1320,7 @@
1186
1320
  },
1187
1321
  "cards": {
1188
1322
  "visible": "Timesheets visíveis",
1189
- "visibleDescription": "Registros semanais visíveis para o seu escopo de acesso.",
1323
+ "visibleDescription": "Registros diários visíveis para o seu escopo de acesso.",
1190
1324
  "pending": "Aguardando revisão",
1191
1325
  "pendingDescription": "Enviados e aguardando decisão do supervisor.",
1192
1326
  "hours": "Horas lançadas",
@@ -1195,6 +1329,7 @@
1195
1329
  "viewMode": "Visualização",
1196
1330
  "viewModeTable": "Tabela",
1197
1331
  "viewModeCards": "Grade",
1332
+ "viewModeCalendar": "Calendário",
1198
1333
  "messages": {
1199
1334
  "requiredFields": "Projeto, tarefa, data e duração são obrigatórios.",
1200
1335
  "collaboratorContextRequired": "Seu usuário precisa estar vinculado a um colaborador para lançar horas.",
@@ -1211,7 +1346,7 @@
1211
1346
  "deleteSuccess": "Lançamento excluído com sucesso.",
1212
1347
  "deleteError": "Não foi possível excluir o lançamento.",
1213
1348
  "confirmDeleteTitle": "Excluir lançamento?",
1214
- "confirmDeleteDescription": "Isso removerá o lançamento de \"{name}\" do rascunho semanal atual.",
1349
+ "confirmDeleteDescription": "Isso removerá o lançamento de \"{name}\" do rascunho atual.",
1215
1350
  "submitSuccess": "Timesheet enviada com sucesso.",
1216
1351
  "submitError": "Não foi possível enviar a timesheet.",
1217
1352
  "taskCreateSuccess": "Tarefa criada com sucesso.",
@@ -1247,8 +1382,8 @@
1247
1382
  },
1248
1383
  "details": {
1249
1384
  "title": "Detalhes da aprovação",
1250
- "description": "Consulte o envio, o período solicitado e o retorno registrado pelo aprovador.",
1251
- "period": "Período",
1385
+ "description": "Consulte o envio, a data informada e o retorno registrado pelo aprovador.",
1386
+ "period": "Dia",
1252
1387
  "projects": "Projetos vinculados",
1253
1388
  "decidedAt": "Decidido em",
1254
1389
  "timesheetSection": "Detalhes do Timesheet",
@@ -1291,6 +1426,7 @@
1291
1426
  "viewMode": "Visualização",
1292
1427
  "viewModeTable": "Tabela",
1293
1428
  "viewModeCards": "Grade",
1429
+ "viewModeCalendar": "Calendário",
1294
1430
  "messages": {
1295
1431
  "approveSuccess": "Aprovação concluída com sucesso.",
1296
1432
  "approveError": "Não foi possível aprovar a solicitação.",
@@ -1461,5 +1597,78 @@
1461
1597
  "noTimeOff": "Nenhuma solicitação pendente de ausência foi encontrada.",
1462
1598
  "noScheduleAdjustments": "Nenhuma solicitação pendente de ajuste de horário foi encontrada."
1463
1599
  }
1600
+ },
1601
+ "CollaboratorCostsSection": {
1602
+ "title": "Custos do colaborador",
1603
+ "description": "Custos recorrentes ou avulsos vinculados a este colaborador, além da remuneração base.",
1604
+ "empty": "Nenhum custo registrado para este colaborador.",
1605
+ "confirmDelete": "Remover este custo?",
1606
+ "summary": {
1607
+ "monthlyEstimate": "Custo mensal estimado",
1608
+ "allocatable": "Custos alocáveis",
1609
+ "nonAllocatable": "Custos não alocáveis",
1610
+ "costPerHour": "Custo/hora estimado"
1611
+ },
1612
+ "table": {
1613
+ "type": "Tipo",
1614
+ "amount": "Valor",
1615
+ "recurrence": "Recorrência",
1616
+ "allocatable": "Alocável",
1617
+ "validity": "Vigência",
1618
+ "actions": "Ações"
1619
+ },
1620
+ "fields": {
1621
+ "costType": "Tipo de custo",
1622
+ "costTypeName": "Nome",
1623
+ "costTypeCode": "Código",
1624
+ "costTypeDescription": "Descrição",
1625
+ "category": "Categoria",
1626
+ "description": "Descrição",
1627
+ "amount": "Valor",
1628
+ "recurrence": "Recorrência",
1629
+ "startDate": "Data inicial",
1630
+ "endDate": "Data final",
1631
+ "allocatable": "Alocável (custo de projeto)",
1632
+ "depreciationMonths": "Meses de depreciação",
1633
+ "notes": "Observações"
1634
+ },
1635
+ "placeholders": {
1636
+ "costType": "Selecione ou crie um tipo de custo",
1637
+ "costTypeName": "Nome do tipo de custo",
1638
+ "costTypeCode": "ex: INFRA-001",
1639
+ "costTypeDescription": "Descrição breve (opcional)",
1640
+ "category": "ex: Infraestrutura, Benefícios",
1641
+ "description": "Descrição resumida deste custo",
1642
+ "depreciationMonths": "ex: 12",
1643
+ "notes": "Observações adicionais (opcional)"
1644
+ },
1645
+ "hints": {
1646
+ "depreciationMonths": "O custo avulso será distribuído por este número de meses para o cálculo do custo mensal estimado."
1647
+ },
1648
+ "recurrence": {
1649
+ "one_time": "Avulso",
1650
+ "monthly": "Mensal",
1651
+ "yearly": "Anual"
1652
+ },
1653
+ "validation": {
1654
+ "required": "Este campo é obrigatório.",
1655
+ "greaterThanZero": "O valor deve ser maior que zero.",
1656
+ "endDateAfterStart": "A data final deve ser posterior à data inicial.",
1657
+ "positiveInteger": "Informe um número inteiro maior que zero."
1658
+ },
1659
+ "actions": {
1660
+ "add": "Adicionar custo",
1661
+ "edit": "Editar custo",
1662
+ "saving": "Salvando…",
1663
+ "createCostType": "Criar tipo de custo"
1664
+ },
1665
+ "messages": {
1666
+ "createSuccess": "Custo adicionado com sucesso.",
1667
+ "updateSuccess": "Custo atualizado com sucesso.",
1668
+ "deleteSuccess": "Custo removido com sucesso.",
1669
+ "saveError": "Não foi possível salvar o custo.",
1670
+ "deleteError": "Não foi possível remover o custo.",
1671
+ "loadError": "Não foi possível carregar os custos. Tente novamente."
1672
+ }
1464
1673
  }
1465
1674
  }
@@ -33,10 +33,6 @@ columns:
33
33
  - name: display_name
34
34
  type: varchar
35
35
  length: 180
36
- - name: department
37
- type: varchar
38
- length: 120
39
- isNullable: true
40
36
  - name: department_id
41
37
  type: fk
42
38
  isNullable: true
@@ -0,0 +1,28 @@
1
+ columns:
2
+ - type: pk
3
+ - name: collaborator_id
4
+ type: fk
5
+ references:
6
+ table: operations_collaborator
7
+ column: id
8
+ onDelete: CASCADE
9
+ onUpdate: CASCADE
10
+ - name: amount
11
+ type: decimal
12
+ precision: 12
13
+ scale: 2
14
+ - name: effective_date
15
+ type: date
16
+ isNullable: true
17
+ - name: actor_user_id
18
+ type: int
19
+ isNullable: true
20
+ - name: notes
21
+ type: text
22
+ isNullable: true
23
+ - type: created_at
24
+
25
+ indices:
26
+ - columns: [collaborator_id]
27
+ - columns: [actor_user_id]
28
+ - columns: [effective_date]
@@ -0,0 +1,56 @@
1
+ columns:
2
+ - type: pk
3
+ - name: collaborator_id
4
+ type: fk
5
+ references:
6
+ table: operations_collaborator
7
+ column: id
8
+ onDelete: CASCADE
9
+ onUpdate: CASCADE
10
+ - name: cost_type_id
11
+ type: fk
12
+ references:
13
+ table: operations_cost_type
14
+ column: id
15
+ onDelete: RESTRICT
16
+ onUpdate: CASCADE
17
+ - name: amount
18
+ type: decimal
19
+ precision: 14
20
+ scale: 2
21
+ - name: currency
22
+ type: varchar
23
+ length: 3
24
+ default: BRL
25
+ - name: recurrence
26
+ type: enum
27
+ values: [one_time, monthly, quarterly, yearly]
28
+ default: monthly
29
+ - name: allocatable
30
+ type: boolean
31
+ default: true
32
+ - name: reference_date
33
+ type: date
34
+ isNullable: true
35
+ - name: start_date
36
+ type: date
37
+ isNullable: true
38
+ - name: end_date
39
+ type: date
40
+ isNullable: true
41
+ - name: depreciation_months
42
+ type: integer
43
+ isNullable: true
44
+ - name: description
45
+ type: text
46
+ isNullable: true
47
+ - name: notes
48
+ type: text
49
+ isNullable: true
50
+ - type: created_at
51
+ - type: updated_at
52
+
53
+ indices:
54
+ - columns: [collaborator_id]
55
+ - columns: [cost_type_id]
56
+ - columns: [recurrence]
@@ -0,0 +1,38 @@
1
+ columns:
2
+ - type: pk
3
+ - type: slug
4
+ - name: name
5
+ type: varchar
6
+ length: 120
7
+ - name: code
8
+ type: varchar
9
+ length: 40
10
+ isNullable: true
11
+ - name: category
12
+ type: varchar
13
+ length: 80
14
+ isNullable: true
15
+ - name: description
16
+ type: text
17
+ isNullable: true
18
+ - name: default_recurrence
19
+ type: enum
20
+ values: [one_time, monthly, quarterly, yearly]
21
+ isNullable: true
22
+ - name: is_allocatable
23
+ type: boolean
24
+ isNullable: true
25
+ - name: is_depreciable
26
+ type: boolean
27
+ isNullable: true
28
+ - name: is_active
29
+ type: boolean
30
+ default: true
31
+ - type: created_at
32
+ - type: updated_at
33
+
34
+ indices:
35
+ - columns: [slug]
36
+ isUnique: true
37
+ - columns: [name]
38
+ - columns: [is_active]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/operations",
3
- "version": "0.0.318",
3
+ "version": "0.0.321",
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": "0.0.6",
13
- "@hed-hog/api-locale": "0.0.14",
14
- "@hed-hog/api-pagination": "0.0.7",
15
- "@hed-hog/core": "0.0.318",
12
+ "@hed-hog/api": "0.0.8",
16
13
  "@hed-hog/api-prisma": "0.0.6",
17
- "@hed-hog/contact": "0.0.318",
18
- "@hed-hog/api-types": "0.0.1"
14
+ "@hed-hog/api-pagination": "0.0.7",
15
+ "@hed-hog/api-locale": "0.0.14",
16
+ "@hed-hog/core": "0.0.321",
17
+ "@hed-hog/api-types": "0.0.1",
18
+ "@hed-hog/contact": "0.0.321"
19
19
  },
20
20
  "exports": {
21
21
  ".": {