@orbe-agro/client-core 5.6.161 → 5.6.163
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/@ecme/assets/styles/app.css +7 -0
- package/dist/@ecme/assets/styles/tailwind/index.css +7 -0
- package/dist/@ecme/components/template/Footer.js +1 -1
- package/dist/@types/base/@types/api/request/originacao/TLiquidarContratoRequest.d.ts +1 -0
- package/dist/@types/base/@types/api/request/originacao/TLiquidarContratoRequest.d.ts.map +1 -1
- package/dist/@types/base/@types/api/request/originacao/TSimularRoyaltiesRequest.d.ts +1 -0
- package/dist/@types/base/@types/api/request/originacao/TSimularRoyaltiesRequest.d.ts.map +1 -1
- package/dist/@types/base/@types/api/request/originacao/TUpdateProcessoFiscalRequest.d.ts +5 -0
- package/dist/@types/base/@types/api/request/originacao/TUpdateProcessoFiscalRequest.d.ts.map +1 -0
- package/dist/@types/base/@types/api/response/originacao/TProcessoFiscalResponse.d.ts +1 -0
- package/dist/@types/base/@types/api/response/originacao/TProcessoFiscalResponse.d.ts.map +1 -1
- package/dist/@types/base/@types/filters/index.d.ts +2 -0
- package/dist/@types/base/@types/filters/index.d.ts.map +1 -1
- package/dist/@types/base/@types/models/performance/ppr.d.ts +69 -0
- package/dist/@types/base/@types/models/performance/ppr.d.ts.map +1 -1
- package/dist/@types/base/components/filters/DynamicFilterField.d.ts.map +1 -1
- package/dist/@types/base/components/filters/DynamicListTableFilter.d.ts +37 -0
- package/dist/@types/base/components/filters/DynamicListTableFilter.d.ts.map +1 -0
- package/dist/@types/base/components/filters/index.d.ts +1 -0
- package/dist/@types/base/components/filters/index.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +27 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/gestaoServicos/config/contratoServico.d.ts +20 -0
- package/dist/@types/base/configs/endpoints.config/gestaoServicos/config/contratoServico.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/gestaoServicos/gestaoServicos.d.ts +22 -0
- package/dist/@types/base/configs/endpoints.config/gestaoServicos/gestaoServicos.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/cockpitFiscal.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/cockpitFiscal.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/processoFiscal.d.ts +3 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/processoFiscal.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts +5 -1
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/performance/config/ppr.d.ts +2 -0
- package/dist/@types/base/configs/endpoints.config/performance/config/ppr.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/performance/performance.d.ts +2 -0
- package/dist/@types/base/configs/endpoints.config/performance/performance.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/index.d.ts +1 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/index.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/gestaoServicos/cadastros.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/gestaoServicos/cadastros.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/performance/config/ppr.submenu.d.ts.map +1 -1
- package/dist/@types/base/services/index.d.ts +1 -1
- package/dist/@types/base/services/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/gestaoServicos/contratoServico/ContratoServicoService.d.ts +6 -0
- package/dist/@types/base/services/modules/gestaoServicos/contratoServico/ContratoServicoService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/gestaoServicos/index.d.ts +2 -0
- package/dist/@types/base/services/modules/gestaoServicos/index.d.ts.map +1 -0
- package/dist/@types/base/services/modules/originacao/cockpitFiscal/cockpitFiscalService.d.ts +2 -0
- package/dist/@types/base/services/modules/originacao/cockpitFiscal/cockpitFiscalService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/processoFiscal/processoFiscalService.d.ts +8 -0
- package/dist/@types/base/services/modules/originacao/processoFiscal/processoFiscalService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts +1 -1
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/performance/PerformanceService.d.ts +6 -1
- package/dist/@types/base/services/modules/performance/PerformanceService.d.ts.map +1 -1
- package/dist/@types/base/services/query.d.ts +15 -0
- package/dist/@types/base/services/query.d.ts.map +1 -1
- package/dist/base/@types/api/request/originacao/TUpdateProcessoFiscalRequest.js +2 -0
- package/dist/base/@types/api/request/originacao/TUpdateProcessoFiscalRequest.js.map +1 -0
- package/dist/base/assets/styles/init.css +7 -0
- package/dist/base/components/filters/DynamicFilterField.js +49 -19
- package/dist/base/components/filters/DynamicFilterField.js.map +1 -1
- package/dist/base/components/filters/DynamicListTableFilter.js +116 -0
- package/dist/base/components/filters/DynamicListTableFilter.js.map +1 -0
- package/dist/base/components/filters/index.js +3 -1
- package/dist/base/components/filters/index.js.map +1 -1
- package/dist/base/components/index.js +8 -6
- package/dist/base/components/index.js.map +1 -1
- package/dist/base/configs/endpoints.config/endpoints.navigation.js +3 -1
- package/dist/base/configs/endpoints.config/endpoints.navigation.js.map +1 -1
- package/dist/base/configs/endpoints.config/gestaoServicos/config/contratoServico.js +11 -0
- package/dist/base/configs/endpoints.config/gestaoServicos/config/contratoServico.js.map +1 -0
- package/dist/base/configs/endpoints.config/gestaoServicos/gestaoServicos.js +8 -0
- package/dist/base/configs/endpoints.config/gestaoServicos/gestaoServicos.js.map +1 -0
- package/dist/base/configs/endpoints.config/originacao/config/cockpitFiscal.js +2 -1
- package/dist/base/configs/endpoints.config/originacao/config/cockpitFiscal.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/processoFiscal.js +4 -1
- package/dist/base/configs/endpoints.config/originacao/config/processoFiscal.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js.map +1 -1
- package/dist/base/configs/endpoints.config/performance/config/ppr.js +3 -1
- package/dist/base/configs/endpoints.config/performance/config/ppr.js.map +1 -1
- package/dist/base/configs/index.js +18 -16
- package/dist/base/configs/index.js.map +1 -1
- package/dist/base/configs/navigation.config/index.js +18 -16
- package/dist/base/configs/navigation.config/index.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.navigation.js +2 -0
- package/dist/base/configs/navigation.config/modules.navigation.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.js +107 -0
- package/dist/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.js.map +1 -0
- package/dist/base/configs/navigation.config/modules.submenu/index.js +2 -0
- package/dist/base/configs/navigation.config/modules.submenu/index.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/gestaoServicos/cadastros.submenu.js +18 -0
- package/dist/base/configs/navigation.config/submenu/gestaoServicos/cadastros.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.js +15 -0
- package/dist/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.js +17 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/performance/config/ppr.submenu.js +3 -1
- package/dist/base/configs/navigation.config/submenu/performance/config/ppr.submenu.js.map +1 -1
- package/dist/base/index.js +236 -226
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/index.js +8 -2
- package/dist/base/services/modules/gestaoServicos/contratoServico/ContratoServicoService.js +37 -0
- package/dist/base/services/modules/gestaoServicos/contratoServico/ContratoServicoService.js.map +1 -0
- package/dist/base/services/modules/gestaoServicos/index.js +8 -0
- package/dist/base/services/modules/gestaoServicos/index.js.map +1 -0
- package/dist/base/services/modules/index.js +6 -1
- package/dist/base/services/modules/originacao/cockpitFiscal/cockpitFiscalService.js +8 -1
- package/dist/base/services/modules/originacao/cockpitFiscal/cockpitFiscalService.js.map +1 -1
- package/dist/base/services/modules/originacao/processoFiscal/processoFiscalService.js +23 -0
- package/dist/base/services/modules/originacao/processoFiscal/processoFiscalService.js.map +1 -1
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js +2 -2
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js.map +1 -1
- package/dist/base/services/modules/performance/PerformanceService.js +38 -0
- package/dist/base/services/modules/performance/PerformanceService.js.map +1 -1
- package/dist/base/services/modules/performance/index.js +6 -1
- package/dist/base/services/query.js +26 -0
- package/dist/base/services/query.js.map +1 -1
- package/lib/base/@types/api/request/originacao/TLiquidarContratoRequest.ts +1 -0
- package/lib/base/@types/api/request/originacao/TSimularRoyaltiesRequest.ts +1 -0
- package/lib/base/@types/api/request/originacao/TUpdateProcessoFiscalRequest.ts +5 -0
- package/lib/base/@types/api/response/originacao/TProcessoFiscalResponse.ts +1 -0
- package/lib/base/@types/filters/index.ts +2 -0
- package/lib/base/@types/models/performance/ppr.ts +74 -0
- package/lib/base/components/filters/DynamicFilterField.tsx +51 -20
- package/lib/base/components/filters/DynamicListTableFilter.tsx +180 -0
- package/lib/base/components/filters/index.ts +1 -0
- package/lib/base/configs/endpoints.config/endpoints.navigation.ts +3 -1
- package/lib/base/configs/endpoints.config/gestaoServicos/config/contratoServico.ts +10 -0
- package/lib/base/configs/endpoints.config/gestaoServicos/gestaoServicos.ts +7 -0
- package/lib/base/configs/endpoints.config/originacao/config/cockpitFiscal.ts +1 -0
- package/lib/base/configs/endpoints.config/originacao/config/processoFiscal.ts +3 -0
- package/lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts +1 -1
- package/lib/base/configs/endpoints.config/performance/config/ppr.ts +2 -0
- package/lib/base/configs/navigation.config/modules.navigation.ts +2 -1
- package/lib/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.ts +107 -0
- package/lib/base/configs/navigation.config/modules.submenu/index.ts +1 -0
- package/lib/base/configs/navigation.config/submenu/gestaoServicos/cadastros.submenu.ts +18 -0
- package/lib/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.ts +15 -0
- package/lib/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.ts +17 -0
- package/lib/base/configs/navigation.config/submenu/performance/config/ppr.submenu.ts +2 -0
- package/lib/base/services/index.ts +1 -0
- package/lib/base/services/modules/gestaoServicos/contratoServico/ContratoServicoService.ts +36 -0
- package/lib/base/services/modules/gestaoServicos/index.ts +1 -0
- package/lib/base/services/modules/originacao/cockpitFiscal/cockpitFiscalService.ts +8 -0
- package/lib/base/services/modules/originacao/processoFiscal/processoFiscalService.ts +25 -0
- package/lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts +2 -2
- package/lib/base/services/modules/performance/PerformanceService.ts +42 -0
- package/lib/base/services/query.ts +49 -0
- package/package.json +1 -1
|
@@ -112,3 +112,77 @@ export type TCreateIndicadorMetaSetorialGeral = {
|
|
|
112
112
|
parametrosCcIds: number[]
|
|
113
113
|
escalonamentos: TEscalonamentoMetaSetorialGeral[]
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
export type TEscalonamentoMetaSetorialPorCc = {
|
|
117
|
+
id?: number
|
|
118
|
+
ordem: number
|
|
119
|
+
percentualMinimo: number | null
|
|
120
|
+
percentualPagamento: number
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export type TIndicadorMetaSetorialPorCc = {
|
|
124
|
+
id?: number
|
|
125
|
+
parametroCcId: number
|
|
126
|
+
nome: string
|
|
127
|
+
peso: number
|
|
128
|
+
metaPlanejada: number
|
|
129
|
+
unidadeMedida: string
|
|
130
|
+
formaCalculo: string
|
|
131
|
+
fonteDados: string
|
|
132
|
+
objetivo: string
|
|
133
|
+
polaridade: 'MAIOR_MELHOR' | 'MENOR_MELHOR'
|
|
134
|
+
frequencia: 'MENSAL' | 'BIMESTRAL' | 'TRIMESTRAL' | 'SEMESTRAL' | 'ANUAL'
|
|
135
|
+
responsavelId: number
|
|
136
|
+
validadorId: number
|
|
137
|
+
escalonamentos: TEscalonamentoMetaSetorialPorCc[]
|
|
138
|
+
ativo?: boolean
|
|
139
|
+
dataCriacao?: string
|
|
140
|
+
dataAtualizacao?: string | null
|
|
141
|
+
usuarioCriacaoId?: number
|
|
142
|
+
usuarioAtualizacaoId?: number | null
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export type TFindMonitorIndicadorMetaSetorialPorCc = {
|
|
146
|
+
id?: number
|
|
147
|
+
parametroCcId: number
|
|
148
|
+
nome: string
|
|
149
|
+
peso: number
|
|
150
|
+
metaPlanejada: number
|
|
151
|
+
polaridade: 'MAIOR_MELHOR' | 'MENOR_MELHOR'
|
|
152
|
+
frequencia: 'MENSAL' | 'BIMESTRAL' | 'TRIMESTRAL' | 'SEMESTRAL' | 'ANUAL'
|
|
153
|
+
dataCriacao?: string
|
|
154
|
+
usuarioCriacaoId?: number
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export type TCreateIndicadorMetaSetorialPorCc = {
|
|
158
|
+
parametroCcId: number
|
|
159
|
+
nome: string
|
|
160
|
+
peso: number
|
|
161
|
+
metaPlanejada: number
|
|
162
|
+
unidadeMedida: string
|
|
163
|
+
formaCalculo: string
|
|
164
|
+
fonteDados: string
|
|
165
|
+
objetivo: string
|
|
166
|
+
polaridade: 'MAIOR_MELHOR' | 'MENOR_MELHOR'
|
|
167
|
+
frequencia: 'MENSAL' | 'BIMESTRAL' | 'TRIMESTRAL' | 'SEMESTRAL' | 'ANUAL'
|
|
168
|
+
responsavelId: number
|
|
169
|
+
validadorId: number
|
|
170
|
+
escalonamentos: TEscalonamentoMetaSetorialPorCc[]
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export type TUpdateIndicadorMetaSetorialPorCc = {
|
|
174
|
+
id: number
|
|
175
|
+
parametroCcId: number
|
|
176
|
+
nome: string
|
|
177
|
+
peso: number
|
|
178
|
+
metaPlanejada: number
|
|
179
|
+
unidadeMedida: string
|
|
180
|
+
formaCalculo: string
|
|
181
|
+
fonteDados: string
|
|
182
|
+
objetivo: string
|
|
183
|
+
polaridade: 'MAIOR_MELHOR' | 'MENOR_MELHOR'
|
|
184
|
+
frequencia: 'MENSAL' | 'BIMESTRAL' | 'TRIMESTRAL' | 'SEMESTRAL' | 'ANUAL'
|
|
185
|
+
responsavelId: number
|
|
186
|
+
validadorId: number
|
|
187
|
+
escalonamentos: TEscalonamentoMetaSetorialPorCc[]
|
|
188
|
+
}
|
|
@@ -95,6 +95,7 @@ const StandaloneField: React.FC<StandaloneFieldProps> = ({ item, lookupRegistry
|
|
|
95
95
|
<LookupComponent
|
|
96
96
|
name={descriptor.field}
|
|
97
97
|
label={descriptor.label}
|
|
98
|
+
multiSelect={descriptor.multiSelect}
|
|
98
99
|
/>
|
|
99
100
|
)
|
|
100
101
|
}
|
|
@@ -117,26 +118,56 @@ const StandaloneField: React.FC<StandaloneFieldProps> = ({ item, lookupRegistry
|
|
|
117
118
|
<Controller
|
|
118
119
|
name={descriptor.field}
|
|
119
120
|
control={control}
|
|
120
|
-
render={({ field, fieldState: { error } }) =>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
121
|
+
render={({ field, fieldState: { error } }) => {
|
|
122
|
+
if (descriptor.multiSelect) {
|
|
123
|
+
// Multi-select: value é string[], onChange recebe opções como array
|
|
124
|
+
const selectedOptions = options.filter(
|
|
125
|
+
(o) => (field.value as string[] | undefined)?.includes(o.value)
|
|
126
|
+
)
|
|
127
|
+
return (
|
|
128
|
+
<FormItem
|
|
129
|
+
className="text-xs"
|
|
130
|
+
label={descriptor.label}
|
|
131
|
+
invalid={!!error}
|
|
132
|
+
errorMessage={error?.message}
|
|
133
|
+
>
|
|
134
|
+
<Select
|
|
135
|
+
isClearable
|
|
136
|
+
isMulti
|
|
137
|
+
size="sm"
|
|
138
|
+
placeholder="Selecione uma ou mais opções"
|
|
139
|
+
options={options}
|
|
140
|
+
value={selectedOptions.length > 0 ? selectedOptions : null}
|
|
141
|
+
onChange={(opts: readonly { value: string; label: string }[] | null) =>
|
|
142
|
+
field.onChange(opts ? [...opts].map((o) => o.value) : null)
|
|
143
|
+
}
|
|
144
|
+
onBlur={field.onBlur}
|
|
145
|
+
/>
|
|
146
|
+
</FormItem>
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
<FormItem
|
|
152
|
+
className="text-xs"
|
|
153
|
+
label={descriptor.label}
|
|
154
|
+
invalid={!!error}
|
|
155
|
+
errorMessage={error?.message}
|
|
156
|
+
>
|
|
157
|
+
<Select
|
|
158
|
+
isClearable
|
|
159
|
+
size="sm"
|
|
160
|
+
placeholder="Selecione uma opção"
|
|
161
|
+
options={options}
|
|
162
|
+
value={options.find((o) => o.value === field.value) ?? null}
|
|
163
|
+
onChange={(opt: { value: string; label: string } | null) =>
|
|
164
|
+
field.onChange(opt?.value ?? null)
|
|
165
|
+
}
|
|
166
|
+
onBlur={field.onBlur}
|
|
167
|
+
/>
|
|
168
|
+
</FormItem>
|
|
169
|
+
)
|
|
170
|
+
}}
|
|
140
171
|
/>
|
|
141
172
|
)
|
|
142
173
|
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import Button from '@/components/ui/Button/index'
|
|
3
|
+
import Drawer from '@/components/ui/Drawer/index'
|
|
4
|
+
import { Form } from '@/components/ui/Form/index'
|
|
5
|
+
import { Badge } from '@/components/ui/index'
|
|
6
|
+
import { FormProvider, useForm } from 'react-hook-form'
|
|
7
|
+
import { useTranslation } from 'react-i18next'
|
|
8
|
+
import { TbFilter } from 'react-icons/tb'
|
|
9
|
+
import useFilterMetadata from '@base/hooks/filters/useFilterMetadata'
|
|
10
|
+
import DynamicFilterPanel from './DynamicFilterPanel'
|
|
11
|
+
import type {
|
|
12
|
+
IFilterFieldDescriptor,
|
|
13
|
+
TLookupComponentRegistry,
|
|
14
|
+
} from '@base/@types/filters'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Props para o DynamicListTableFilter — componente genérico de filtros
|
|
18
|
+
* que renderiza um botão com badge + drawer com formulário dinâmico.
|
|
19
|
+
*
|
|
20
|
+
* Cada list-table que quiser filtros dinâmicos cria um wrapper de ~10 linhas
|
|
21
|
+
* que extrai os valores do seu hook específico e passa como props.
|
|
22
|
+
*/
|
|
23
|
+
export interface DynamicListTableFilterProps {
|
|
24
|
+
/** Chave SWR única para cache do filter-metadata (ex: '/originacao/api/saldo-ticket/filter-metadata') */
|
|
25
|
+
swrKey: string
|
|
26
|
+
/** Função que busca os metadados de filtro no backend */
|
|
27
|
+
metadataFetcher: () => Promise<IFilterFieldDescriptor[]>
|
|
28
|
+
/** Estado atual dos filtros (vem da store do módulo) */
|
|
29
|
+
filterParams: Record<string, unknown>
|
|
30
|
+
/** Atualiza o estado dos filtros (recebendo params limpos) */
|
|
31
|
+
setFilterParams: (payload: Record<string, unknown>) => void
|
|
32
|
+
/** Número de filtros ativos (para o badge) */
|
|
33
|
+
activeFiltersCount: number
|
|
34
|
+
/**
|
|
35
|
+
* Mapa de resource → componente de lookup.
|
|
36
|
+
* Mesmo tipo usado pelo DynamicFilterPanel.
|
|
37
|
+
* @example { 'business-partner': BusinessPartnerLookup, 'safra': SafraLookup }
|
|
38
|
+
*/
|
|
39
|
+
lookupRegistry?: TLookupComponentRegistry
|
|
40
|
+
/**
|
|
41
|
+
* Mapa de resource → função de extração de valor primitivo.
|
|
42
|
+
* Usado no onSubmit para transformar objetos completos armazenados no RHF
|
|
43
|
+
* nos valores planos que a API espera.
|
|
44
|
+
* @example { 'business-partner': (obj) => obj?.id, 'safra': (obj) => obj?.id }
|
|
45
|
+
*/
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
extractValueRegistry?: Record<string, (obj: any) => unknown>
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const DynamicListTableFilter: React.FC<DynamicListTableFilterProps> = ({
|
|
51
|
+
swrKey,
|
|
52
|
+
metadataFetcher,
|
|
53
|
+
filterParams,
|
|
54
|
+
setFilterParams,
|
|
55
|
+
activeFiltersCount,
|
|
56
|
+
lookupRegistry,
|
|
57
|
+
extractValueRegistry,
|
|
58
|
+
}) => {
|
|
59
|
+
const [filterIsOpen, setFilterIsOpen] = useState(false)
|
|
60
|
+
|
|
61
|
+
const { fields, isLoading: metadataLoading, error: metadataError } = useFilterMetadata(
|
|
62
|
+
swrKey,
|
|
63
|
+
metadataFetcher,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
// Sem zod schema: o backend define quais campos existem e todos são opcionais.
|
|
67
|
+
// O defaultValues reconstitui o estado atual dos filtros ao reabrir o drawer.
|
|
68
|
+
const methods = useForm<Record<string, unknown>>({
|
|
69
|
+
defaultValues: filterParams,
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const onSubmit = (data: Record<string, unknown>) => {
|
|
73
|
+
// Constrói um mapa rápido de field → lookup.resource para os campos com lookup
|
|
74
|
+
const lookupResourceByField = new Map<string, string>()
|
|
75
|
+
for (const f of fields) {
|
|
76
|
+
if (f.lookup) {
|
|
77
|
+
lookupResourceByField.set(f.field, f.lookup.resource)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const cleanParams: Record<string, unknown> = {}
|
|
82
|
+
for (const [key, value] of Object.entries(data)) {
|
|
83
|
+
if (value === null || value === undefined || value === '') continue
|
|
84
|
+
|
|
85
|
+
const resource = lookupResourceByField.get(key)
|
|
86
|
+
// Campo de lookup com extractFn registrado → extrai o primitivo (id, codigo)
|
|
87
|
+
// Se o extractFn não existir (lookup não registrado no registry), trata como texto comum
|
|
88
|
+
const extractFn = resource && extractValueRegistry?.[resource]
|
|
89
|
+
if (extractFn) {
|
|
90
|
+
// Multi-select lookup: value é um array de objetos → extrai primitivo de cada um
|
|
91
|
+
if (Array.isArray(value)) {
|
|
92
|
+
const primitives = value.map((v) => extractFn(v)).filter((p) => p !== null && p !== undefined)
|
|
93
|
+
if (primitives.length > 0) {
|
|
94
|
+
cleanParams[key] = primitives
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
const primitive = extractFn(value)
|
|
98
|
+
if (primitive !== null && primitive !== undefined) {
|
|
99
|
+
cleanParams[key] = primitive
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
cleanParams[key] = value
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
setFilterParams(cleanParams)
|
|
107
|
+
setFilterIsOpen(false)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const onClearFilters = () => {
|
|
111
|
+
// Zera explicitamente cada campo registrado pelos metadados.
|
|
112
|
+
// Usar reset({}) sozinho não é suficiente: o react-hook-form mantém o registro
|
|
113
|
+
// dos campos dinâmicos e pode devolver valores antigos em submits subsequentes.
|
|
114
|
+
// Também inclui os campos de range (startField/endField) que ficam registrados
|
|
115
|
+
// separadamente no form pelo DynamicFilterField/RangeField.
|
|
116
|
+
const clearedValues: Record<string, null> = {}
|
|
117
|
+
for (const f of fields) {
|
|
118
|
+
clearedValues[f.field] = null
|
|
119
|
+
}
|
|
120
|
+
methods.reset(clearedValues)
|
|
121
|
+
setFilterParams({})
|
|
122
|
+
setFilterIsOpen(false)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const { t } = useTranslation()
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<>
|
|
129
|
+
<Badge className="ml-auto mr-4" content={activeFiltersCount}>
|
|
130
|
+
<Button icon={<TbFilter />} className='text-xs' onClick={() => setFilterIsOpen(true)}>
|
|
131
|
+
{t('common.actions.filter')}
|
|
132
|
+
</Button>
|
|
133
|
+
</Badge>
|
|
134
|
+
<Drawer
|
|
135
|
+
title={<span className="font-bold">Filtros</span>}
|
|
136
|
+
isOpen={filterIsOpen}
|
|
137
|
+
className="text-xs"
|
|
138
|
+
onClose={() => setFilterIsOpen(false)}
|
|
139
|
+
onRequestClose={() => setFilterIsOpen(false)}
|
|
140
|
+
>
|
|
141
|
+
<FormProvider {...methods}>
|
|
142
|
+
<Form
|
|
143
|
+
className="h-full"
|
|
144
|
+
containerClassName="flex h-full flex-col"
|
|
145
|
+
onSubmit={methods.handleSubmit(onSubmit)}
|
|
146
|
+
>
|
|
147
|
+
<div className="flex-1 overflow-y-auto overflow-hidden pr-3">
|
|
148
|
+
{metadataLoading && (
|
|
149
|
+
<div className="flex justify-center py-6 text-sm text-gray-500">
|
|
150
|
+
Carregando filtros...
|
|
151
|
+
</div>
|
|
152
|
+
)}
|
|
153
|
+
{metadataError && !metadataLoading && (
|
|
154
|
+
<div className="flex justify-center py-6 text-sm text-red-500">
|
|
155
|
+
Falha ao carregar filtros. Tente novamente.
|
|
156
|
+
</div>
|
|
157
|
+
)}
|
|
158
|
+
{!metadataLoading && !metadataError && (
|
|
159
|
+
<DynamicFilterPanel
|
|
160
|
+
fields={fields}
|
|
161
|
+
lookupRegistry={lookupRegistry}
|
|
162
|
+
/>
|
|
163
|
+
)}
|
|
164
|
+
</div>
|
|
165
|
+
<div className="flex justify-end flex-col gap-2 mt-auto border-t dark:border-t-zinc-600">
|
|
166
|
+
<Button variant="plain" type="button" onClick={onClearFilters}>
|
|
167
|
+
Limpar filtros
|
|
168
|
+
</Button>
|
|
169
|
+
<Button variant="solid" type="submit">
|
|
170
|
+
Filtrar
|
|
171
|
+
</Button>
|
|
172
|
+
</div>
|
|
173
|
+
</Form>
|
|
174
|
+
</FormProvider>
|
|
175
|
+
</Drawer>
|
|
176
|
+
</>
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export default DynamicListTableFilter
|
|
@@ -47,6 +47,7 @@ import consultaBuonny from './transportadora/consultaBuonny'
|
|
|
47
47
|
import consultaVerttice from './transportadora/consultaVerttice'
|
|
48
48
|
import bayer from './bayer/bayer'
|
|
49
49
|
import insumos from './insumos/insumos'
|
|
50
|
+
import gestaoServicos from './gestaoServicos/gestaoServicos'
|
|
50
51
|
import vinculoFuncionalidadeRole from './adm/config/vinculoFuncionalidadeRole'
|
|
51
52
|
import sap from './sap/sap'
|
|
52
53
|
import agendamento from './agendamento/agendamento'
|
|
@@ -111,7 +112,8 @@ const endpointNavigationConfig = {
|
|
|
111
112
|
agendamento,
|
|
112
113
|
controleAcesso,
|
|
113
114
|
performance,
|
|
114
|
-
ativos
|
|
115
|
+
ativos,
|
|
116
|
+
gestaoServicos
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
export default endpointNavigationConfig
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const CONTRATO_SERVICO_BASE_URL = '/gestao-servicos/api/contrato-servico'
|
|
2
|
+
|
|
3
|
+
const contratoServico = {
|
|
4
|
+
create: { endpoint: CONTRATO_SERVICO_BASE_URL, httpMethod: 'post' },
|
|
5
|
+
update: { endpoint: CONTRATO_SERVICO_BASE_URL, httpMethod: 'put' },
|
|
6
|
+
findMonitor: { endpoint: `${CONTRATO_SERVICO_BASE_URL}/find-monitor`, httpMethod: 'post' },
|
|
7
|
+
findOne: { endpoint: CONTRATO_SERVICO_BASE_URL, httpMethod: 'get' }
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default contratoServico
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const processoFiscal = {
|
|
2
|
+
create: '/originacao/api/processo-fiscal',
|
|
3
|
+
update: (id: string) => `/originacao/api/processo-fiscal/${id}`,
|
|
2
4
|
uploadNotaFiscal: (id: string) => `/originacao/api/processo-fiscal/${id}/upload-nota-fiscal`,
|
|
3
5
|
downloadNotaFiscal: (url: string) => `/originacao/api/processo-fiscal/nota-fiscal/${url}`,
|
|
6
|
+
listByContrato: (contratoId: string | number) => `/originacao/api/processo-fiscal?contratoId=${contratoId}`,
|
|
4
7
|
};
|
|
5
8
|
|
|
6
9
|
export default processoFiscal;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const saldoTicket = {
|
|
2
|
-
buscarSaldoContrato: (id: string) => `/originacao/api/saldo-ticket/contrato/${id}`,
|
|
2
|
+
buscarSaldoContrato: (id: string, processoFiscalId: string | number) => `/originacao/api/saldo-ticket/contrato/${id}?processoFiscalId=${processoFiscalId}`,
|
|
3
3
|
findAll: (params?: string) => `/originacao/api/saldo-ticket?${params ?? ""}`,
|
|
4
4
|
historicoById: (id: string, params?: string) => `/originacao/api/saldo-ticket/${id}/historicos?${params ?? ""}`,
|
|
5
5
|
buscarSaldoDisponivel: '/originacao/api/saldo-ticket/saldo-disponivel',
|
|
@@ -7,6 +7,8 @@ const ppr = {
|
|
|
7
7
|
indicadoresMetaGlobalFindMonitor: '/performance/api/ppr/indicadores/meta-global/find-monitor',
|
|
8
8
|
indicadoresMetaSetorialGeral: '/performance/api/ppr/indicadores/meta-setorial-geral',
|
|
9
9
|
indicadoresMetaSetorialGeralFindMonitor: '/performance/api/ppr/indicadores/meta-setorial-geral/find-monitor',
|
|
10
|
+
indicadoresMetaSetorialPorCc: '/performance/api/ppr/indicadores/meta-setorial-por-cc',
|
|
11
|
+
indicadoresMetaSetorialPorCcFindMonitor: '/performance/api/ppr/indicadores/meta-setorial-por-cc/find-monitor',
|
|
10
12
|
};
|
|
11
13
|
|
|
12
14
|
export default ppr;
|
|
@@ -28,7 +28,7 @@ import subMenuJuridico from './modules.submenu/juridico/submenu.juridico'
|
|
|
28
28
|
import subMenuBayer from './modules.submenu/bayer/submenu.bayer'
|
|
29
29
|
import subMenuCrm from './modules.submenu/crm/subMenuCrm.navigation'
|
|
30
30
|
import subMenuPerformance from './modules.submenu/performance/submenu.performance'
|
|
31
|
-
import { subMenuAtivos } from './modules.submenu'
|
|
31
|
+
import { subMenuAtivos, subMenuGestaoServicos } from './modules.submenu'
|
|
32
32
|
import hubFiscalNavigationConfig from './modules.submenu/HubFiscal/hubFiscal.navigation'
|
|
33
33
|
|
|
34
34
|
const modulesNavigationConfig: NavigationTree[] = [
|
|
@@ -57,6 +57,7 @@ const modulesNavigationConfig: NavigationTree[] = [
|
|
|
57
57
|
subMenuRacao,
|
|
58
58
|
subMenuCompras,
|
|
59
59
|
subMenuControleAcesso,
|
|
60
|
+
subMenuGestaoServicos,
|
|
60
61
|
...subMenuCrm,
|
|
61
62
|
dadosunificadosNavigationConfig,
|
|
62
63
|
...dadosMestresNavigationConfig,
|
package/lib/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ADMIN, USER } from '@/constants/roles.constant'
|
|
2
|
+
import { NavigationTree } from '@/@types/navigation'
|
|
3
|
+
import { NAV_ITEM_TYPE_COLLAPSE, NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'
|
|
4
|
+
|
|
5
|
+
const subMenuGestaoServicos: NavigationTree = {
|
|
6
|
+
key: 'modules.gestaoServicos',
|
|
7
|
+
path: '',
|
|
8
|
+
title: 'Gestão de Serviços',
|
|
9
|
+
translateKey: 'nav.modules.gestaoServicos.title',
|
|
10
|
+
icon: 'gestaoServicos',
|
|
11
|
+
type: NAV_ITEM_TYPE_COLLAPSE,
|
|
12
|
+
authority: [ADMIN, USER],
|
|
13
|
+
subMenu: [
|
|
14
|
+
{
|
|
15
|
+
key: 'modules.gestaoServicos.dashboard',
|
|
16
|
+
path: '/gestao-servicos',
|
|
17
|
+
title: 'Dashboard',
|
|
18
|
+
translateKey: 'nav.modules.gestaoServicos.dashboard',
|
|
19
|
+
icon: 'dashboard',
|
|
20
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
21
|
+
authority: [ADMIN, USER],
|
|
22
|
+
subMenu: [],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
key: 'modules.gestaoServicos.contratos',
|
|
26
|
+
path: '/gestao-servicos/contratos',
|
|
27
|
+
title: 'Contratos',
|
|
28
|
+
translateKey: 'nav.modules.gestaoServicos.contratos',
|
|
29
|
+
icon: 'contratoServico',
|
|
30
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
31
|
+
authority: [ADMIN, USER],
|
|
32
|
+
subMenu: [],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: 'modules.gestaoServicos.agenda',
|
|
36
|
+
path: '/gestao-servicos/agenda',
|
|
37
|
+
title: 'Agenda',
|
|
38
|
+
translateKey: 'nav.modules.gestaoServicos.agenda',
|
|
39
|
+
icon: 'calendar',
|
|
40
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
41
|
+
authority: [ADMIN, USER],
|
|
42
|
+
subMenu: [],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: 'modules.gestaoServicos.notasFiscais',
|
|
46
|
+
path: '/gestao-servicos/notas-fiscais',
|
|
47
|
+
title: 'Notas Fiscais',
|
|
48
|
+
translateKey: 'nav.modules.gestaoServicos.notasFiscais',
|
|
49
|
+
icon: 'receipt',
|
|
50
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
51
|
+
authority: [ADMIN, USER],
|
|
52
|
+
subMenu: [],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: 'modules.gestaoServicos.pagamentos',
|
|
56
|
+
path: '/gestao-servicos/pagamentos',
|
|
57
|
+
title: 'Pagamentos',
|
|
58
|
+
translateKey: 'nav.modules.gestaoServicos.pagamentos',
|
|
59
|
+
icon: 'currency-dollar',
|
|
60
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
61
|
+
authority: [ADMIN, USER],
|
|
62
|
+
subMenu: [],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: 'modules.gestaoServicos.aprovacoes',
|
|
66
|
+
path: '/gestao-servicos/aprovacoes',
|
|
67
|
+
title: 'Minhas Aprovações',
|
|
68
|
+
translateKey: 'nav.modules.gestaoServicos.aprovacoes',
|
|
69
|
+
icon: 'checkmark',
|
|
70
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
71
|
+
authority: [ADMIN, USER],
|
|
72
|
+
subMenu: [],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
key: 'modules.gestaoServicos.configCentroCusto',
|
|
76
|
+
path: '/gestao-servicos/configuracoes/centros-custo',
|
|
77
|
+
title: 'Config. Centro Custo',
|
|
78
|
+
translateKey: 'nav.modules.gestaoServicos.configCentroCusto',
|
|
79
|
+
icon: 'settings',
|
|
80
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
81
|
+
authority: [ADMIN, USER],
|
|
82
|
+
subMenu: [],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: 'modules.gestaoServicos.fornecedor',
|
|
86
|
+
path: '/gestao-servicos/fornecedor/contratos',
|
|
87
|
+
title: 'Visão Fornecedor',
|
|
88
|
+
translateKey: 'nav.modules.gestaoServicos.fornecedor',
|
|
89
|
+
icon: 'user',
|
|
90
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
91
|
+
authority: [ADMIN, USER],
|
|
92
|
+
subMenu: [],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: 'modules.gestaoServicos.historico',
|
|
96
|
+
path: '/gestao-servicos/historico',
|
|
97
|
+
title: 'Histórico',
|
|
98
|
+
translateKey: 'nav.modules.gestaoServicos.historico',
|
|
99
|
+
icon: 'history',
|
|
100
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
101
|
+
authority: [ADMIN, USER],
|
|
102
|
+
subMenu: [],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export default subMenuGestaoServicos
|
|
@@ -11,3 +11,4 @@ export { default as subMenuRacao } from './racao/submenu.racao';
|
|
|
11
11
|
export { default as subMenuTemplate } from './template/submenu.template';
|
|
12
12
|
export { default as subMenuPerformance } from './performance/submenu.performance';
|
|
13
13
|
export { default as subMenuAtivos } from './ativos/submenu.ativos';
|
|
14
|
+
export { default as subMenuGestaoServicos } from './gestaoServicos/submenu.gestaoServicos';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NavigationTree } from '@/@types/navigation'
|
|
2
|
+
import { NAV_ITEM_TYPE_COLLAPSE, NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'
|
|
3
|
+
import contratoServicoSubmenu from './config/contratoServico.submenu'
|
|
4
|
+
|
|
5
|
+
const cadastrosSubmenu: NavigationTree = {
|
|
6
|
+
key: 'modules.gestaoServicos.cadastros',
|
|
7
|
+
path: '',
|
|
8
|
+
title: 'Cadastros',
|
|
9
|
+
translateKey: 'nav.modules.gestaoServicos.cadastros',
|
|
10
|
+
icon: '',
|
|
11
|
+
type: NAV_ITEM_TYPE_COLLAPSE,
|
|
12
|
+
authority: [],
|
|
13
|
+
subMenu: [
|
|
14
|
+
contratoServicoSubmenu,
|
|
15
|
+
],
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default cadastrosSubmenu
|
package/lib/base/configs/navigation.config/submenu/gestaoServicos/config/contratoServico.submenu.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NavigationTree } from '@/@types/navigation'
|
|
2
|
+
import { NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'
|
|
3
|
+
|
|
4
|
+
const contratoServicoSubmenu: NavigationTree = {
|
|
5
|
+
key: 'modules.gestaoServicos.contratoServico',
|
|
6
|
+
path: '/gestao-servicos/contratos',
|
|
7
|
+
title: 'Contratos',
|
|
8
|
+
translateKey: 'nav.modules.gestaoServicos.contratoServico',
|
|
9
|
+
icon: 'contratoServico',
|
|
10
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
11
|
+
authority: [],
|
|
12
|
+
subMenu: [],
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default contratoServicoSubmenu
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NavigationTree } from '@/@types/navigation'
|
|
2
|
+
import { NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'
|
|
3
|
+
import { ADMIN } from '@/constants/roles.constant'
|
|
4
|
+
|
|
5
|
+
const metaSetorialPorCcPprSubmenu: NavigationTree = {
|
|
6
|
+
key: 'modules.performance.ppr.metaSetorialPorCc',
|
|
7
|
+
path: '/performance/ppr/meta-setorial-por-cc',
|
|
8
|
+
title: 'Meta Setorial por CC',
|
|
9
|
+
translateKey: 'nav.modules.performance.ppr.metaSetorialPorCc.title',
|
|
10
|
+
icon: '',
|
|
11
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
12
|
+
forceShowTitle: true,
|
|
13
|
+
authority: [ADMIN],
|
|
14
|
+
subMenu: [],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default metaSetorialPorCcPprSubmenu
|
|
@@ -4,6 +4,7 @@ import { ADMIN } from '@/constants/roles.constant'
|
|
|
4
4
|
import aberturaAnoPprSubmenu from './aberturaAnoPpr.submenu'
|
|
5
5
|
import metaGlobalPprSubmenu from './metaGlobalPpr.submenu'
|
|
6
6
|
import metaSetorialGeralPprSubmenu from './metaSetorialGeralPpr.submenu'
|
|
7
|
+
import metaSetorialPorCcPprSubmenu from './metaSetorialPorCcPpr.submenu'
|
|
7
8
|
|
|
8
9
|
const pprSubmenu: NavigationTree = {
|
|
9
10
|
key: 'modules.performance.ppr',
|
|
@@ -17,6 +18,7 @@ const pprSubmenu: NavigationTree = {
|
|
|
17
18
|
aberturaAnoPprSubmenu,
|
|
18
19
|
metaGlobalPprSubmenu,
|
|
19
20
|
metaSetorialGeralPprSubmenu,
|
|
21
|
+
metaSetorialPorCcPprSubmenu,
|
|
20
22
|
],
|
|
21
23
|
}
|
|
22
24
|
|