@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.
Files changed (105) hide show
  1. package/dist/@types/base/@types/filters/index.d.ts +60 -0
  2. package/dist/@types/base/@types/filters/index.d.ts.map +1 -0
  3. package/dist/@types/base/@types/index.d.ts +1 -0
  4. package/dist/@types/base/@types/index.d.ts.map +1 -1
  5. package/dist/@types/base/@types/models/compras/RequisicaoCompra.d.ts +3 -0
  6. package/dist/@types/base/@types/models/compras/RequisicaoCompra.d.ts.map +1 -1
  7. package/dist/@types/base/@types/models/performance/categoria.d.ts +2 -1
  8. package/dist/@types/base/@types/models/performance/categoria.d.ts.map +1 -1
  9. package/dist/@types/base/components/filters/DynamicFilterField.d.ts +23 -0
  10. package/dist/@types/base/components/filters/DynamicFilterField.d.ts.map +1 -0
  11. package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts +30 -0
  12. package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts.map +1 -0
  13. package/dist/@types/base/components/filters/index.d.ts +3 -0
  14. package/dist/@types/base/components/filters/index.d.ts.map +1 -0
  15. package/dist/@types/base/components/index.d.ts +1 -0
  16. package/dist/@types/base/components/index.d.ts.map +1 -1
  17. package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts +4 -0
  18. package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts.map +1 -1
  19. package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts +4 -0
  20. package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts.map +1 -1
  21. package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts +4 -0
  22. package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts.map +1 -1
  23. package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts +4 -0
  24. package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts.map +1 -1
  25. package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +9 -0
  26. package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
  27. package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts +1 -0
  28. package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts.map +1 -1
  29. package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts +1 -0
  30. package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
  31. package/dist/@types/base/configs/navigation.config/submenu/performance/cadastros.submenu.d.ts.map +1 -1
  32. package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts +26 -0
  33. package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts.map +1 -0
  34. package/dist/@types/base/hooks/index.d.ts +1 -0
  35. package/dist/@types/base/hooks/index.d.ts.map +1 -1
  36. package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts +1 -0
  37. package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts.map +1 -1
  38. package/dist/@types/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.d.ts +7 -0
  39. package/dist/@types/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.d.ts.map +1 -1
  40. package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts +2 -0
  41. package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts.map +1 -1
  42. package/dist/@types/base/utils/filters/groupFilterFields.d.ts +15 -0
  43. package/dist/@types/base/utils/filters/groupFilterFields.d.ts.map +1 -0
  44. package/dist/@types/base/utils/index.d.ts +1 -0
  45. package/dist/@types/base/utils/index.d.ts.map +1 -1
  46. package/dist/base/@types/filters/index.js +2 -0
  47. package/dist/base/@types/filters/index.js.map +1 -0
  48. package/dist/base/@types/index.js +1 -0
  49. package/dist/base/@types/index.js.map +1 -1
  50. package/dist/base/components/filters/DynamicFilterField.js +156 -0
  51. package/dist/base/components/filters/DynamicFilterField.js.map +1 -0
  52. package/dist/base/components/filters/DynamicFilterPanel.js +19 -0
  53. package/dist/base/components/filters/DynamicFilterPanel.js.map +1 -0
  54. package/dist/base/components/filters/index.js +7 -0
  55. package/dist/base/components/filters/index.js.map +1 -0
  56. package/dist/base/components/index.js +11 -6
  57. package/dist/base/components/index.js.map +1 -1
  58. package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js +1 -0
  59. package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js.map +1 -1
  60. package/dist/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.js +2 -1
  61. package/dist/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.js.map +1 -1
  62. package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js +2 -1
  63. package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js.map +1 -1
  64. package/dist/base/configs/navigation.config/submenu/performance/cadastros.submenu.js +0 -2
  65. package/dist/base/configs/navigation.config/submenu/performance/cadastros.submenu.js.map +1 -1
  66. package/dist/base/hooks/filters/useFilterMetadata.js +23 -0
  67. package/dist/base/hooks/filters/useFilterMetadata.js.map +1 -0
  68. package/dist/base/hooks/index.js +2 -0
  69. package/dist/base/hooks/index.js.map +1 -1
  70. package/dist/base/index.js +232 -223
  71. package/dist/base/index.js.map +1 -1
  72. package/dist/base/services/index.js +2 -1
  73. package/dist/base/services/modules/centralNfe/index.js +2 -1
  74. package/dist/base/services/modules/centralNfe/nfe/NfeService.js +7 -0
  75. package/dist/base/services/modules/centralNfe/nfe/NfeService.js.map +1 -1
  76. package/dist/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js +8 -0
  77. package/dist/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js.map +1 -1
  78. package/dist/base/services/modules/compras/index.js +2 -1
  79. package/dist/base/services/modules/index.js +2 -1
  80. package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js +7 -0
  81. package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js.map +1 -1
  82. package/dist/base/utils/filters/groupFilterFields.js +56 -0
  83. package/dist/base/utils/filters/groupFilterFields.js.map +1 -0
  84. package/dist/base/utils/index.js +2 -0
  85. package/dist/base/utils/index.js.map +1 -1
  86. package/lib/base/@types/filters/index.ts +87 -0
  87. package/lib/base/@types/index.ts +1 -0
  88. package/lib/base/@types/models/compras/RequisicaoCompra.ts +3 -0
  89. package/lib/base/@types/models/performance/categoria.ts +3 -1
  90. package/lib/base/components/filters/DynamicFilterField.tsx +213 -0
  91. package/lib/base/components/filters/DynamicFilterPanel.tsx +50 -0
  92. package/lib/base/components/filters/index.ts +2 -0
  93. package/lib/base/components/index.ts +4 -1
  94. package/lib/base/configs/endpoints.config/centralNfe/config/nfe.ts +1 -0
  95. package/lib/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.ts +1 -0
  96. package/lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts +2 -1
  97. package/lib/base/configs/navigation.config/submenu/performance/cadastros.submenu.ts +0 -2
  98. package/lib/base/hooks/filters/useFilterMetadata.ts +43 -0
  99. package/lib/base/hooks/index.ts +2 -1
  100. package/lib/base/services/modules/centralNfe/nfe/NfeService.ts +8 -0
  101. package/lib/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.ts +8 -0
  102. package/lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts +8 -0
  103. package/lib/base/utils/filters/groupFilterFields.ts +93 -0
  104. package/lib/base/utils/index.ts +1 -0
  105. 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":";;AAUA,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;"}
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;"}
@@ -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
+ >
@@ -1,5 +1,6 @@
1
1
  // Types exports from base
2
2
  export * from './api';
3
+ export * from './filters';
3
4
  export * from './forms';
4
5
  export * from './models';
5
6
  export * from './store';
@@ -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
  }
@@ -1,8 +1,10 @@
1
+ import { TModeloNota } from '@base/@types/models/performance/modeloNota'
2
+
1
3
  export type TCategoria = {
2
4
  id?: number
3
5
  descricao: string
4
6
  peso: number
5
- modeloNotaIds: number[]
7
+ modelosNota: TModeloNota[]
6
8
  }
7
9
 
8
10
  export type TFindMonitorCategoria = {
@@ -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
@@ -0,0 +1,2 @@
1
+ export { default as DynamicFilterField } from './DynamicFilterField'
2
+ export { default as DynamicFilterPanel } from './DynamicFilterPanel'