@orbe-agro/client-core 5.6.117 → 5.6.119
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/@types/base/@types/filters/index.d.ts +60 -0
- package/dist/@types/base/@types/filters/index.d.ts.map +1 -0
- package/dist/@types/base/@types/index.d.ts +1 -0
- package/dist/@types/base/@types/index.d.ts.map +1 -1
- package/dist/@types/base/@types/models/compras/RequisicaoCompra.d.ts +3 -0
- package/dist/@types/base/@types/models/compras/RequisicaoCompra.d.ts.map +1 -1
- package/dist/@types/base/@types/models/performance/categoria.d.ts +2 -1
- package/dist/@types/base/@types/models/performance/categoria.d.ts.map +1 -1
- package/dist/@types/base/components/filters/DynamicFilterField.d.ts +23 -0
- package/dist/@types/base/components/filters/DynamicFilterField.d.ts.map +1 -0
- package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts +30 -0
- package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts.map +1 -0
- package/dist/@types/base/components/filters/index.d.ts +3 -0
- package/dist/@types/base/components/filters/index.d.ts.map +1 -0
- package/dist/@types/base/components/index.d.ts +1 -0
- package/dist/@types/base/components/index.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +9 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts +1 -0
- 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 +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/performance/cadastros.submenu.d.ts.map +1 -1
- package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts +26 -0
- package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts.map +1 -0
- package/dist/@types/base/hooks/index.d.ts +1 -0
- package/dist/@types/base/hooks/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts +1 -0
- package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.d.ts +7 -0
- package/dist/@types/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts +2 -0
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts.map +1 -1
- package/dist/@types/base/utils/filters/groupFilterFields.d.ts +15 -0
- package/dist/@types/base/utils/filters/groupFilterFields.d.ts.map +1 -0
- package/dist/@types/base/utils/index.d.ts +1 -0
- package/dist/@types/base/utils/index.d.ts.map +1 -1
- package/dist/base/@types/filters/index.js +2 -0
- package/dist/base/@types/filters/index.js.map +1 -0
- package/dist/base/@types/index.js +1 -0
- package/dist/base/@types/index.js.map +1 -1
- package/dist/base/components/filters/DynamicFilterField.js +156 -0
- package/dist/base/components/filters/DynamicFilterField.js.map +1 -0
- package/dist/base/components/filters/DynamicFilterPanel.js +19 -0
- package/dist/base/components/filters/DynamicFilterPanel.js.map +1 -0
- package/dist/base/components/filters/index.js +7 -0
- package/dist/base/components/filters/index.js.map +1 -0
- package/dist/base/components/index.js +11 -6
- package/dist/base/components/index.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js +1 -0
- package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js.map +1 -1
- package/dist/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.js +2 -1
- package/dist/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js +2 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/performance/cadastros.submenu.js +0 -2
- package/dist/base/configs/navigation.config/submenu/performance/cadastros.submenu.js.map +1 -1
- package/dist/base/hooks/filters/useFilterMetadata.js +23 -0
- package/dist/base/hooks/filters/useFilterMetadata.js.map +1 -0
- package/dist/base/hooks/index.js +2 -0
- package/dist/base/hooks/index.js.map +1 -1
- package/dist/base/index.js +232 -223
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/index.js +2 -1
- package/dist/base/services/modules/centralNfe/index.js +2 -1
- package/dist/base/services/modules/centralNfe/nfe/NfeService.js +7 -0
- package/dist/base/services/modules/centralNfe/nfe/NfeService.js.map +1 -1
- package/dist/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js +8 -0
- package/dist/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js.map +1 -1
- package/dist/base/services/modules/compras/index.js +2 -1
- package/dist/base/services/modules/index.js +2 -1
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js +7 -0
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js.map +1 -1
- package/dist/base/utils/filters/groupFilterFields.js +56 -0
- package/dist/base/utils/filters/groupFilterFields.js.map +1 -0
- package/dist/base/utils/index.js +2 -0
- package/dist/base/utils/index.js.map +1 -1
- package/lib/base/@types/filters/index.ts +87 -0
- package/lib/base/@types/index.ts +1 -0
- package/lib/base/@types/models/compras/RequisicaoCompra.ts +3 -0
- package/lib/base/@types/models/performance/categoria.ts +3 -1
- package/lib/base/components/filters/DynamicFilterField.tsx +213 -0
- package/lib/base/components/filters/DynamicFilterPanel.tsx +50 -0
- package/lib/base/components/filters/index.ts +2 -0
- package/lib/base/components/index.ts +4 -1
- package/lib/base/configs/endpoints.config/centralNfe/config/nfe.ts +1 -0
- package/lib/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.ts +1 -0
- package/lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts +2 -1
- package/lib/base/configs/navigation.config/submenu/performance/cadastros.submenu.ts +0 -2
- package/lib/base/hooks/filters/useFilterMetadata.ts +43 -0
- package/lib/base/hooks/index.ts +2 -1
- package/lib/base/services/modules/centralNfe/nfe/NfeService.ts +8 -0
- package/lib/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.ts +8 -0
- package/lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts +8 -0
- package/lib/base/utils/filters/groupFilterFields.ts +93 -0
- package/lib/base/utils/index.ts +1 -0
- package/package.json +1 -1
|
@@ -66,6 +66,12 @@ async function apiEstornarOperacao(id) {
|
|
|
66
66
|
method: NFE_ENDPOINT.estornarPedidoCompra.httpMethod
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
+
async function apiFinalizarPedido(numeroPedido) {
|
|
70
|
+
return ApiService.fetchDataWithAxios({
|
|
71
|
+
url: NFE_ENDPOINT.finalizarPedido.endpoint.replace("{numeroPedido}", numeroPedido),
|
|
72
|
+
method: NFE_ENDPOINT.finalizarPedido.httpMethod
|
|
73
|
+
});
|
|
74
|
+
}
|
|
69
75
|
async function apiSetNfeLock(idNfe, lock) {
|
|
70
76
|
return ApiService.fetchDataWithAxios({
|
|
71
77
|
url: NFE_ENDPOINT.lock.endpoint,
|
|
@@ -82,6 +88,7 @@ export {
|
|
|
82
88
|
apiDesvincularOrdemCompra,
|
|
83
89
|
apiEstornarOperacao,
|
|
84
90
|
apiEstornarPedidoCompra,
|
|
91
|
+
apiFinalizarPedido,
|
|
85
92
|
apiFindMonitorNfe,
|
|
86
93
|
apiFindOneNfe,
|
|
87
94
|
apiSetNfeLock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NfeService.js","sources":["../../../../../../lib/base/services/modules/centralNfe/nfe/NfeService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport endpointConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\n\nconst NFE_ENDPOINT = endpointConfig.centralNfe.nfe;\n\nexport async function apiFindMonitorNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.findMonitor.endpoint,\n method: NFE_ENDPOINT.findMonitor.httpMethod,\n data: body,\n })\n}\n\nexport async function apiCountNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.count.endpoint,\n method: NFE_ENDPOINT.count.httpMethod,\n data: body,\n })\n}\n\nexport async function apiFindOneNfe(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${NFE_ENDPOINT.findOne.endpoint}/${id}`,\n method: NFE_ENDPOINT.findOne.httpMethod\n })\n}\n\nexport async function apiUpdateNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.update.endpoint,\n method: NFE_ENDPOINT.update.httpMethod,\n data: body,\n })\n}\n\nexport async function downloadPdfByChaveAcesso(chaveAcesso: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${NFE_ENDPOINT.downloadPdfByChaveAcesso.endpoint}/${chaveAcesso}`,\n method: NFE_ENDPOINT.downloadPdfByChaveAcesso.httpMethod\n })\n}\n\nexport async function buscaValidacaoImposto(id: number, numeroPedido: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.validacaoImposto.endpoint\n .replace('{id}', id.toString())\n .replace('{numeroPedido}', numeroPedido),\n method: NFE_ENDPOINT.validacaoImposto.httpMethod\n })\n}\n\nexport async function addLancamentoManual(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.addLancamentoManual.endpoint,\n method: NFE_ENDPOINT.addLancamentoManual.httpMethod,\n data: body\n })\n}\n\nexport async function apiDesvincularOrdemCompra(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.desvincularOrdemCompra.endpoint,\n method: NFE_ENDPOINT.desvincularOrdemCompra.httpMethod,\n data: body\n })\n}\n\nexport async function apiEstornarPedidoCompra(numeroPedido: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.estornarPedidoCompra.endpoint\n .replace('{numeroPedido}', numeroPedido),\n method: NFE_ENDPOINT.estornarPedidoCompra.httpMethod\n })\n}\n\nexport async function apiEstornarOperacao(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.estornarOperacao.endpoint\n .replace('{id}', id.toString()),\n method: NFE_ENDPOINT.estornarPedidoCompra.httpMethod\n })\n}\n\nexport async function apiSetNfeLock(idNfe: number, lock: boolean) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.lock.endpoint,\n method: NFE_ENDPOINT.lock.httpMethod,\n params: {\n idNfe,\n lock\n }\n })\n}"],"names":["endpointConfig"],"mappings":";;AAGA,MAAM,eAAeA,yBAAe,WAAW;AAE/C,eAAsB,kBAAkB,MAAM;AAC1C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,YAAY;AAAA,IAC9B,QAAQ,aAAa,YAAY;AAAA,IACjC,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,YAAY,MAAM;AACpC,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,MAAM;AAAA,IACxB,QAAQ,aAAa,MAAM;AAAA,IAC3B,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,cAAc,IAAY;AAC5C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,aAAa,QAAQ,QAAQ,IAAI,EAAE;AAAA,IAC3C,QAAQ,aAAa,QAAQ;AAAA,EAAA,CAChC;AACL;AAEA,eAAsB,aAAa,MAAM;AACrC,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,OAAO;AAAA,IACzB,QAAQ,aAAa,OAAO;AAAA,IAC5B,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,yBAAyB,aAAqB;AAChE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,aAAa,yBAAyB,QAAQ,IAAI,WAAW;AAAA,IACrE,QAAQ,aAAa,yBAAyB;AAAA,EAAA,CACjD;AACL;AAEA,eAAsB,sBAAsB,IAAY,cAAsB;AAC1E,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,iBAAiB,SAC9B,QAAQ,QAAQ,GAAG,SAAA,CAAU,EAC7B,QAAQ,kBAAkB,YAAY;AAAA,IAC3C,QAAQ,aAAa,iBAAiB;AAAA,EAAA,CACzC;AACL;AAEA,eAAsB,oBAAoB,MAAM;AAC5C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,oBAAoB;AAAA,IACtC,QAAQ,aAAa,oBAAoB;AAAA,IACzC,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,0BAA0B,MAAM;AAClD,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,uBAAuB;AAAA,IACzC,QAAQ,aAAa,uBAAuB;AAAA,IAC5C,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,wBAAwB,cAAsB;AAChE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,qBAAqB,SAClC,QAAQ,kBAAkB,YAAY;AAAA,IAC3C,QAAQ,aAAa,qBAAqB;AAAA,EAAA,CAC7C;AACL;AAEA,eAAsB,oBAAoB,IAAY;AAClD,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,iBAAiB,SAC9B,QAAQ,QAAQ,GAAG,UAAU;AAAA,IAClC,QAAQ,aAAa,qBAAqB;AAAA,EAAA,CAC7C;AACL;AAEA,eAAsB,cAAc,OAAe,MAAe;AAC9D,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,KAAK;AAAA,IACvB,QAAQ,aAAa,KAAK;AAAA,IAC1B,QAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IAAA;AAAA,EACJ,CACH;AACL;"}
|
|
1
|
+
{"version":3,"file":"NfeService.js","sources":["../../../../../../lib/base/services/modules/centralNfe/nfe/NfeService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport endpointConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\n\nconst NFE_ENDPOINT = endpointConfig.centralNfe.nfe;\n\nexport async function apiFindMonitorNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.findMonitor.endpoint,\n method: NFE_ENDPOINT.findMonitor.httpMethod,\n data: body,\n })\n}\n\nexport async function apiCountNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.count.endpoint,\n method: NFE_ENDPOINT.count.httpMethod,\n data: body,\n })\n}\n\nexport async function apiFindOneNfe(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${NFE_ENDPOINT.findOne.endpoint}/${id}`,\n method: NFE_ENDPOINT.findOne.httpMethod\n })\n}\n\nexport async function apiUpdateNfe(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.update.endpoint,\n method: NFE_ENDPOINT.update.httpMethod,\n data: body,\n })\n}\n\nexport async function downloadPdfByChaveAcesso(chaveAcesso: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${NFE_ENDPOINT.downloadPdfByChaveAcesso.endpoint}/${chaveAcesso}`,\n method: NFE_ENDPOINT.downloadPdfByChaveAcesso.httpMethod\n })\n}\n\nexport async function buscaValidacaoImposto(id: number, numeroPedido: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.validacaoImposto.endpoint\n .replace('{id}', id.toString())\n .replace('{numeroPedido}', numeroPedido),\n method: NFE_ENDPOINT.validacaoImposto.httpMethod\n })\n}\n\nexport async function addLancamentoManual(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.addLancamentoManual.endpoint,\n method: NFE_ENDPOINT.addLancamentoManual.httpMethod,\n data: body\n })\n}\n\nexport async function apiDesvincularOrdemCompra(body) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.desvincularOrdemCompra.endpoint,\n method: NFE_ENDPOINT.desvincularOrdemCompra.httpMethod,\n data: body\n })\n}\n\nexport async function apiEstornarPedidoCompra(numeroPedido: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.estornarPedidoCompra.endpoint\n .replace('{numeroPedido}', numeroPedido),\n method: NFE_ENDPOINT.estornarPedidoCompra.httpMethod\n })\n}\n\nexport async function apiEstornarOperacao(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.estornarOperacao.endpoint\n .replace('{id}', id.toString()),\n method: NFE_ENDPOINT.estornarPedidoCompra.httpMethod\n })\n}\n\nexport async function apiFinalizarPedido(numeroPedido: string) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.finalizarPedido.endpoint\n .replace('{numeroPedido}', numeroPedido),\n method: NFE_ENDPOINT.finalizarPedido.httpMethod\n })\n}\n\nexport async function apiSetNfeLock(idNfe: number, lock: boolean) {\n return ApiService.fetchDataWithAxios<any>({\n url: NFE_ENDPOINT.lock.endpoint,\n method: NFE_ENDPOINT.lock.httpMethod,\n params: {\n idNfe,\n lock\n }\n })\n}"],"names":["endpointConfig"],"mappings":";;AAGA,MAAM,eAAeA,yBAAe,WAAW;AAE/C,eAAsB,kBAAkB,MAAM;AAC1C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,YAAY;AAAA,IAC9B,QAAQ,aAAa,YAAY;AAAA,IACjC,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,YAAY,MAAM;AACpC,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,MAAM;AAAA,IACxB,QAAQ,aAAa,MAAM;AAAA,IAC3B,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,cAAc,IAAY;AAC5C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,aAAa,QAAQ,QAAQ,IAAI,EAAE;AAAA,IAC3C,QAAQ,aAAa,QAAQ;AAAA,EAAA,CAChC;AACL;AAEA,eAAsB,aAAa,MAAM;AACrC,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,OAAO;AAAA,IACzB,QAAQ,aAAa,OAAO;AAAA,IAC5B,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,yBAAyB,aAAqB;AAChE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,aAAa,yBAAyB,QAAQ,IAAI,WAAW;AAAA,IACrE,QAAQ,aAAa,yBAAyB;AAAA,EAAA,CACjD;AACL;AAEA,eAAsB,sBAAsB,IAAY,cAAsB;AAC1E,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,iBAAiB,SAC9B,QAAQ,QAAQ,GAAG,SAAA,CAAU,EAC7B,QAAQ,kBAAkB,YAAY;AAAA,IAC3C,QAAQ,aAAa,iBAAiB;AAAA,EAAA,CACzC;AACL;AAEA,eAAsB,oBAAoB,MAAM;AAC5C,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,oBAAoB;AAAA,IACtC,QAAQ,aAAa,oBAAoB;AAAA,IACzC,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,0BAA0B,MAAM;AAClD,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,uBAAuB;AAAA,IACzC,QAAQ,aAAa,uBAAuB;AAAA,IAC5C,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,wBAAwB,cAAsB;AAChE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,qBAAqB,SAClC,QAAQ,kBAAkB,YAAY;AAAA,IAC3C,QAAQ,aAAa,qBAAqB;AAAA,EAAA,CAC7C;AACL;AAEA,eAAsB,oBAAoB,IAAY;AAClD,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,iBAAiB,SAC9B,QAAQ,QAAQ,GAAG,UAAU;AAAA,IAClC,QAAQ,aAAa,qBAAqB;AAAA,EAAA,CAC7C;AACL;AAEA,eAAsB,mBAAmB,cAAsB;AAC3D,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,gBAAgB,SAC7B,QAAQ,kBAAkB,YAAY;AAAA,IAC3C,QAAQ,aAAa,gBAAgB;AAAA,EAAA,CACxC;AACL;AAEA,eAAsB,cAAc,OAAe,MAAe;AAC9D,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,aAAa,KAAK;AAAA,IACvB,QAAQ,aAAa,KAAK;AAAA,IAC1B,QAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IAAA;AAAA,EACJ,CACH;AACL;"}
|
|
@@ -34,11 +34,19 @@ async function apiDeleteOneCadastroEstrategiaLiberacaoValor(id) {
|
|
|
34
34
|
method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.httpMethod
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
+
async function apiFindRolesByValorCadastroEstrategiaLiberacaoValor(data) {
|
|
38
|
+
return ApiService.fetchDataWithAxios({
|
|
39
|
+
url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.endpoint,
|
|
40
|
+
method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.httpMethod,
|
|
41
|
+
data
|
|
42
|
+
});
|
|
43
|
+
}
|
|
37
44
|
export {
|
|
38
45
|
apiCreateCadastroEstrategiaLiberacaoValor,
|
|
39
46
|
apiDeleteOneCadastroEstrategiaLiberacaoValor,
|
|
40
47
|
apiFindMonitorCadastroEstrategiaLiberacaoValor,
|
|
41
48
|
apiFindOneCadastroEstrategiaLiberacaoValor,
|
|
49
|
+
apiFindRolesByValorCadastroEstrategiaLiberacaoValor,
|
|
42
50
|
apiUpdateCadastroEstrategiaLiberacaoValor
|
|
43
51
|
};
|
|
44
52
|
//# sourceMappingURL=CadastroEstrategiaLiberacaoValorService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CadastroEstrategiaLiberacaoValorService.js","sources":["../../../../../../lib/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport { IFilterParams, TQueryResponse } from \"@base/@types\";\nimport endpointConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\n\nconst CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT = endpointConfig.compras.cadastroEstrategiaLiberacaoValor;\n\nexport async function apiCreateCadastroEstrategiaLiberacaoValor(values: any) {\n return ApiService.fetchDataWithAxios<any>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.create.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.create.httpMethod,\n data: values\n })\n}\n\nexport async function apiUpdateCadastroEstrategiaLiberacaoValor(values: any) {\n return ApiService.fetchDataWithAxios<any>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.update.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.update.httpMethod,\n data: values\n })\n}\n\nexport async function apiFindMonitorCadastroEstrategiaLiberacaoValor(body?: IFilterParams) {\n return ApiService.fetchDataWithAxios<TQueryResponse<any>>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findMonitor.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findMonitor.httpMethod,\n data: body,\n })\n}\n\nexport async function apiFindOneCadastroEstrategiaLiberacaoValor(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findOne.endpoint}/${id}`,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findOne.httpMethod\n })\n}\n\nexport async function apiDeleteOneCadastroEstrategiaLiberacaoValor(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.endpoint}/${id}`,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.httpMethod\n })\n}"],"names":["endpointConfig"],"mappings":";;AAIA,MAAM,+CAA+CA,yBAAe,QAAQ;AAE5E,eAAsB,0CAA0C,QAAa;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ,6CAA6C,OAAO;AAAA,IAC5D,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,0CAA0C,QAAa;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ,6CAA6C,OAAO;AAAA,IAC5D,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,+CAA+C,MAAsB;AACvF,SAAO,WAAW,mBAAwC;AAAA,IACtD,KAAK,6CAA6C,YAAY;AAAA,IAC9D,QAAQ,6CAA6C,YAAY;AAAA,IACjE,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,2CAA2C,IAAY;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,6CAA6C,QAAQ,QAAQ,IAAI,EAAE;AAAA,IAC3E,QAAQ,6CAA6C,QAAQ;AAAA,EAAA,CAChE;AACL;AAEA,eAAsB,6CAA6C,IAAY;AAC3E,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,6CAA6C,OAAO,QAAQ,IAAI,EAAE;AAAA,IAC1E,QAAQ,6CAA6C,OAAO;AAAA,EAAA,CAC/D;AACL;"}
|
|
1
|
+
{"version":3,"file":"CadastroEstrategiaLiberacaoValorService.js","sources":["../../../../../../lib/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport { IFilterParams, TQueryResponse } from \"@base/@types\";\nimport endpointConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\n\nconst CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT = endpointConfig.compras.cadastroEstrategiaLiberacaoValor;\n\nexport async function apiCreateCadastroEstrategiaLiberacaoValor(values: any) {\n return ApiService.fetchDataWithAxios<any>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.create.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.create.httpMethod,\n data: values\n })\n}\n\nexport async function apiUpdateCadastroEstrategiaLiberacaoValor(values: any) {\n return ApiService.fetchDataWithAxios<any>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.update.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.update.httpMethod,\n data: values\n })\n}\n\nexport async function apiFindMonitorCadastroEstrategiaLiberacaoValor(body?: IFilterParams) {\n return ApiService.fetchDataWithAxios<TQueryResponse<any>>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findMonitor.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findMonitor.httpMethod,\n data: body,\n })\n}\n\nexport async function apiFindOneCadastroEstrategiaLiberacaoValor(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findOne.endpoint}/${id}`,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findOne.httpMethod\n })\n}\n\nexport async function apiDeleteOneCadastroEstrategiaLiberacaoValor(id: number) {\n return ApiService.fetchDataWithAxios<any>({\n url: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.endpoint}/${id}`,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.httpMethod\n })\n}\n\nexport async function apiFindRolesByValorCadastroEstrategiaLiberacaoValor(data: { valor: number }) {\n return ApiService.fetchDataWithAxios<{ idRole: number; nome: string; ordem: number }[]>({\n url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.endpoint,\n method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.httpMethod,\n data,\n })\n}"],"names":["endpointConfig"],"mappings":";;AAIA,MAAM,+CAA+CA,yBAAe,QAAQ;AAE5E,eAAsB,0CAA0C,QAAa;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ,6CAA6C,OAAO;AAAA,IAC5D,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,0CAA0C,QAAa;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ,6CAA6C,OAAO;AAAA,IAC5D,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,+CAA+C,MAAsB;AACvF,SAAO,WAAW,mBAAwC;AAAA,IACtD,KAAK,6CAA6C,YAAY;AAAA,IAC9D,QAAQ,6CAA6C,YAAY;AAAA,IACjE,MAAM;AAAA,EAAA,CACT;AACL;AAEA,eAAsB,2CAA2C,IAAY;AACzE,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,6CAA6C,QAAQ,QAAQ,IAAI,EAAE;AAAA,IAC3E,QAAQ,6CAA6C,QAAQ;AAAA,EAAA,CAChE;AACL;AAEA,eAAsB,6CAA6C,IAAY;AAC3E,SAAO,WAAW,mBAAwB;AAAA,IACtC,KAAK,GAAG,6CAA6C,OAAO,QAAQ,IAAI,EAAE;AAAA,IAC1E,QAAQ,6CAA6C,OAAO;AAAA,EAAA,CAC/D;AACL;AAEA,eAAsB,oDAAoD,MAAyB;AAC/F,SAAO,WAAW,mBAAsE;AAAA,IACpF,KAAK,6CAA6C,iBAAiB;AAAA,IACnE,QAAQ,6CAA6C,iBAAiB;AAAA,IACtE;AAAA,EAAA,CACH;AACL;"}
|
|
@@ -4,7 +4,7 @@ import { apiAdicionarItensCotacaoEmProcessamento, apiFinalizaRequisicaoAgrupada,
|
|
|
4
4
|
import { apiExecuteAcaoCotacao, apiFindCotacoesEmProcessamento, apiFindMonitorCotacao, apiFindOneCotacao, apiUpdateCotacao } from "./cotacao/CotacaoService.js";
|
|
5
5
|
import { apiExecuteAcaoOrdemCompra, apiFindMonitorOrdemCompra, apiFindOneOrdemCompra, apiFindOrdensComprasNfeByIdsFornecedores, apiUpdateOrdemCompra } from "./ordemCompra/OrdemCompraService.js";
|
|
6
6
|
import { apiFindHistoricoAcaoByIdEntidade } from "./historicoAcao/HistoricoAcaoService.js";
|
|
7
|
-
import { apiCreateCadastroEstrategiaLiberacaoValor, apiDeleteOneCadastroEstrategiaLiberacaoValor, apiFindMonitorCadastroEstrategiaLiberacaoValor, apiFindOneCadastroEstrategiaLiberacaoValor, apiUpdateCadastroEstrategiaLiberacaoValor } from "./cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js";
|
|
7
|
+
import { apiCreateCadastroEstrategiaLiberacaoValor, apiDeleteOneCadastroEstrategiaLiberacaoValor, apiFindMonitorCadastroEstrategiaLiberacaoValor, apiFindOneCadastroEstrategiaLiberacaoValor, apiFindRolesByValorCadastroEstrategiaLiberacaoValor, apiUpdateCadastroEstrategiaLiberacaoValor } from "./cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js";
|
|
8
8
|
import { apiExecuteAcaoItemRequisicaoCompra, apiFindDetalhesRecebimentoMercadoria } from "./itemRequisicaoCompra/ItemRequisicaoCompraService.js";
|
|
9
9
|
export {
|
|
10
10
|
apiAdicionarItensCotacaoEmProcessamento,
|
|
@@ -35,6 +35,7 @@ export {
|
|
|
35
35
|
apiFindOneOrdemCompra,
|
|
36
36
|
apiFindOneRequisicaoCompra,
|
|
37
37
|
apiFindOrdensComprasNfeByIdsFornecedores,
|
|
38
|
+
apiFindRolesByValorCadastroEstrategiaLiberacaoValor,
|
|
38
39
|
apiUpdateCadastroEstrategiaLiberacaoValor,
|
|
39
40
|
apiUpdateCotacao,
|
|
40
41
|
apiUpdateLocalRecepcao,
|
|
@@ -98,7 +98,7 @@ import { apiCountPartidasVencidas, apiFindPartidasAbertas, apiFindPartidasCredit
|
|
|
98
98
|
import { apiCreateAcessoPatio, apiDeleteAcessoPatio, apiFindAcessoPatio, apiFindMonitorAcessoPatio, apiUpdateAcessoPatio } from "./controle-acesso/acessoPatio/AcessoPatioService.js";
|
|
99
99
|
import { apiCreateAnalisePenhorAlienacao, apiFindAllAnalisePenhorAlienacao, apiGetFileDadosPenhores, apiLancarPenhores, apiSendMail, apiUploadFileDadosPenhores } from "./originacao/analisePenhorAlienacao/analisePenhorAlienacaoService.js";
|
|
100
100
|
import { apiCreateAreaAtuacao, apiCreateAvaliacao, apiCreateCategoria, apiCreateModeloAvaliacao, apiCreateModeloNota, apiDeleteAreaAtuacao, apiDeleteCategoria, apiDeleteModeloAvaliacao, apiDeleteModeloNota, apiFindAvaliacaoColaborador, apiFindOneAreaAtuacao, apiFindOneAvaliacao, apiFindOneCategoria, apiFindOneModeloAvaliacao, apiFindOneModeloNota, apiGetAreaAtuacao, apiGetAvaliacao, apiGetCategoria, apiGetComparativo, apiGetModeloAvaliacao, apiGetModeloNota, apiUpdateAreaAtuacao, apiUpdateCategoria, apiUpdateModeloAvaliacao, apiUpdateModeloNota } from "./performance/PerformanceService.js";
|
|
101
|
-
import { apiCreateCadastroEstrategiaLiberacaoValor, apiDeleteOneCadastroEstrategiaLiberacaoValor, apiFindMonitorCadastroEstrategiaLiberacaoValor, apiFindOneCadastroEstrategiaLiberacaoValor, apiUpdateCadastroEstrategiaLiberacaoValor } from "./compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js";
|
|
101
|
+
import { apiCreateCadastroEstrategiaLiberacaoValor, apiDeleteOneCadastroEstrategiaLiberacaoValor, apiFindMonitorCadastroEstrategiaLiberacaoValor, apiFindOneCadastroEstrategiaLiberacaoValor, apiFindRolesByValorCadastroEstrategiaLiberacaoValor, apiUpdateCadastroEstrategiaLiberacaoValor } from "./compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js";
|
|
102
102
|
import { apiCreateCorretora, apiFindAllCorretora } from "./originacao/corretora/corretoraService.js";
|
|
103
103
|
import { apiCreateEmpresa, apiFindAllEmpresa, apiFindByIdEmpresa } from "./originacao/empresa/empresaService.js";
|
|
104
104
|
import { apiCreateLocalRecepcao, apiFindMonitorLocalRecepcao, apiFindOneLocalRecepcao, apiUpdateLocalRecepcao } from "./compras/localRecepcao/LocalRecepcaoService.js";
|
|
@@ -564,6 +564,7 @@ export {
|
|
|
564
564
|
apiFindProdutosCultura,
|
|
565
565
|
apiFindRacaoProdutosListaTecnica,
|
|
566
566
|
apiFindRacaoTabelaPrecoLatest,
|
|
567
|
+
apiFindRolesByValorCadastroEstrategiaLiberacaoValor,
|
|
567
568
|
apiFindRotas,
|
|
568
569
|
apiFindSaldoByIdContratoCompraGraos,
|
|
569
570
|
apiFindSaldoCommoditiesContratoBiodiesel,
|
|
@@ -43,11 +43,18 @@ async function apiUpdateStatusSaldoTicket(id, status, tipoSaldo, justificativa)
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
+
async function apiFindSaldoFilterMetadata() {
|
|
47
|
+
return ApiService.fetchDataWithAxios({
|
|
48
|
+
url: SALDO_TICKET_ORIGINACAO_ENDPOINT.filterMetadata,
|
|
49
|
+
method: "get"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
46
52
|
export {
|
|
47
53
|
apiBuscarSaldoContrato,
|
|
48
54
|
apiBuscarSaldoDisponivel,
|
|
49
55
|
apiFindAllSaldo,
|
|
50
56
|
apiFindHistoricoByIdSaldo,
|
|
57
|
+
apiFindSaldoFilterMetadata,
|
|
51
58
|
apiFindSaldoMetrics,
|
|
52
59
|
apiUpdateStatusSaldoTicket
|
|
53
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saldoTicketService.js","sources":["../../../../../../lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport { TSaldoContratoResponse } from \"@base/@types/api/response/originacao/TSaldoContratoResponse\";\nimport endpointNavigationConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\nimport { TQueryResponse } from \"@base/@types/api\";\nimport { TFindAllSaldoResponse } from \"@base/@types/api/response/originacao/TFindAllSaldoResponse\";\nimport { TFindAllMetricsSaldoResponse } from \"@base/@types/api/response/originacao/TFindAllMetricsSaldoResponse\";\nimport { TEntityHistoricoResponse } from \"@base/@types/api/response/originacao/TEntityHistoricoResponse\";\nimport { StatusSaldoTicket } from \"@base/@types/enums/originacao/StatusSaldoTicket\";\nimport { TipoSaldo } from \"@base/@types/enums/originacao/TipoSaldo\";\n\nconst SALDO_TICKET_ORIGINACAO_ENDPOINT = endpointNavigationConfig.originacao.saldoTicket;\n\nexport async function apiBuscarSaldoContrato(id: number | string) {\n return ApiService.fetchDataWithAxios<TSaldoContratoResponse>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.buscarSaldoContrato(String(id)),\n method: \"get\",\n });\n}\n\nexport async function apiFindAllSaldo(params?: string) {\n return ApiService.fetchDataWithAxios<TQueryResponse<TFindAllSaldoResponse>>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.findAll(params),\n method: \"get\",\n });\n}\n\nexport async function apiFindHistoricoByIdSaldo(id: number | string, params?: string) {\n return ApiService.fetchDataWithAxios<TQueryResponse<TEntityHistoricoResponse>>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.historicoById(String(id), params),\n method: \"get\",\n });\n}\n\n\nexport async function apiBuscarSaldoDisponivel(data) {\n return ApiService.fetchDataWithAxios({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.buscarSaldoDisponivel,\n method: \"post\",\n data\n });\n}\n\nexport async function apiFindSaldoMetrics(params?: string) {\n return ApiService.fetchDataWithAxios<TFindAllMetricsSaldoResponse>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.findAllMetrics(params),\n method: \"get\",\n });\n}\n\nexport async function apiUpdateStatusSaldoTicket(\n id: number | string,\n status: StatusSaldoTicket,\n tipoSaldo: TipoSaldo,\n justificativa: string\n) {\n return ApiService.fetchDataWithAxios({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.updateStatus(String(id)),\n method: \"patch\",\n data: {\n status,\n tipoSaldo,\n justificativa\n }\n });\n}"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"saldoTicketService.js","sources":["../../../../../../lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts"],"sourcesContent":["import ApiService from \"@/services/ApiService\";\nimport { TSaldoContratoResponse } from \"@base/@types/api/response/originacao/TSaldoContratoResponse\";\nimport endpointNavigationConfig from \"@base/configs/endpoints.config/endpoints.navigation\";\nimport { TQueryResponse } from \"@base/@types/api\";\nimport { TFindAllSaldoResponse } from \"@base/@types/api/response/originacao/TFindAllSaldoResponse\";\nimport { TFindAllMetricsSaldoResponse } from \"@base/@types/api/response/originacao/TFindAllMetricsSaldoResponse\";\nimport { TEntityHistoricoResponse } from \"@base/@types/api/response/originacao/TEntityHistoricoResponse\";\nimport { StatusSaldoTicket } from \"@base/@types/enums/originacao/StatusSaldoTicket\";\nimport { TipoSaldo } from \"@base/@types/enums/originacao/TipoSaldo\";\nimport { IFilterFieldDescriptor } from \"@base/@types/filters\";\n\nconst SALDO_TICKET_ORIGINACAO_ENDPOINT = endpointNavigationConfig.originacao.saldoTicket;\n\nexport async function apiBuscarSaldoContrato(id: number | string) {\n return ApiService.fetchDataWithAxios<TSaldoContratoResponse>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.buscarSaldoContrato(String(id)),\n method: \"get\",\n });\n}\n\nexport async function apiFindAllSaldo(params?: string) {\n return ApiService.fetchDataWithAxios<TQueryResponse<TFindAllSaldoResponse>>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.findAll(params),\n method: \"get\",\n });\n}\n\nexport async function apiFindHistoricoByIdSaldo(id: number | string, params?: string) {\n return ApiService.fetchDataWithAxios<TQueryResponse<TEntityHistoricoResponse>>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.historicoById(String(id), params),\n method: \"get\",\n });\n}\n\n\nexport async function apiBuscarSaldoDisponivel(data) {\n return ApiService.fetchDataWithAxios({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.buscarSaldoDisponivel,\n method: \"post\",\n data\n });\n}\n\nexport async function apiFindSaldoMetrics(params?: string) {\n return ApiService.fetchDataWithAxios<TFindAllMetricsSaldoResponse>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.findAllMetrics(params),\n method: \"get\",\n });\n}\n\nexport async function apiUpdateStatusSaldoTicket(\n id: number | string,\n status: StatusSaldoTicket,\n tipoSaldo: TipoSaldo,\n justificativa: string\n) {\n return ApiService.fetchDataWithAxios({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.updateStatus(String(id)),\n method: \"patch\",\n data: {\n status,\n tipoSaldo,\n justificativa\n }\n });\n}\n\nexport async function apiFindSaldoFilterMetadata() {\n return ApiService.fetchDataWithAxios<IFilterFieldDescriptor[]>({\n url: SALDO_TICKET_ORIGINACAO_ENDPOINT.filterMetadata,\n method: \"get\",\n });\n}"],"names":[],"mappings":";;AAWA,MAAM,mCAAmC,yBAAyB,WAAW;AAE7E,eAAsB,uBAAuB,IAAqB;AAChE,SAAO,WAAW,mBAA2C;AAAA,IAC3D,KAAK,iCAAiC,oBAAoB,OAAO,EAAE,CAAC;AAAA,IACpE,QAAQ;AAAA,EAAA,CACT;AACH;AAEA,eAAsB,gBAAgB,QAAiB;AACrD,SAAO,WAAW,mBAA0D;AAAA,IAC1E,KAAK,iCAAiC,QAAQ,MAAM;AAAA,IACpD,QAAQ;AAAA,EAAA,CACT;AACH;AAEA,eAAsB,0BAA0B,IAAqB,QAAiB;AACpF,SAAO,WAAW,mBAA6D;AAAA,IAC7E,KAAK,iCAAiC,cAAc,OAAO,EAAE,GAAG,MAAM;AAAA,IACtE,QAAQ;AAAA,EAAA,CACT;AACH;AAGA,eAAsB,yBAAyB,MAAM;AACnD,SAAO,WAAW,mBAAmB;AAAA,IACnC,KAAK,iCAAiC;AAAA,IACtC,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AACH;AAEA,eAAsB,oBAAoB,QAAiB;AACzD,SAAO,WAAW,mBAAiD;AAAA,IACjE,KAAK,iCAAiC,eAAe,MAAM;AAAA,IAC3D,QAAQ;AAAA,EAAA,CACT;AACH;AAEA,eAAsB,2BACpB,IACA,QACA,WACA,eACA;AACA,SAAO,WAAW,mBAAmB;AAAA,IACnC,KAAK,iCAAiC,aAAa,OAAO,EAAE,CAAC;AAAA,IAC7D,QAAQ;AAAA,IACR,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF,CACD;AACH;AAEA,eAAsB,6BAA6B;AACjD,SAAO,WAAW,mBAA6C;AAAA,IAC7D,KAAK,iCAAiC;AAAA,IACtC,QAAQ;AAAA,EAAA,CACT;AACH;"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function groupFilterFields(fields) {
|
|
2
|
+
const rangeGroupMap = /* @__PURE__ */ new Map();
|
|
3
|
+
for (const field of fields) {
|
|
4
|
+
if (field.rangeGroup) {
|
|
5
|
+
if (!rangeGroupMap.has(field.rangeGroup)) {
|
|
6
|
+
rangeGroupMap.set(field.rangeGroup, []);
|
|
7
|
+
}
|
|
8
|
+
rangeGroupMap.get(field.rangeGroup).push(field);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const result = [];
|
|
12
|
+
const rangeGroupInserted = /* @__PURE__ */ new Set();
|
|
13
|
+
for (const field of fields) {
|
|
14
|
+
if (field.rangeGroup) {
|
|
15
|
+
if (!rangeGroupInserted.has(field.rangeGroup)) {
|
|
16
|
+
rangeGroupInserted.add(field.rangeGroup);
|
|
17
|
+
const groupFields = rangeGroupMap.get(field.rangeGroup);
|
|
18
|
+
if (groupFields.length < 2) {
|
|
19
|
+
result.push({ kind: "standalone", descriptor: groupFields[0] });
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const sorted = [...groupFields].sort((a, b) => {
|
|
23
|
+
const aIsDe = /De$/i.test(a.field);
|
|
24
|
+
const bIsDe = /De$/i.test(b.field);
|
|
25
|
+
if (aIsDe && !bIsDe) return -1;
|
|
26
|
+
if (!aIsDe && bIsDe) return 1;
|
|
27
|
+
return a.field.localeCompare(b.field);
|
|
28
|
+
});
|
|
29
|
+
const rangeGroup = {
|
|
30
|
+
kind: "range",
|
|
31
|
+
rangeGroup: field.rangeGroup,
|
|
32
|
+
label: deriveRangeLabel(sorted),
|
|
33
|
+
startField: sorted[0],
|
|
34
|
+
endField: sorted[1]
|
|
35
|
+
};
|
|
36
|
+
result.push(rangeGroup);
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
const standalone = {
|
|
40
|
+
kind: "standalone",
|
|
41
|
+
descriptor: field
|
|
42
|
+
};
|
|
43
|
+
result.push(standalone);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
function deriveRangeLabel(fields) {
|
|
49
|
+
if (fields.length === 0) return "";
|
|
50
|
+
const raw = fields[0].label;
|
|
51
|
+
return raw.replace(/\s+(De|Até|Ate)$/i, "").trim() || raw;
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
groupFilterFields
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=groupFilterFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupFilterFields.js","sources":["../../../../lib/base/utils/filters/groupFilterFields.ts"],"sourcesContent":["import type {\n IFilterFieldDescriptor,\n IFilterRangeGroup,\n TFilterRenderItem,\n IFilterStandaloneField,\n} from '@base/@types/filters'\n\n/**\n * Agrupa IFilterFieldDescriptors em itens renderizáveis.\n *\n * - Campos com o mesmo rangeGroup não-nulo são fundidos em um único IFilterRangeGroup.\n * - Todos os demais campos se tornam IFilterStandaloneField.\n * - A ordem da lista original é preservada: o grupo aparece na posição do seu primeiro campo.\n * - Se um rangeGroup tiver menos de 2 campos, cada um é tratado como standalone (fallback seguro).\n *\n * @example\n * // dataEnvioDe + dataEnvioAte (mesmo rangeGroup) → IFilterRangeGroup { startField, endField }\n * // id, operacao, businessPartnerId → IFilterStandaloneField[]\n */\nexport function groupFilterFields(fields: IFilterFieldDescriptor[]): TFilterRenderItem[] {\n // Primeiro passo: coletar todos os campos de cada rangeGroup\n const rangeGroupMap = new Map<string, IFilterFieldDescriptor[]>()\n for (const field of fields) {\n if (field.rangeGroup) {\n if (!rangeGroupMap.has(field.rangeGroup)) {\n rangeGroupMap.set(field.rangeGroup, [])\n }\n rangeGroupMap.get(field.rangeGroup)!.push(field)\n }\n }\n\n // Segundo passo: percorrer os campos mantendo a ordem, inserindo o grupo\n // na posição do seu primeiro membro\n const result: TFilterRenderItem[] = []\n const rangeGroupInserted = new Set<string>()\n\n for (const field of fields) {\n if (field.rangeGroup) {\n // Apenas insere o grupo uma vez (na posição do primeiro campo)\n if (!rangeGroupInserted.has(field.rangeGroup)) {\n rangeGroupInserted.add(field.rangeGroup)\n const groupFields = rangeGroupMap.get(field.rangeGroup)!\n\n // Fallback seguro: se o backend enviar apenas um campo do par, trata como standalone\n if (groupFields.length < 2) {\n result.push({ kind: 'standalone', descriptor: groupFields[0] })\n continue\n }\n\n // Garante que o campo \"De\" (início) vem antes de \"Ate\"/\"Até\" (fim).\n // Não pode usar localeCompare simples pois \"Ate\" < \"De\" alfabeticamente.\n const sorted = [...groupFields].sort((a, b) => {\n const aIsDe = /De$/i.test(a.field)\n const bIsDe = /De$/i.test(b.field)\n if (aIsDe && !bIsDe) return -1\n if (!aIsDe && bIsDe) return 1\n return a.field.localeCompare(b.field)\n })\n\n const rangeGroup: IFilterRangeGroup = {\n kind: 'range',\n rangeGroup: field.rangeGroup,\n label: deriveRangeLabel(sorted),\n startField: sorted[0],\n endField: sorted[1],\n }\n result.push(rangeGroup)\n }\n } else {\n const standalone: IFilterStandaloneField = {\n kind: 'standalone',\n descriptor: field,\n }\n result.push(standalone)\n }\n }\n\n return result\n}\n\n/**\n * Deriva um label legível para o grupo de range.\n * Remove sufixos \"De\", \"Até\" e \"Ate\" do label do primeiro campo.\n *\n * @example\n * // \"Data Envio De\" → \"Data Envio\"\n * // \"Data Envio Até\" → \"Data Envio\"\n */\nfunction deriveRangeLabel(fields: IFilterFieldDescriptor[]): string {\n if (fields.length === 0) return ''\n const raw = fields[0].label\n return raw.replace(/\\s+(De|Até|Ate)$/i, '').trim() || raw\n}\n"],"names":[],"mappings":"AAmBO,SAAS,kBAAkB,QAAuD;AAErF,QAAM,oCAAoB,IAAA;AAC1B,aAAW,SAAS,QAAQ;AACxB,QAAI,MAAM,YAAY;AAClB,UAAI,CAAC,cAAc,IAAI,MAAM,UAAU,GAAG;AACtC,sBAAc,IAAI,MAAM,YAAY,CAAA,CAAE;AAAA,MAC1C;AACA,oBAAc,IAAI,MAAM,UAAU,EAAG,KAAK,KAAK;AAAA,IACnD;AAAA,EACJ;AAIA,QAAM,SAA8B,CAAA;AACpC,QAAM,yCAAyB,IAAA;AAE/B,aAAW,SAAS,QAAQ;AACxB,QAAI,MAAM,YAAY;AAElB,UAAI,CAAC,mBAAmB,IAAI,MAAM,UAAU,GAAG;AAC3C,2BAAmB,IAAI,MAAM,UAAU;AACvC,cAAM,cAAc,cAAc,IAAI,MAAM,UAAU;AAGtD,YAAI,YAAY,SAAS,GAAG;AACxB,iBAAO,KAAK,EAAE,MAAM,cAAc,YAAY,YAAY,CAAC,GAAG;AAC9D;AAAA,QACJ;AAIA,cAAM,SAAS,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM;AAC3C,gBAAM,QAAQ,OAAO,KAAK,EAAE,KAAK;AACjC,gBAAM,QAAQ,OAAO,KAAK,EAAE,KAAK;AACjC,cAAI,SAAS,CAAC,MAAO,QAAO;AAC5B,cAAI,CAAC,SAAS,MAAO,QAAO;AAC5B,iBAAO,EAAE,MAAM,cAAc,EAAE,KAAK;AAAA,QACxC,CAAC;AAED,cAAM,aAAgC;AAAA,UAClC,MAAM;AAAA,UACN,YAAY,MAAM;AAAA,UAClB,OAAO,iBAAiB,MAAM;AAAA,UAC9B,YAAY,OAAO,CAAC;AAAA,UACpB,UAAU,OAAO,CAAC;AAAA,QAAA;AAEtB,eAAO,KAAK,UAAU;AAAA,MAC1B;AAAA,IACJ,OAAO;AACH,YAAM,aAAqC;AAAA,QACvC,MAAM;AAAA,QACN,YAAY;AAAA,MAAA;AAEhB,aAAO,KAAK,UAAU;AAAA,IAC1B;AAAA,EACJ;AAEA,SAAO;AACX;AAUA,SAAS,iBAAiB,QAA0C;AAChE,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAM,MAAM,OAAO,CAAC,EAAE;AACtB,SAAO,IAAI,QAAQ,qBAAqB,EAAE,EAAE,UAAU;AAC1D;"}
|
package/dist/base/utils/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { getLogoFilename } from "./logo.js";
|
|
2
2
|
import { validateEmail } from "./validateEmail/validateEmail.js";
|
|
3
|
+
import { groupFilterFields } from "./filters/groupFilterFields.js";
|
|
3
4
|
export {
|
|
4
5
|
getLogoFilename,
|
|
6
|
+
groupFilterFields,
|
|
5
7
|
validateEmail
|
|
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":";;;"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Tipos para o sistema de filtros dinâmicos guiados por metadados do backend.
|
|
2
|
+
// Este padrão é compartilhado entre todos os microfrontends que implementam
|
|
3
|
+
// o endpoint /filter-metadata.
|
|
4
|
+
//
|
|
5
|
+
// Convenção de nomenclatura seguida no projeto:
|
|
6
|
+
// I* → interfaces (objetos com estrutura definida)
|
|
7
|
+
// T* → type aliases (unions, primitivos, tipos genéricos)
|
|
8
|
+
|
|
9
|
+
export type TFilterDataType = 'NUMBER' | 'STRING' | 'DATE' | 'ENUM'
|
|
10
|
+
|
|
11
|
+
export type TFilterOperator = 'EQUALS' | 'BETWEEN' | 'LIKE' | 'IN'
|
|
12
|
+
|
|
13
|
+
export interface IFilterAllowedValue {
|
|
14
|
+
value: string
|
|
15
|
+
label: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface IFilterLookup {
|
|
19
|
+
resource: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Shape exata retornada pelo endpoint /filter-metadata do backend */
|
|
23
|
+
export interface IFilterFieldDescriptor {
|
|
24
|
+
field: string
|
|
25
|
+
label: string
|
|
26
|
+
dataType: TFilterDataType
|
|
27
|
+
operator: TFilterOperator
|
|
28
|
+
rangeGroup: string | null
|
|
29
|
+
multiSelect: boolean
|
|
30
|
+
allowedValues: IFilterAllowedValue[] | null
|
|
31
|
+
lookup: IFilterLookup | null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Estruturas processadas após o agrupamento de campos de range
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
/** Dois campos DATE+BETWEEN com o mesmo rangeGroup fundidos em uma unidade renderizável */
|
|
39
|
+
export interface IFilterRangeGroup {
|
|
40
|
+
kind: 'range'
|
|
41
|
+
rangeGroup: string
|
|
42
|
+
/** Label derivado: remove sufixo "De"/"Até" do primeiro campo */
|
|
43
|
+
label: string
|
|
44
|
+
startField: IFilterFieldDescriptor
|
|
45
|
+
endField: IFilterFieldDescriptor
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Campo standalone: qualquer campo que não faça parte de um rangeGroup */
|
|
49
|
+
export interface IFilterStandaloneField {
|
|
50
|
+
kind: 'standalone'
|
|
51
|
+
descriptor: IFilterFieldDescriptor
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Union discriminada usada pelo renderizador — evita lógica if/else espalhada */
|
|
55
|
+
export type TFilterRenderItem = IFilterRangeGroup | IFilterStandaloneField
|
|
56
|
+
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
// Contrato do Lookup Registry
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Props mínimas que o sistema genérico precisa passar para um componente de lookup.
|
|
63
|
+
* O componente deve armazenar o valor PRIMITIVO (id, codigo, etc.) sob `name`
|
|
64
|
+
* no react-hook-form — nunca o objeto completo.
|
|
65
|
+
*/
|
|
66
|
+
export interface ILookupComponentProps {
|
|
67
|
+
/** Nome do campo no react-hook-form (= nome do param na API) */
|
|
68
|
+
name: string
|
|
69
|
+
/** Label vindo dos metadados do backend */
|
|
70
|
+
label: string
|
|
71
|
+
disabled?: boolean
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Mapa de resource string → componente React de lookup.
|
|
76
|
+
* Cada microfrontend define o seu próprio registry com os componentes adequados.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* const myRegistry: TLookupComponentRegistry = {
|
|
80
|
+
* 'business-partner': BusinessPartnerLookup,
|
|
81
|
+
* 'safra': SafraLookup,
|
|
82
|
+
* }
|
|
83
|
+
*/
|
|
84
|
+
export type TLookupComponentRegistry = Record<
|
|
85
|
+
string,
|
|
86
|
+
React.ComponentType<ILookupComponentProps>
|
|
87
|
+
>
|
package/lib/base/@types/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type TRequisicaoCompra = {
|
|
|
3
3
|
dataCriacao: string
|
|
4
4
|
status: string
|
|
5
5
|
possuiHistoricoMovimentacaoItens: boolean
|
|
6
|
+
valorTotal?: number
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
export type THistoricoMovimentacao = {
|
|
@@ -45,6 +46,7 @@ export type TItemRequisicaoCompra = {
|
|
|
45
46
|
idContaContabil?: number
|
|
46
47
|
idDeposito?: number
|
|
47
48
|
rateios?: TRateioItemRequisicaoCompra[]
|
|
49
|
+
casasDecimais?: number
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
export type TArquivoRequisicaoCompra = {
|
|
@@ -69,4 +71,5 @@ export type TRequisicaoCompraFormSchema = {
|
|
|
69
71
|
departamento?: string
|
|
70
72
|
itens: TItemRequisicaoCompra[]
|
|
71
73
|
arquivos?: TArquivoRequisicaoCompra[]
|
|
74
|
+
valorTotal?: number
|
|
72
75
|
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { Controller, useFormContext } from 'react-hook-form'
|
|
3
|
+
import { DatePicker, FormItem, Input, Select } from '@/components/ui'
|
|
4
|
+
import DatePickerRange from '@/components/ui/DatePicker/DatePickerRange'
|
|
5
|
+
import type {
|
|
6
|
+
TFilterRenderItem,
|
|
7
|
+
IFilterStandaloneField,
|
|
8
|
+
IFilterRangeGroup,
|
|
9
|
+
TLookupComponentRegistry,
|
|
10
|
+
} from '@base/@types/filters'
|
|
11
|
+
|
|
12
|
+
interface DynamicFilterFieldProps {
|
|
13
|
+
item: TFilterRenderItem
|
|
14
|
+
lookupRegistry?: TLookupComponentRegistry
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Renderiza o componente de formulário correto para um TFilterRenderItem.
|
|
19
|
+
*
|
|
20
|
+
* Regras de renderização:
|
|
21
|
+
* - `kind === 'range'` → DatePickerRange (dois campos DATE+BETWEEN fundidos)
|
|
22
|
+
* - `kind === 'standalone'`:
|
|
23
|
+
* - `lookup != null` → componente do lookupRegistry (async select)
|
|
24
|
+
* - `allowedValues != null` → Select com opções fixas (ENUM)
|
|
25
|
+
* - `dataType === 'DATE'` → DatePicker
|
|
26
|
+
* - `dataType === 'NUMBER'` → Input type="number"
|
|
27
|
+
* - `dataType === 'STRING'` → Input type="text"
|
|
28
|
+
*
|
|
29
|
+
* Deve ser usado DENTRO de um FormProvider.
|
|
30
|
+
*/
|
|
31
|
+
const DynamicFilterField: React.FC<DynamicFilterFieldProps> = ({ item, lookupRegistry }) => {
|
|
32
|
+
if (item.kind === 'range') {
|
|
33
|
+
return <RangeField item={item} />
|
|
34
|
+
}
|
|
35
|
+
return <StandaloneField item={item} lookupRegistry={lookupRegistry} />
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Range field: DatePickerRange gerenciando dois campos reais no form
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
interface RangeFieldProps {
|
|
43
|
+
item: IFilterRangeGroup
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const RangeField: React.FC<RangeFieldProps> = ({ item }) => {
|
|
47
|
+
const { setValue, watch } = useFormContext()
|
|
48
|
+
|
|
49
|
+
const startValue = watch(item.startField.field)
|
|
50
|
+
const endValue = watch(item.endField.field)
|
|
51
|
+
|
|
52
|
+
// Reconstrói o tuple [Date|null, Date|null] a partir das strings armazenadas.
|
|
53
|
+
// Usa 'T00:00:00' para forçar parse em horário local (sem isso, 'YYYY-MM-DD'
|
|
54
|
+
// é interpretado como UTC midnight e exibe um dia anterior no fuso UTC-3).
|
|
55
|
+
const rangeValue: [Date | null, Date | null] = [
|
|
56
|
+
startValue ? new Date(`${startValue}T00:00:00`) : null,
|
|
57
|
+
endValue ? new Date(`${endValue}T00:00:00`) : null,
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
const handleChange = (value: [Date | null, Date | null]) => {
|
|
61
|
+
const [start, end] = value ?? [null, null]
|
|
62
|
+
setValue(item.startField.field, start ? formatDate(start) : null, { shouldDirty: true })
|
|
63
|
+
setValue(item.endField.field, end ? formatDate(end) : null, { shouldDirty: true })
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<FormItem className="text-xs" label={item.label}>
|
|
68
|
+
<DatePickerRange
|
|
69
|
+
size="sm"
|
|
70
|
+
value={rangeValue}
|
|
71
|
+
onChange={handleChange}
|
|
72
|
+
/>
|
|
73
|
+
</FormItem>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Standalone field: delega para lookup registry ou input genérico
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
|
|
81
|
+
interface StandaloneFieldProps {
|
|
82
|
+
item: IFilterStandaloneField
|
|
83
|
+
lookupRegistry?: TLookupComponentRegistry
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const StandaloneField: React.FC<StandaloneFieldProps> = ({ item, lookupRegistry }) => {
|
|
87
|
+
const { descriptor } = item
|
|
88
|
+
const { control } = useFormContext()
|
|
89
|
+
|
|
90
|
+
// Lookup: delega para o componente registrado no microfrontend
|
|
91
|
+
if (descriptor.lookup) {
|
|
92
|
+
const LookupComponent = lookupRegistry?.[descriptor.lookup.resource]
|
|
93
|
+
if (LookupComponent) {
|
|
94
|
+
return (
|
|
95
|
+
<LookupComponent
|
|
96
|
+
name={descriptor.field}
|
|
97
|
+
label={descriptor.label}
|
|
98
|
+
/>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
// Fallback: lookup não registrado no registry → input de texto simples
|
|
102
|
+
console.warn(
|
|
103
|
+
`[DynamicFilterField] lookup resource "${descriptor.lookup.resource}" não encontrado no registry. ` +
|
|
104
|
+
`Renderizando como input de texto para o campo "${descriptor.field}".`
|
|
105
|
+
)
|
|
106
|
+
// Continua para renderizar o input de texto (fallback seguro)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// ENUM: select com opções fixas vindas dos metadados
|
|
110
|
+
if (descriptor.allowedValues && descriptor.allowedValues.length > 0) {
|
|
111
|
+
const options = descriptor.allowedValues.map((opt) => ({
|
|
112
|
+
value: opt.value,
|
|
113
|
+
label: opt.label,
|
|
114
|
+
}))
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<Controller
|
|
118
|
+
name={descriptor.field}
|
|
119
|
+
control={control}
|
|
120
|
+
render={({ field, fieldState: { error } }) => (
|
|
121
|
+
<FormItem
|
|
122
|
+
className="text-xs"
|
|
123
|
+
label={descriptor.label}
|
|
124
|
+
invalid={!!error}
|
|
125
|
+
errorMessage={error?.message}
|
|
126
|
+
>
|
|
127
|
+
<Select
|
|
128
|
+
isClearable
|
|
129
|
+
size="sm"
|
|
130
|
+
placeholder="Selecione uma opção"
|
|
131
|
+
options={options}
|
|
132
|
+
value={options.find((o) => o.value === field.value) ?? null}
|
|
133
|
+
onChange={(opt: { value: string; label: string } | null) =>
|
|
134
|
+
field.onChange(opt?.value ?? null)
|
|
135
|
+
}
|
|
136
|
+
onBlur={field.onBlur}
|
|
137
|
+
/>
|
|
138
|
+
</FormItem>
|
|
139
|
+
)}
|
|
140
|
+
/>
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// DATE com operator EQUALS: DatePicker simples
|
|
145
|
+
if (descriptor.dataType === 'DATE') {
|
|
146
|
+
return (
|
|
147
|
+
<Controller
|
|
148
|
+
name={descriptor.field}
|
|
149
|
+
control={control}
|
|
150
|
+
render={({ field, fieldState: { error } }) => (
|
|
151
|
+
<FormItem
|
|
152
|
+
className="text-xs"
|
|
153
|
+
label={descriptor.label}
|
|
154
|
+
invalid={!!error}
|
|
155
|
+
errorMessage={error?.message}
|
|
156
|
+
>
|
|
157
|
+
<DatePicker
|
|
158
|
+
size="sm"
|
|
159
|
+
className="text-xs"
|
|
160
|
+
placeholder="Selecione uma data"
|
|
161
|
+
value={field.value ? new Date(`${field.value}T00:00:00`) : null}
|
|
162
|
+
onChange={(date: Date | null) =>
|
|
163
|
+
field.onChange(date ? formatDate(date) : null)
|
|
164
|
+
}
|
|
165
|
+
onBlur={field.onBlur}
|
|
166
|
+
/>
|
|
167
|
+
</FormItem>
|
|
168
|
+
)}
|
|
169
|
+
/>
|
|
170
|
+
)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// NUMBER ou STRING (inclui fallback de lookup não registrado)
|
|
174
|
+
const inputType = descriptor.dataType === 'NUMBER' ? 'number' : 'text'
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
<Controller
|
|
178
|
+
name={descriptor.field}
|
|
179
|
+
control={control}
|
|
180
|
+
render={({ field, fieldState: { error } }) => (
|
|
181
|
+
<FormItem
|
|
182
|
+
className="text-xs"
|
|
183
|
+
label={descriptor.label}
|
|
184
|
+
invalid={!!error}
|
|
185
|
+
errorMessage={error?.message}
|
|
186
|
+
>
|
|
187
|
+
<Input
|
|
188
|
+
{...field}
|
|
189
|
+
size="sm"
|
|
190
|
+
type={inputType}
|
|
191
|
+
placeholder={`${descriptor.label}`}
|
|
192
|
+
value={field.value ?? ''}
|
|
193
|
+
onChange={(e) => field.onChange(e.target.value || null)}
|
|
194
|
+
/>
|
|
195
|
+
</FormItem>
|
|
196
|
+
)}
|
|
197
|
+
/>
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// Utilitário
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
|
|
205
|
+
/** Formata uma Date para 'YYYY-MM-DD' sem dependências externas */
|
|
206
|
+
function formatDate(date: Date): string {
|
|
207
|
+
const y = date.getFullYear()
|
|
208
|
+
const m = String(date.getMonth() + 1).padStart(2, '0')
|
|
209
|
+
const d = String(date.getDate()).padStart(2, '0')
|
|
210
|
+
return `${y}-${m}-${d}`
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export default DynamicFilterField
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useMemo } from 'react'
|
|
2
|
+
import type { IFilterFieldDescriptor, TLookupComponentRegistry } from '@base/@types/filters'
|
|
3
|
+
import { groupFilterFields } from '@base/utils/filters/groupFilterFields'
|
|
4
|
+
import DynamicFilterField from './DynamicFilterField'
|
|
5
|
+
|
|
6
|
+
interface DynamicFilterPanelProps {
|
|
7
|
+
/** Metadados de filtros vindos do endpoint /filter-metadata */
|
|
8
|
+
fields: IFilterFieldDescriptor[]
|
|
9
|
+
/**
|
|
10
|
+
* Mapa de resource → componente de lookup.
|
|
11
|
+
* Definido pelo microfrontend consumidor — permite que cada app
|
|
12
|
+
* registre os seus próprios componentes de async select.
|
|
13
|
+
*/
|
|
14
|
+
lookupRegistry?: TLookupComponentRegistry
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Renderiza todos os campos de filtro dinamicamente a partir dos metadados do backend.
|
|
19
|
+
*
|
|
20
|
+
* - Agrupa automaticamente campos de range (mesmo rangeGroup + BETWEEN) em um DatePickerRange.
|
|
21
|
+
* - Delega a renderização individual para DynamicFilterField.
|
|
22
|
+
* - Deve ser usado DENTRO de um FormProvider.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <FormProvider {...methods}>
|
|
26
|
+
* <DynamicFilterPanel
|
|
27
|
+
* fields={metadataFields}
|
|
28
|
+
* lookupRegistry={saldoTicketLookupRegistry}
|
|
29
|
+
* />
|
|
30
|
+
* </FormProvider>
|
|
31
|
+
*/
|
|
32
|
+
const DynamicFilterPanel: React.FC<DynamicFilterPanelProps> = ({ fields, lookupRegistry }) => {
|
|
33
|
+
// groupFilterFields é uma função pura — o useMemo garante que o agrupamento
|
|
34
|
+
// só recalcula quando `fields` muda (na prática, apenas uma vez por sessão)
|
|
35
|
+
const renderItems = useMemo(() => groupFilterFields(fields), [fields])
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<>
|
|
39
|
+
{renderItems.map((item) => (
|
|
40
|
+
<DynamicFilterField
|
|
41
|
+
key={item.kind === 'range' ? `range__${item.rangeGroup}` : item.descriptor.field}
|
|
42
|
+
item={item}
|
|
43
|
+
lookupRegistry={lookupRegistry}
|
|
44
|
+
/>
|
|
45
|
+
))}
|
|
46
|
+
</>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default DynamicFilterPanel
|