@orbe-agro/client-core 5.6.161 → 5.6.162
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 +7 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- 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/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/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/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/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 +234 -226
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/index.js +8 -2
- 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/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/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/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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TUpdateProcessoFiscalRequest.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -4914,6 +4914,9 @@ hr:is(.dark *){
|
|
|
4914
4914
|
.mt-\[50\%\]{
|
|
4915
4915
|
margin-top: 50%;
|
|
4916
4916
|
}
|
|
4917
|
+
.mt-auto{
|
|
4918
|
+
margin-top: auto;
|
|
4919
|
+
}
|
|
4917
4920
|
.block{
|
|
4918
4921
|
display: block;
|
|
4919
4922
|
}
|
|
@@ -7301,6 +7304,10 @@ hr:is(.dark *){
|
|
|
7301
7304
|
.dark\:border-transparent:is(.dark *){
|
|
7302
7305
|
border-color: transparent;
|
|
7303
7306
|
}
|
|
7307
|
+
.dark\:border-t-zinc-600:is(.dark *){
|
|
7308
|
+
--tw-border-opacity: 1;
|
|
7309
|
+
border-top-color: rgb(82 82 91 / var(--tw-border-opacity, 1));
|
|
7310
|
+
}
|
|
7304
7311
|
.dark\:\!bg-gray-900:is(.dark *){
|
|
7305
7312
|
background-color: var(--gray-900) !important;
|
|
7306
7313
|
}
|
|
@@ -44,7 +44,8 @@ const StandaloneField = ({ item, lookupRegistry }) => {
|
|
|
44
44
|
LookupComponent,
|
|
45
45
|
{
|
|
46
46
|
name: descriptor.field,
|
|
47
|
-
label: descriptor.label
|
|
47
|
+
label: descriptor.label,
|
|
48
|
+
multiSelect: descriptor.multiSelect
|
|
48
49
|
}
|
|
49
50
|
);
|
|
50
51
|
}
|
|
@@ -62,27 +63,56 @@ const StandaloneField = ({ item, lookupRegistry }) => {
|
|
|
62
63
|
{
|
|
63
64
|
name: descriptor.field,
|
|
64
65
|
control,
|
|
65
|
-
render: ({ field, fieldState: { error } }) =>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
children: /* @__PURE__ */ jsx(
|
|
73
|
-
Select,
|
|
66
|
+
render: ({ field, fieldState: { error } }) => {
|
|
67
|
+
if (descriptor.multiSelect) {
|
|
68
|
+
const selectedOptions = options.filter(
|
|
69
|
+
(o) => field.value?.includes(o.value)
|
|
70
|
+
);
|
|
71
|
+
return /* @__PURE__ */ jsx(
|
|
72
|
+
FormItem,
|
|
74
73
|
{
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
className: "text-xs",
|
|
75
|
+
label: descriptor.label,
|
|
76
|
+
invalid: !!error,
|
|
77
|
+
errorMessage: error?.message,
|
|
78
|
+
children: /* @__PURE__ */ jsx(
|
|
79
|
+
Select,
|
|
80
|
+
{
|
|
81
|
+
isClearable: true,
|
|
82
|
+
isMulti: true,
|
|
83
|
+
size: "sm",
|
|
84
|
+
placeholder: "Selecione uma ou mais opções",
|
|
85
|
+
options,
|
|
86
|
+
value: selectedOptions.length > 0 ? selectedOptions : null,
|
|
87
|
+
onChange: (opts) => field.onChange(opts ? [...opts].map((o) => o.value) : null),
|
|
88
|
+
onBlur: field.onBlur
|
|
89
|
+
}
|
|
90
|
+
)
|
|
82
91
|
}
|
|
83
|
-
)
|
|
92
|
+
);
|
|
84
93
|
}
|
|
85
|
-
|
|
94
|
+
return /* @__PURE__ */ jsx(
|
|
95
|
+
FormItem,
|
|
96
|
+
{
|
|
97
|
+
className: "text-xs",
|
|
98
|
+
label: descriptor.label,
|
|
99
|
+
invalid: !!error,
|
|
100
|
+
errorMessage: error?.message,
|
|
101
|
+
children: /* @__PURE__ */ jsx(
|
|
102
|
+
Select,
|
|
103
|
+
{
|
|
104
|
+
isClearable: true,
|
|
105
|
+
size: "sm",
|
|
106
|
+
placeholder: "Selecione uma opção",
|
|
107
|
+
options,
|
|
108
|
+
value: options.find((o) => o.value === field.value) ?? null,
|
|
109
|
+
onChange: (opt) => field.onChange(opt?.value ?? null),
|
|
110
|
+
onBlur: field.onBlur
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
}
|
|
86
116
|
}
|
|
87
117
|
);
|
|
88
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicFilterField.js","sources":["../../../../lib/base/components/filters/DynamicFilterField.tsx"],"sourcesContent":["import React from 'react'\nimport { Controller, useFormContext } from 'react-hook-form'\nimport { DatePicker, FormItem, Input, Select } from '@/components/ui'\nimport DatePickerRange from '@/components/ui/DatePicker/DatePickerRange'\nimport type {\n TFilterRenderItem,\n IFilterStandaloneField,\n IFilterRangeGroup,\n TLookupComponentRegistry,\n} from '@base/@types/filters'\n\ninterface DynamicFilterFieldProps {\n item: TFilterRenderItem\n lookupRegistry?: TLookupComponentRegistry\n}\n\n/**\n * Renderiza o componente de formulário correto para um TFilterRenderItem.\n *\n * Regras de renderização:\n * - `kind === 'range'` → DatePickerRange (dois campos DATE+BETWEEN fundidos)\n * - `kind === 'standalone'`:\n * - `lookup != null` → componente do lookupRegistry (async select)\n * - `allowedValues != null` → Select com opções fixas (ENUM)\n * - `dataType === 'DATE'` → DatePicker\n * - `dataType === 'NUMBER'` → Input type=\"number\"\n * - `dataType === 'STRING'` → Input type=\"text\"\n *\n * Deve ser usado DENTRO de um FormProvider.\n */\nconst DynamicFilterField: React.FC<DynamicFilterFieldProps> = ({ item, lookupRegistry }) => {\n if (item.kind === 'range') {\n return <RangeField item={item} />\n }\n return <StandaloneField item={item} lookupRegistry={lookupRegistry} />\n}\n\n// ---------------------------------------------------------------------------\n// Range field: DatePickerRange gerenciando dois campos reais no form\n// ---------------------------------------------------------------------------\n\ninterface RangeFieldProps {\n item: IFilterRangeGroup\n}\n\nconst RangeField: React.FC<RangeFieldProps> = ({ item }) => {\n const { setValue, watch } = useFormContext()\n\n const startValue = watch(item.startField.field)\n const endValue = watch(item.endField.field)\n\n // Reconstrói o tuple [Date|null, Date|null] a partir das strings armazenadas.\n // Usa 'T00:00:00' para forçar parse em horário local (sem isso, 'YYYY-MM-DD'\n // é interpretado como UTC midnight e exibe um dia anterior no fuso UTC-3).\n const rangeValue: [Date | null, Date | null] = [\n startValue ? new Date(`${startValue}T00:00:00`) : null,\n endValue ? new Date(`${endValue}T00:00:00`) : null,\n ]\n\n const handleChange = (value: [Date | null, Date | null]) => {\n const [start, end] = value ?? [null, null]\n setValue(item.startField.field, start ? formatDate(start) : null, { shouldDirty: true })\n setValue(item.endField.field, end ? formatDate(end) : null, { shouldDirty: true })\n }\n\n return (\n <FormItem className=\"text-xs\" label={item.label}>\n <DatePickerRange\n size=\"sm\"\n value={rangeValue}\n onChange={handleChange}\n />\n </FormItem>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Standalone field: delega para lookup registry ou input genérico\n// ---------------------------------------------------------------------------\n\ninterface StandaloneFieldProps {\n item: IFilterStandaloneField\n lookupRegistry?: TLookupComponentRegistry\n}\n\nconst StandaloneField: React.FC<StandaloneFieldProps> = ({ item, lookupRegistry }) => {\n const { descriptor } = item\n const { control } = useFormContext()\n\n // Lookup: delega para o componente registrado no microfrontend\n if (descriptor.lookup) {\n const LookupComponent = lookupRegistry?.[descriptor.lookup.resource]\n if (LookupComponent) {\n return (\n <LookupComponent\n name={descriptor.field}\n label={descriptor.label}\n />\n )\n }\n // Fallback: lookup não registrado no registry → input de texto simples\n console.warn(\n `[DynamicFilterField] lookup resource \"${descriptor.lookup.resource}\" não encontrado no registry. ` +\n `Renderizando como input de texto para o campo \"${descriptor.field}\".`\n )\n // Continua para renderizar o input de texto (fallback seguro)\n }\n\n // ENUM: select com opções fixas vindas dos metadados\n if (descriptor.allowedValues && descriptor.allowedValues.length > 0) {\n const options = descriptor.allowedValues.map((opt) => ({\n value: opt.value,\n label: opt.label,\n }))\n\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <Select\n isClearable\n size=\"sm\"\n placeholder=\"Selecione uma opção\"\n options={options}\n value={options.find((o) => o.value === field.value) ?? null}\n onChange={(opt: { value: string; label: string } | null) =>\n field.onChange(opt?.value ?? null)\n }\n onBlur={field.onBlur}\n />\n </FormItem>\n )}\n />\n )\n }\n\n // DATE com operator EQUALS: DatePicker simples\n if (descriptor.dataType === 'DATE') {\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <DatePicker\n size=\"sm\"\n className=\"text-xs\"\n placeholder=\"Selecione uma data\"\n value={field.value ? new Date(`${field.value}T00:00:00`) : null}\n onChange={(date: Date | null) =>\n field.onChange(date ? formatDate(date) : null)\n }\n onBlur={field.onBlur}\n />\n </FormItem>\n )}\n />\n )\n }\n\n // NUMBER ou STRING (inclui fallback de lookup não registrado)\n const inputType = descriptor.dataType === 'NUMBER' ? 'number' : 'text'\n\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <Input\n {...field}\n size=\"sm\"\n type={inputType}\n placeholder={`${descriptor.label}`}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value || null)}\n />\n </FormItem>\n )}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Utilitário\n// ---------------------------------------------------------------------------\n\n/** Formata uma Date para 'YYYY-MM-DD' sem dependências externas */\nfunction formatDate(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nexport default DynamicFilterField\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DynamicFilterField.js","sources":["../../../../lib/base/components/filters/DynamicFilterField.tsx"],"sourcesContent":["import React from 'react'\nimport { Controller, useFormContext } from 'react-hook-form'\nimport { DatePicker, FormItem, Input, Select } from '@/components/ui'\nimport DatePickerRange from '@/components/ui/DatePicker/DatePickerRange'\nimport type {\n TFilterRenderItem,\n IFilterStandaloneField,\n IFilterRangeGroup,\n TLookupComponentRegistry,\n} from '@base/@types/filters'\n\ninterface DynamicFilterFieldProps {\n item: TFilterRenderItem\n lookupRegistry?: TLookupComponentRegistry\n}\n\n/**\n * Renderiza o componente de formulário correto para um TFilterRenderItem.\n *\n * Regras de renderização:\n * - `kind === 'range'` → DatePickerRange (dois campos DATE+BETWEEN fundidos)\n * - `kind === 'standalone'`:\n * - `lookup != null` → componente do lookupRegistry (async select)\n * - `allowedValues != null` → Select com opções fixas (ENUM)\n * - `dataType === 'DATE'` → DatePicker\n * - `dataType === 'NUMBER'` → Input type=\"number\"\n * - `dataType === 'STRING'` → Input type=\"text\"\n *\n * Deve ser usado DENTRO de um FormProvider.\n */\nconst DynamicFilterField: React.FC<DynamicFilterFieldProps> = ({ item, lookupRegistry }) => {\n if (item.kind === 'range') {\n return <RangeField item={item} />\n }\n return <StandaloneField item={item} lookupRegistry={lookupRegistry} />\n}\n\n// ---------------------------------------------------------------------------\n// Range field: DatePickerRange gerenciando dois campos reais no form\n// ---------------------------------------------------------------------------\n\ninterface RangeFieldProps {\n item: IFilterRangeGroup\n}\n\nconst RangeField: React.FC<RangeFieldProps> = ({ item }) => {\n const { setValue, watch } = useFormContext()\n\n const startValue = watch(item.startField.field)\n const endValue = watch(item.endField.field)\n\n // Reconstrói o tuple [Date|null, Date|null] a partir das strings armazenadas.\n // Usa 'T00:00:00' para forçar parse em horário local (sem isso, 'YYYY-MM-DD'\n // é interpretado como UTC midnight e exibe um dia anterior no fuso UTC-3).\n const rangeValue: [Date | null, Date | null] = [\n startValue ? new Date(`${startValue}T00:00:00`) : null,\n endValue ? new Date(`${endValue}T00:00:00`) : null,\n ]\n\n const handleChange = (value: [Date | null, Date | null]) => {\n const [start, end] = value ?? [null, null]\n setValue(item.startField.field, start ? formatDate(start) : null, { shouldDirty: true })\n setValue(item.endField.field, end ? formatDate(end) : null, { shouldDirty: true })\n }\n\n return (\n <FormItem className=\"text-xs\" label={item.label}>\n <DatePickerRange\n size=\"sm\"\n value={rangeValue}\n onChange={handleChange}\n />\n </FormItem>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Standalone field: delega para lookup registry ou input genérico\n// ---------------------------------------------------------------------------\n\ninterface StandaloneFieldProps {\n item: IFilterStandaloneField\n lookupRegistry?: TLookupComponentRegistry\n}\n\nconst StandaloneField: React.FC<StandaloneFieldProps> = ({ item, lookupRegistry }) => {\n const { descriptor } = item\n const { control } = useFormContext()\n\n // Lookup: delega para o componente registrado no microfrontend\n if (descriptor.lookup) {\n const LookupComponent = lookupRegistry?.[descriptor.lookup.resource]\n if (LookupComponent) {\n return (\n <LookupComponent\n name={descriptor.field}\n label={descriptor.label}\n multiSelect={descriptor.multiSelect}\n />\n )\n }\n // Fallback: lookup não registrado no registry → input de texto simples\n console.warn(\n `[DynamicFilterField] lookup resource \"${descriptor.lookup.resource}\" não encontrado no registry. ` +\n `Renderizando como input de texto para o campo \"${descriptor.field}\".`\n )\n // Continua para renderizar o input de texto (fallback seguro)\n }\n\n // ENUM: select com opções fixas vindas dos metadados\n if (descriptor.allowedValues && descriptor.allowedValues.length > 0) {\n const options = descriptor.allowedValues.map((opt) => ({\n value: opt.value,\n label: opt.label,\n }))\n\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => {\n if (descriptor.multiSelect) {\n // Multi-select: value é string[], onChange recebe opções como array\n const selectedOptions = options.filter(\n (o) => (field.value as string[] | undefined)?.includes(o.value)\n )\n return (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <Select\n isClearable\n isMulti\n size=\"sm\"\n placeholder=\"Selecione uma ou mais opções\"\n options={options}\n value={selectedOptions.length > 0 ? selectedOptions : null}\n onChange={(opts: readonly { value: string; label: string }[] | null) =>\n field.onChange(opts ? [...opts].map((o) => o.value) : null)\n }\n onBlur={field.onBlur}\n />\n </FormItem>\n )\n }\n\n return (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <Select\n isClearable\n size=\"sm\"\n placeholder=\"Selecione uma opção\"\n options={options}\n value={options.find((o) => o.value === field.value) ?? null}\n onChange={(opt: { value: string; label: string } | null) =>\n field.onChange(opt?.value ?? null)\n }\n onBlur={field.onBlur}\n />\n </FormItem>\n )\n }}\n />\n )\n }\n\n // DATE com operator EQUALS: DatePicker simples\n if (descriptor.dataType === 'DATE') {\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <DatePicker\n size=\"sm\"\n className=\"text-xs\"\n placeholder=\"Selecione uma data\"\n value={field.value ? new Date(`${field.value}T00:00:00`) : null}\n onChange={(date: Date | null) =>\n field.onChange(date ? formatDate(date) : null)\n }\n onBlur={field.onBlur}\n />\n </FormItem>\n )}\n />\n )\n }\n\n // NUMBER ou STRING (inclui fallback de lookup não registrado)\n const inputType = descriptor.dataType === 'NUMBER' ? 'number' : 'text'\n\n return (\n <Controller\n name={descriptor.field}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem\n className=\"text-xs\"\n label={descriptor.label}\n invalid={!!error}\n errorMessage={error?.message}\n >\n <Input\n {...field}\n size=\"sm\"\n type={inputType}\n placeholder={`${descriptor.label}`}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value || null)}\n />\n </FormItem>\n )}\n />\n )\n}\n\n// ---------------------------------------------------------------------------\n// Utilitário\n// ---------------------------------------------------------------------------\n\n/** Formata uma Date para 'YYYY-MM-DD' sem dependências externas */\nfunction formatDate(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nexport default DynamicFilterField\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import "../../../@ecme/components/ui/Button/index.js";
|
|
4
|
+
import "../../../@ecme/components/ui/Drawer/index.js";
|
|
5
|
+
import "../../../@ecme/components/ui/Form/index.js";
|
|
6
|
+
import "../../../@ecme/components/ui/index.js";
|
|
7
|
+
import { useForm, FormProvider } from "react-hook-form";
|
|
8
|
+
import { useTranslation } from "react-i18next";
|
|
9
|
+
import { TbFilter } from "react-icons/tb";
|
|
10
|
+
import useFilterMetadata from "../../hooks/filters/useFilterMetadata.js";
|
|
11
|
+
import DynamicFilterPanel from "./DynamicFilterPanel.js";
|
|
12
|
+
import Badge from "../../../@ecme/components/ui/Badge/Badge.js";
|
|
13
|
+
import Button from "../../../@ecme/components/ui/Button/Button.js";
|
|
14
|
+
import Drawer from "../../../@ecme/components/ui/Drawer/Drawer.js";
|
|
15
|
+
import { Form } from "../../../@ecme/components/ui/Form/Form.js";
|
|
16
|
+
const DynamicListTableFilter = ({
|
|
17
|
+
swrKey,
|
|
18
|
+
metadataFetcher,
|
|
19
|
+
filterParams,
|
|
20
|
+
setFilterParams,
|
|
21
|
+
activeFiltersCount,
|
|
22
|
+
lookupRegistry,
|
|
23
|
+
extractValueRegistry
|
|
24
|
+
}) => {
|
|
25
|
+
const [filterIsOpen, setFilterIsOpen] = useState(false);
|
|
26
|
+
const { fields, isLoading: metadataLoading, error: metadataError } = useFilterMetadata(
|
|
27
|
+
swrKey,
|
|
28
|
+
metadataFetcher
|
|
29
|
+
);
|
|
30
|
+
const methods = useForm({
|
|
31
|
+
defaultValues: filterParams
|
|
32
|
+
});
|
|
33
|
+
const onSubmit = (data) => {
|
|
34
|
+
const lookupResourceByField = /* @__PURE__ */ new Map();
|
|
35
|
+
for (const f of fields) {
|
|
36
|
+
if (f.lookup) {
|
|
37
|
+
lookupResourceByField.set(f.field, f.lookup.resource);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const cleanParams = {};
|
|
41
|
+
for (const [key, value] of Object.entries(data)) {
|
|
42
|
+
if (value === null || value === void 0 || value === "") continue;
|
|
43
|
+
const resource = lookupResourceByField.get(key);
|
|
44
|
+
const extractFn = resource && extractValueRegistry?.[resource];
|
|
45
|
+
if (extractFn) {
|
|
46
|
+
if (Array.isArray(value)) {
|
|
47
|
+
const primitives = value.map((v) => extractFn(v)).filter((p) => p !== null && p !== void 0);
|
|
48
|
+
if (primitives.length > 0) {
|
|
49
|
+
cleanParams[key] = primitives;
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
const primitive = extractFn(value);
|
|
53
|
+
if (primitive !== null && primitive !== void 0) {
|
|
54
|
+
cleanParams[key] = primitive;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
cleanParams[key] = value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
setFilterParams(cleanParams);
|
|
62
|
+
setFilterIsOpen(false);
|
|
63
|
+
};
|
|
64
|
+
const onClearFilters = () => {
|
|
65
|
+
const clearedValues = {};
|
|
66
|
+
for (const f of fields) {
|
|
67
|
+
clearedValues[f.field] = null;
|
|
68
|
+
}
|
|
69
|
+
methods.reset(clearedValues);
|
|
70
|
+
setFilterParams({});
|
|
71
|
+
setFilterIsOpen(false);
|
|
72
|
+
};
|
|
73
|
+
const { t } = useTranslation();
|
|
74
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
75
|
+
/* @__PURE__ */ jsx(Badge, { className: "ml-auto mr-4", content: activeFiltersCount, children: /* @__PURE__ */ jsx(Button, { icon: /* @__PURE__ */ jsx(TbFilter, {}), className: "text-xs", onClick: () => setFilterIsOpen(true), children: t("common.actions.filter") }) }),
|
|
76
|
+
/* @__PURE__ */ jsx(
|
|
77
|
+
Drawer,
|
|
78
|
+
{
|
|
79
|
+
title: /* @__PURE__ */ jsx("span", { className: "font-bold", children: "Filtros" }),
|
|
80
|
+
isOpen: filterIsOpen,
|
|
81
|
+
className: "text-xs",
|
|
82
|
+
onClose: () => setFilterIsOpen(false),
|
|
83
|
+
onRequestClose: () => setFilterIsOpen(false),
|
|
84
|
+
children: /* @__PURE__ */ jsx(FormProvider, { ...methods, children: /* @__PURE__ */ jsxs(
|
|
85
|
+
Form,
|
|
86
|
+
{
|
|
87
|
+
className: "h-full",
|
|
88
|
+
containerClassName: "flex h-full flex-col",
|
|
89
|
+
onSubmit: methods.handleSubmit(onSubmit),
|
|
90
|
+
children: [
|
|
91
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto overflow-hidden pr-3", children: [
|
|
92
|
+
metadataLoading && /* @__PURE__ */ jsx("div", { className: "flex justify-center py-6 text-sm text-gray-500", children: "Carregando filtros..." }),
|
|
93
|
+
metadataError && !metadataLoading && /* @__PURE__ */ jsx("div", { className: "flex justify-center py-6 text-sm text-red-500", children: "Falha ao carregar filtros. Tente novamente." }),
|
|
94
|
+
!metadataLoading && !metadataError && /* @__PURE__ */ jsx(
|
|
95
|
+
DynamicFilterPanel,
|
|
96
|
+
{
|
|
97
|
+
fields,
|
|
98
|
+
lookupRegistry
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
] }),
|
|
102
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-end flex-col gap-2 mt-auto border-t dark:border-t-zinc-600", children: [
|
|
103
|
+
/* @__PURE__ */ jsx(Button, { variant: "plain", type: "button", onClick: onClearFilters, children: "Limpar filtros" }),
|
|
104
|
+
/* @__PURE__ */ jsx(Button, { variant: "solid", type: "submit", children: "Filtrar" })
|
|
105
|
+
] })
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
) })
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
] });
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
DynamicListTableFilter as default
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=DynamicListTableFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicListTableFilter.js","sources":["../../../../lib/base/components/filters/DynamicListTableFilter.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Button from '@/components/ui/Button/index'\nimport Drawer from '@/components/ui/Drawer/index'\nimport { Form } from '@/components/ui/Form/index'\nimport { Badge } from '@/components/ui/index'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { TbFilter } from 'react-icons/tb'\nimport useFilterMetadata from '@base/hooks/filters/useFilterMetadata'\nimport DynamicFilterPanel from './DynamicFilterPanel'\nimport type {\n IFilterFieldDescriptor,\n TLookupComponentRegistry,\n} from '@base/@types/filters'\n\n/**\n * Props para o DynamicListTableFilter — componente genérico de filtros\n * que renderiza um botão com badge + drawer com formulário dinâmico.\n *\n * Cada list-table que quiser filtros dinâmicos cria um wrapper de ~10 linhas\n * que extrai os valores do seu hook específico e passa como props.\n */\nexport interface DynamicListTableFilterProps {\n /** Chave SWR única para cache do filter-metadata (ex: '/originacao/api/saldo-ticket/filter-metadata') */\n swrKey: string\n /** Função que busca os metadados de filtro no backend */\n metadataFetcher: () => Promise<IFilterFieldDescriptor[]>\n /** Estado atual dos filtros (vem da store do módulo) */\n filterParams: Record<string, unknown>\n /** Atualiza o estado dos filtros (recebendo params limpos) */\n setFilterParams: (payload: Record<string, unknown>) => void\n /** Número de filtros ativos (para o badge) */\n activeFiltersCount: number\n /**\n * Mapa de resource → componente de lookup.\n * Mesmo tipo usado pelo DynamicFilterPanel.\n * @example { 'business-partner': BusinessPartnerLookup, 'safra': SafraLookup }\n */\n lookupRegistry?: TLookupComponentRegistry\n /**\n * Mapa de resource → função de extração de valor primitivo.\n * Usado no onSubmit para transformar objetos completos armazenados no RHF\n * nos valores planos que a API espera.\n * @example { 'business-partner': (obj) => obj?.id, 'safra': (obj) => obj?.id }\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extractValueRegistry?: Record<string, (obj: any) => unknown>\n}\n\nconst DynamicListTableFilter: React.FC<DynamicListTableFilterProps> = ({\n swrKey,\n metadataFetcher,\n filterParams,\n setFilterParams,\n activeFiltersCount,\n lookupRegistry,\n extractValueRegistry,\n}) => {\n const [filterIsOpen, setFilterIsOpen] = useState(false)\n\n const { fields, isLoading: metadataLoading, error: metadataError } = useFilterMetadata(\n swrKey,\n metadataFetcher,\n )\n\n // Sem zod schema: o backend define quais campos existem e todos são opcionais.\n // O defaultValues reconstitui o estado atual dos filtros ao reabrir o drawer.\n const methods = useForm<Record<string, unknown>>({\n defaultValues: filterParams,\n })\n\n const onSubmit = (data: Record<string, unknown>) => {\n // Constrói um mapa rápido de field → lookup.resource para os campos com lookup\n const lookupResourceByField = new Map<string, string>()\n for (const f of fields) {\n if (f.lookup) {\n lookupResourceByField.set(f.field, f.lookup.resource)\n }\n }\n\n const cleanParams: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(data)) {\n if (value === null || value === undefined || value === '') continue\n\n const resource = lookupResourceByField.get(key)\n // Campo de lookup com extractFn registrado → extrai o primitivo (id, codigo)\n // Se o extractFn não existir (lookup não registrado no registry), trata como texto comum\n const extractFn = resource && extractValueRegistry?.[resource]\n if (extractFn) {\n // Multi-select lookup: value é um array de objetos → extrai primitivo de cada um\n if (Array.isArray(value)) {\n const primitives = value.map((v) => extractFn(v)).filter((p) => p !== null && p !== undefined)\n if (primitives.length > 0) {\n cleanParams[key] = primitives\n }\n } else {\n const primitive = extractFn(value)\n if (primitive !== null && primitive !== undefined) {\n cleanParams[key] = primitive\n }\n }\n } else {\n cleanParams[key] = value\n }\n }\n setFilterParams(cleanParams)\n setFilterIsOpen(false)\n }\n\n const onClearFilters = () => {\n // Zera explicitamente cada campo registrado pelos metadados.\n // Usar reset({}) sozinho não é suficiente: o react-hook-form mantém o registro\n // dos campos dinâmicos e pode devolver valores antigos em submits subsequentes.\n // Também inclui os campos de range (startField/endField) que ficam registrados\n // separadamente no form pelo DynamicFilterField/RangeField.\n const clearedValues: Record<string, null> = {}\n for (const f of fields) {\n clearedValues[f.field] = null\n }\n methods.reset(clearedValues)\n setFilterParams({})\n setFilterIsOpen(false)\n }\n\n const { t } = useTranslation()\n\n return (\n <>\n <Badge className=\"ml-auto mr-4\" content={activeFiltersCount}>\n <Button icon={<TbFilter />} className='text-xs' onClick={() => setFilterIsOpen(true)}>\n {t('common.actions.filter')}\n </Button>\n </Badge>\n <Drawer\n title={<span className=\"font-bold\">Filtros</span>}\n isOpen={filterIsOpen}\n className=\"text-xs\"\n onClose={() => setFilterIsOpen(false)}\n onRequestClose={() => setFilterIsOpen(false)}\n >\n <FormProvider {...methods}>\n <Form\n className=\"h-full\"\n containerClassName=\"flex h-full flex-col\"\n onSubmit={methods.handleSubmit(onSubmit)}\n >\n <div className=\"flex-1 overflow-y-auto overflow-hidden pr-3\">\n {metadataLoading && (\n <div className=\"flex justify-center py-6 text-sm text-gray-500\">\n Carregando filtros...\n </div>\n )}\n {metadataError && !metadataLoading && (\n <div className=\"flex justify-center py-6 text-sm text-red-500\">\n Falha ao carregar filtros. Tente novamente.\n </div>\n )}\n {!metadataLoading && !metadataError && (\n <DynamicFilterPanel\n fields={fields}\n lookupRegistry={lookupRegistry}\n />\n )}\n </div>\n <div className=\"flex justify-end flex-col gap-2 mt-auto border-t dark:border-t-zinc-600\">\n <Button variant=\"plain\" type=\"button\" onClick={onClearFilters}>\n Limpar filtros\n </Button>\n <Button variant=\"solid\" type=\"submit\">\n Filtrar\n </Button>\n </div>\n </Form>\n </FormProvider>\n </Drawer>\n </>\n )\n}\n\nexport default DynamicListTableFilter"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { default as default2 } from "./DynamicFilterField.js";
|
|
2
2
|
import { default as default3 } from "./DynamicFilterPanel.js";
|
|
3
|
+
import { default as default4 } from "./DynamicListTableFilter.js";
|
|
3
4
|
export {
|
|
4
5
|
default2 as DynamicFilterField,
|
|
5
|
-
default3 as DynamicFilterPanel
|
|
6
|
+
default3 as DynamicFilterPanel,
|
|
7
|
+
default4 as DynamicListTableFilter
|
|
6
8
|
};
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -5,16 +5,18 @@ import "./views/index.js";
|
|
|
5
5
|
import "./filters/index.js";
|
|
6
6
|
import { default as default2 } from "./filters/DynamicFilterField.js";
|
|
7
7
|
import { default as default3 } from "./filters/DynamicFilterPanel.js";
|
|
8
|
+
import { default as default4 } from "./filters/DynamicListTableFilter.js";
|
|
8
9
|
import { ListColumn } from "./table/ListColumn.js";
|
|
9
|
-
import { default as
|
|
10
|
-
import { default as
|
|
11
|
-
import { default as
|
|
10
|
+
import { default as default5 } from "./tools/NavFilter.js";
|
|
11
|
+
import { default as default6 } from "./routes/RoutesBase.js";
|
|
12
|
+
import { default as default7 } from "./views/ViewsBase.js";
|
|
12
13
|
export {
|
|
13
14
|
default2 as DynamicFilterField,
|
|
14
15
|
default3 as DynamicFilterPanel,
|
|
16
|
+
default4 as DynamicListTableFilter,
|
|
15
17
|
ListColumn,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
default5 as NavFilter,
|
|
19
|
+
default6 as RoutesBase,
|
|
20
|
+
default7 as ViewsBase
|
|
19
21
|
};
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const cockpitFiscal = {
|
|
2
|
-
findAll: (params) => `/originacao/api/cockpit-fiscal?${params ?? ""}
|
|
2
|
+
findAll: (params) => `/originacao/api/cockpit-fiscal?${params ?? ""}`,
|
|
3
|
+
filterMetadata: "/originacao/api/cockpit-fiscal/filter-metadata"
|
|
3
4
|
};
|
|
4
5
|
export {
|
|
5
6
|
cockpitFiscal as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cockpitFiscal.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/cockpitFiscal.ts"],"sourcesContent":["const cockpitFiscal = {\n findAll: (params?: string) => `/originacao/api/cockpit-fiscal?${params ?? \"\"}`,\n};\n\nexport default cockpitFiscal;"],"names":[],"mappings":"AAAA,MAAM,gBAAgB;AAAA,EACpB,SAAS,CAAC,WAAoB,kCAAkC,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"cockpitFiscal.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/cockpitFiscal.ts"],"sourcesContent":["const cockpitFiscal = {\n findAll: (params?: string) => `/originacao/api/cockpit-fiscal?${params ?? \"\"}`,\n filterMetadata: '/originacao/api/cockpit-fiscal/filter-metadata',\n};\n\nexport default cockpitFiscal;"],"names":[],"mappings":"AAAA,MAAM,gBAAgB;AAAA,EACpB,SAAS,CAAC,WAAoB,kCAAkC,UAAU,EAAE;AAAA,EAC5E,gBAAgB;AAClB;"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const processoFiscal = {
|
|
2
|
+
create: "/originacao/api/processo-fiscal",
|
|
3
|
+
update: (id) => `/originacao/api/processo-fiscal/${id}`,
|
|
2
4
|
uploadNotaFiscal: (id) => `/originacao/api/processo-fiscal/${id}/upload-nota-fiscal`,
|
|
3
|
-
downloadNotaFiscal: (url) => `/originacao/api/processo-fiscal/nota-fiscal/${url}
|
|
5
|
+
downloadNotaFiscal: (url) => `/originacao/api/processo-fiscal/nota-fiscal/${url}`,
|
|
6
|
+
listByContrato: (contratoId) => `/originacao/api/processo-fiscal?contratoId=${contratoId}`
|
|
4
7
|
};
|
|
5
8
|
export {
|
|
6
9
|
processoFiscal as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processoFiscal.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/processoFiscal.ts"],"sourcesContent":["const processoFiscal = {\n uploadNotaFiscal: (id: string) => `/originacao/api/processo-fiscal/${id}/upload-nota-fiscal`,\n downloadNotaFiscal: (url: string) => `/originacao/api/processo-fiscal/nota-fiscal/${url}`,\n};\n\nexport default processoFiscal;"],"names":[],"mappings":"AAAA,MAAM,iBAAiB;AAAA,EACrB,kBAAkB,CAAC,OAAe,mCAAmC,EAAE;AAAA,EACvE,oBAAoB,CAAC,QAAgB,+CAA+C,GAAG;
|
|
1
|
+
{"version":3,"file":"processoFiscal.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/processoFiscal.ts"],"sourcesContent":["const processoFiscal = {\n create: '/originacao/api/processo-fiscal',\n update: (id: string) => `/originacao/api/processo-fiscal/${id}`,\n uploadNotaFiscal: (id: string) => `/originacao/api/processo-fiscal/${id}/upload-nota-fiscal`,\n downloadNotaFiscal: (url: string) => `/originacao/api/processo-fiscal/nota-fiscal/${url}`,\n listByContrato: (contratoId: string | number) => `/originacao/api/processo-fiscal?contratoId=${contratoId}`,\n};\n\nexport default processoFiscal;"],"names":[],"mappings":"AAAA,MAAM,iBAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,QAAQ,CAAC,OAAe,mCAAmC,EAAE;AAAA,EAC7D,kBAAkB,CAAC,OAAe,mCAAmC,EAAE;AAAA,EACvE,oBAAoB,CAAC,QAAgB,+CAA+C,GAAG;AAAA,EACvF,gBAAgB,CAAC,eAAgC,8CAA8C,UAAU;AAC3G;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const saldoTicket = {
|
|
2
|
-
buscarSaldoContrato: (id) => `/originacao/api/saldo-ticket/contrato/${id}`,
|
|
2
|
+
buscarSaldoContrato: (id, processoFiscalId) => `/originacao/api/saldo-ticket/contrato/${id}?processoFiscalId=${processoFiscalId}`,
|
|
3
3
|
findAll: (params) => `/originacao/api/saldo-ticket?${params ?? ""}`,
|
|
4
4
|
historicoById: (id, params) => `/originacao/api/saldo-ticket/${id}/historicos?${params ?? ""}`,
|
|
5
5
|
buscarSaldoDisponivel: "/originacao/api/saldo-ticket/saldo-disponivel",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saldoTicket.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts"],"sourcesContent":["const saldoTicket = {\n buscarSaldoContrato: (id: string) => `/originacao/api/saldo-ticket/contrato/${id}`,\n findAll: (params?: string) => `/originacao/api/saldo-ticket?${params ?? \"\"}`,\n historicoById: (id: string, params?: string) => `/originacao/api/saldo-ticket/${id}/historicos?${params ?? \"\"}`,\n buscarSaldoDisponivel: '/originacao/api/saldo-ticket/saldo-disponivel',\n findAllMetrics: (params?: string) => `/originacao/api/saldo-ticket/metrics?${params ?? \"\"}`,\n updateStatus: (id: string) => `/originacao/api/saldo-ticket/${id}/forcar-status-saldo`,\n filterMetadata: '/originacao/api/saldo-ticket/filter-metadata',\n};\n\nexport default saldoTicket;"],"names":[],"mappings":"AAAA,MAAM,cAAc;AAAA,EAClB,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"saldoTicket.js","sources":["../../../../../../lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts"],"sourcesContent":["const saldoTicket = {\n buscarSaldoContrato: (id: string, processoFiscalId: string | number) => `/originacao/api/saldo-ticket/contrato/${id}?processoFiscalId=${processoFiscalId}`,\n findAll: (params?: string) => `/originacao/api/saldo-ticket?${params ?? \"\"}`,\n historicoById: (id: string, params?: string) => `/originacao/api/saldo-ticket/${id}/historicos?${params ?? \"\"}`,\n buscarSaldoDisponivel: '/originacao/api/saldo-ticket/saldo-disponivel',\n findAllMetrics: (params?: string) => `/originacao/api/saldo-ticket/metrics?${params ?? \"\"}`,\n updateStatus: (id: string) => `/originacao/api/saldo-ticket/${id}/forcar-status-saldo`,\n filterMetadata: '/originacao/api/saldo-ticket/filter-metadata',\n};\n\nexport default saldoTicket;"],"names":[],"mappings":"AAAA,MAAM,cAAc;AAAA,EAClB,qBAAqB,CAAC,IAAY,qBAAsC,yCAAyC,EAAE,qBAAqB,gBAAgB;AAAA,EACxJ,SAAS,CAAC,WAAoB,gCAAgC,UAAU,EAAE;AAAA,EAC1E,eAAe,CAAC,IAAY,WAAoB,gCAAgC,EAAE,eAAe,UAAU,EAAE;AAAA,EAC7G,uBAAuB;AAAA,EACvB,gBAAgB,CAAC,WAAoB,wCAAwC,UAAU,EAAE;AAAA,EACzF,cAAc,CAAC,OAAe,gCAAgC,EAAE;AAAA,EAChE,gBAAgB;AAClB;"}
|
|
@@ -6,7 +6,9 @@ const ppr = {
|
|
|
6
6
|
indicadoresMetaGlobal: "/performance/api/ppr/indicadores/meta-global",
|
|
7
7
|
indicadoresMetaGlobalFindMonitor: "/performance/api/ppr/indicadores/meta-global/find-monitor",
|
|
8
8
|
indicadoresMetaSetorialGeral: "/performance/api/ppr/indicadores/meta-setorial-geral",
|
|
9
|
-
indicadoresMetaSetorialGeralFindMonitor: "/performance/api/ppr/indicadores/meta-setorial-geral/find-monitor"
|
|
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
|
export {
|
|
12
14
|
ppr as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ppr.js","sources":["../../../../../../lib/base/configs/endpoints.config/performance/config/ppr.ts"],"sourcesContent":["const ppr = {\n centrosCustos: '/performance/api/ppr/centros-custos',\n aberturaAno: '/performance/api/ppr/centros-custos/abertura-ano',\n anos: '/performance/api/ppr/centros-custos/anos',\n updateStatus: '/performance/api/ppr/centros-custos',\n indicadoresMetaGlobal: '/performance/api/ppr/indicadores/meta-global',\n indicadoresMetaGlobalFindMonitor: '/performance/api/ppr/indicadores/meta-global/find-monitor',\n indicadoresMetaSetorialGeral: '/performance/api/ppr/indicadores/meta-setorial-geral',\n indicadoresMetaSetorialGeralFindMonitor: '/performance/api/ppr/indicadores/meta-setorial-geral/find-monitor',\n};\n\nexport default ppr;\n"],"names":[],"mappings":"AAAA,MAAM,MAAM;AAAA,EACV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,MAAM;AAAA,EACN,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,kCAAkC;AAAA,EAClC,8BAA8B;AAAA,EAC9B,yCAAyC;AAC3C;"}
|
|
1
|
+
{"version":3,"file":"ppr.js","sources":["../../../../../../lib/base/configs/endpoints.config/performance/config/ppr.ts"],"sourcesContent":["const ppr = {\n centrosCustos: '/performance/api/ppr/centros-custos',\n aberturaAno: '/performance/api/ppr/centros-custos/abertura-ano',\n anos: '/performance/api/ppr/centros-custos/anos',\n updateStatus: '/performance/api/ppr/centros-custos',\n indicadoresMetaGlobal: '/performance/api/ppr/indicadores/meta-global',\n indicadoresMetaGlobalFindMonitor: '/performance/api/ppr/indicadores/meta-global/find-monitor',\n indicadoresMetaSetorialGeral: '/performance/api/ppr/indicadores/meta-setorial-geral',\n indicadoresMetaSetorialGeralFindMonitor: '/performance/api/ppr/indicadores/meta-setorial-geral/find-monitor',\n indicadoresMetaSetorialPorCc: '/performance/api/ppr/indicadores/meta-setorial-por-cc',\n indicadoresMetaSetorialPorCcFindMonitor: '/performance/api/ppr/indicadores/meta-setorial-por-cc/find-monitor',\n};\n\nexport default ppr;\n"],"names":[],"mappings":"AAAA,MAAM,MAAM;AAAA,EACV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,MAAM;AAAA,EACN,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,kCAAkC;AAAA,EAClC,8BAA8B;AAAA,EAC9B,yCAAyC;AAAA,EACzC,8BAA8B;AAAA,EAC9B,yCAAyC;AAC3C;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NAV_ITEM_TYPE_ITEM } from "../../../../../../@ecme/constants/navigation.constant.js";
|
|
2
|
+
import { ADMIN } from "../../../../../../@ecme/constants/roles.constant.js";
|
|
3
|
+
const metaSetorialPorCcPprSubmenu = {
|
|
4
|
+
key: "modules.performance.ppr.metaSetorialPorCc",
|
|
5
|
+
path: "/performance/ppr/meta-setorial-por-cc",
|
|
6
|
+
title: "Meta Setorial por CC",
|
|
7
|
+
translateKey: "nav.modules.performance.ppr.metaSetorialPorCc.title",
|
|
8
|
+
icon: "",
|
|
9
|
+
type: NAV_ITEM_TYPE_ITEM,
|
|
10
|
+
forceShowTitle: true,
|
|
11
|
+
authority: [ADMIN],
|
|
12
|
+
subMenu: []
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
metaSetorialPorCcPprSubmenu as default
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=metaSetorialPorCcPpr.submenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaSetorialPorCcPpr.submenu.js","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/performance/config/metaSetorialPorCcPpr.submenu.ts"],"sourcesContent":["import { NavigationTree } from '@/@types/navigation'\nimport { NAV_ITEM_TYPE_ITEM } from '@/constants/navigation.constant'\nimport { ADMIN } from '@/constants/roles.constant'\n\nconst metaSetorialPorCcPprSubmenu: NavigationTree = {\n key: 'modules.performance.ppr.metaSetorialPorCc',\n path: '/performance/ppr/meta-setorial-por-cc',\n title: 'Meta Setorial por CC',\n translateKey: 'nav.modules.performance.ppr.metaSetorialPorCc.title',\n icon: '',\n type: NAV_ITEM_TYPE_ITEM,\n forceShowTitle: true,\n authority: [ADMIN],\n subMenu: [],\n}\n\nexport default metaSetorialPorCcPprSubmenu\n"],"names":[],"mappings":";;AAIA,MAAM,8BAA8C;AAAA,EAChD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,cAAc;AAAA,EACd,MAAM;AAAA,EACN,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,WAAW,CAAC,KAAK;AAAA,EACjB,SAAS,CAAA;AACb;"}
|
|
@@ -3,6 +3,7 @@ import { ADMIN } from "../../../../../../@ecme/constants/roles.constant.js";
|
|
|
3
3
|
import aberturaAnoPprSubmenu from "./aberturaAnoPpr.submenu.js";
|
|
4
4
|
import metaGlobalPprSubmenu from "./metaGlobalPpr.submenu.js";
|
|
5
5
|
import metaSetorialGeralPprSubmenu from "./metaSetorialGeralPpr.submenu.js";
|
|
6
|
+
import metaSetorialPorCcPprSubmenu from "./metaSetorialPorCcPpr.submenu.js";
|
|
6
7
|
const pprSubmenu = {
|
|
7
8
|
key: "modules.performance.ppr",
|
|
8
9
|
path: "",
|
|
@@ -14,7 +15,8 @@ const pprSubmenu = {
|
|
|
14
15
|
subMenu: [
|
|
15
16
|
aberturaAnoPprSubmenu,
|
|
16
17
|
metaGlobalPprSubmenu,
|
|
17
|
-
metaSetorialGeralPprSubmenu
|
|
18
|
+
metaSetorialGeralPprSubmenu,
|
|
19
|
+
metaSetorialPorCcPprSubmenu
|
|
18
20
|
]
|
|
19
21
|
};
|
|
20
22
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ppr.submenu.js","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/performance/config/ppr.submenu.ts"],"sourcesContent":["import { NavigationTree } from '@/@types/navigation'\nimport { NAV_ITEM_TYPE_COLLAPSE } from '@/constants/navigation.constant'\nimport { ADMIN } from '@/constants/roles.constant'\nimport aberturaAnoPprSubmenu from './aberturaAnoPpr.submenu'\nimport metaGlobalPprSubmenu from './metaGlobalPpr.submenu'\nimport metaSetorialGeralPprSubmenu from './metaSetorialGeralPpr.submenu'\n\nconst pprSubmenu: NavigationTree = {\n key: 'modules.performance.ppr',\n path: '',\n title: 'PPR',\n translateKey: 'nav.modules.performance.ppr.title',\n icon: 'chart',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: [ADMIN],\n subMenu: [\n aberturaAnoPprSubmenu,\n metaGlobalPprSubmenu,\n metaSetorialGeralPprSubmenu,\n ],\n}\n\nexport default pprSubmenu\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ppr.submenu.js","sources":["../../../../../../../lib/base/configs/navigation.config/submenu/performance/config/ppr.submenu.ts"],"sourcesContent":["import { NavigationTree } from '@/@types/navigation'\nimport { NAV_ITEM_TYPE_COLLAPSE } from '@/constants/navigation.constant'\nimport { ADMIN } from '@/constants/roles.constant'\nimport aberturaAnoPprSubmenu from './aberturaAnoPpr.submenu'\nimport metaGlobalPprSubmenu from './metaGlobalPpr.submenu'\nimport metaSetorialGeralPprSubmenu from './metaSetorialGeralPpr.submenu'\nimport metaSetorialPorCcPprSubmenu from './metaSetorialPorCcPpr.submenu'\n\nconst pprSubmenu: NavigationTree = {\n key: 'modules.performance.ppr',\n path: '',\n title: 'PPR',\n translateKey: 'nav.modules.performance.ppr.title',\n icon: 'chart',\n type: NAV_ITEM_TYPE_COLLAPSE,\n authority: [ADMIN],\n subMenu: [\n aberturaAnoPprSubmenu,\n metaGlobalPprSubmenu,\n metaSetorialGeralPprSubmenu,\n metaSetorialPorCcPprSubmenu,\n ],\n}\n\nexport default pprSubmenu\n"],"names":[],"mappings":";;;;;;AAQA,MAAM,aAA6B;AAAA,EAC/B,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,cAAc;AAAA,EACd,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW,CAAC,KAAK;AAAA,EACjB,SAAS;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;"}
|