@erpsquad/common 1.10.73 → 1.10.75

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 (143) hide show
  1. package/dist/chunks/{ERPUIProvider-BPpcQgND.js → ERPUIProvider-Ce7EhOa_.js} +15 -10
  2. package/dist/chunks/ERPUIProvider-Ce7EhOa_.js.map +1 -0
  3. package/dist/chunks/{ERPUIProvider-DZbxFsRb.esm.js → ERPUIProvider-CmmabhgQ.esm.js} +15 -10
  4. package/dist/chunks/{ERPUIProvider-DZbxFsRb.esm.js.map → ERPUIProvider-CmmabhgQ.esm.js.map} +1 -1
  5. package/dist/chunks/{actionCreator-B1XDiSfb.esm.js → actionCreator-Cy_J6Xfp.esm.js} +2 -2
  6. package/dist/chunks/{actionCreator-B1XDiSfb.esm.js.map → actionCreator-Cy_J6Xfp.esm.js.map} +1 -1
  7. package/dist/chunks/{actionCreator-DlbJbrTk.js → actionCreator-DqVmiGzl.js} +2 -2
  8. package/dist/chunks/{actionCreator-DlbJbrTk.js.map → actionCreator-DqVmiGzl.js.map} +1 -1
  9. package/dist/chunks/{android-12-switch-DcPr9cvn.js → android-12-switch-Cruc3J1J.js} +13 -13
  10. package/dist/chunks/{android-12-switch-DcPr9cvn.js.map → android-12-switch-Cruc3J1J.js.map} +1 -1
  11. package/dist/chunks/{android-12-switch-DSM1b9TA.esm.js → android-12-switch-DPP00xjJ.esm.js} +12 -12
  12. package/dist/chunks/{android-12-switch-DSM1b9TA.esm.js.map → android-12-switch-DPP00xjJ.esm.js.map} +1 -1
  13. package/dist/chunks/{appbar-DDijzrAm.esm.js → appbar-7puZelDZ.esm.js} +105 -6
  14. package/dist/chunks/appbar-7puZelDZ.esm.js.map +1 -0
  15. package/dist/chunks/{appbar-Bf_GaMVY.js → appbar-DbazXkez.js} +105 -6
  16. package/dist/chunks/appbar-DbazXkez.js.map +1 -0
  17. package/dist/chunks/{checkbox-Jgx2gkFF.js → checkbox-DNW1SYc0.js} +3 -3
  18. package/dist/chunks/{checkbox-Jgx2gkFF.js.map → checkbox-DNW1SYc0.js.map} +1 -1
  19. package/dist/chunks/{checkbox-C5oERyEy.esm.js → checkbox-Vd4h25n2.esm.js} +3 -3
  20. package/dist/chunks/{checkbox-C5oERyEy.esm.js.map → checkbox-Vd4h25n2.esm.js.map} +1 -1
  21. package/dist/chunks/{common-BtIKVrzA.js → common-B1hGK8kQ.js} +23 -7
  22. package/dist/chunks/{common-BtIKVrzA.js.map → common-B1hGK8kQ.js.map} +1 -1
  23. package/dist/chunks/{common-D8YIf-p0.esm.js → common-BVfS06ca.esm.js} +23 -7
  24. package/dist/chunks/{common-D8YIf-p0.esm.js.map → common-BVfS06ca.esm.js.map} +1 -1
  25. package/dist/chunks/{custom-editor-DxM6_6Mt.esm.js → custom-editor-e50eHmKt.esm.js} +2 -2
  26. package/dist/chunks/{custom-editor-DxM6_6Mt.esm.js.map → custom-editor-e50eHmKt.esm.js.map} +1 -1
  27. package/dist/chunks/{custom-editor-5dpZZW_j.js → custom-editor-iUZb8s2v.js} +2 -2
  28. package/dist/chunks/{custom-editor-5dpZZW_j.js.map → custom-editor-iUZb8s2v.js.map} +1 -1
  29. package/dist/chunks/{default-data-CmARVEBW.js → default-data-B0Y8TU26.js} +14 -14
  30. package/dist/chunks/{default-data-CmARVEBW.js.map → default-data-B0Y8TU26.js.map} +1 -1
  31. package/dist/chunks/{default-data-DSbmaVFY.esm.js → default-data-DlPr1rYe.esm.js} +14 -14
  32. package/dist/chunks/{default-data-DSbmaVFY.esm.js.map → default-data-DlPr1rYe.esm.js.map} +1 -1
  33. package/dist/chunks/{form-builder-conversion-D9q6WTmq.js → form-builder-conversion-BcJXOpRp.js} +2 -2
  34. package/dist/chunks/{form-builder-conversion-D9q6WTmq.js.map → form-builder-conversion-BcJXOpRp.js.map} +1 -1
  35. package/dist/chunks/{form-builder-conversion-C2frmPH6.esm.js → form-builder-conversion-DrA9C0NQ.esm.js} +2 -2
  36. package/dist/chunks/{form-builder-conversion-C2frmPH6.esm.js.map → form-builder-conversion-DrA9C0NQ.esm.js.map} +1 -1
  37. package/dist/chunks/{form-builder-deconversion-pKIkZ_95.esm.js → form-builder-deconversion-1hYI2jWw.esm.js} +3 -3
  38. package/dist/chunks/{form-builder-deconversion-pKIkZ_95.esm.js.map → form-builder-deconversion-1hYI2jWw.esm.js.map} +1 -1
  39. package/dist/chunks/{form-builder-deconversion-x7TevuHU.js → form-builder-deconversion-BmHlW07j.js} +3 -3
  40. package/dist/chunks/{form-builder-deconversion-x7TevuHU.js.map → form-builder-deconversion-BmHlW07j.js.map} +1 -1
  41. package/dist/chunks/{fullScreen-B73ASpXc.esm.js → fullScreen-B4ZPj9dr.esm.js} +2 -2
  42. package/dist/chunks/{fullScreen-B73ASpXc.esm.js.map → fullScreen-B4ZPj9dr.esm.js.map} +1 -1
  43. package/dist/chunks/{fullScreen-GATqKdsG.js → fullScreen-BrdRBi-K.js} +2 -2
  44. package/dist/chunks/{fullScreen-GATqKdsG.js.map → fullScreen-BrdRBi-K.js.map} +1 -1
  45. package/dist/chunks/{languageContext-CsSLzEaN.js → languageContext-CANlRoA0.js} +3 -3
  46. package/dist/chunks/{languageContext-CsSLzEaN.js.map → languageContext-CANlRoA0.js.map} +1 -1
  47. package/dist/chunks/{languageContext-9Nob_HWV.esm.js → languageContext-DfIURMbF.esm.js} +3 -3
  48. package/dist/chunks/{languageContext-9Nob_HWV.esm.js.map → languageContext-DfIURMbF.esm.js.map} +1 -1
  49. package/dist/chunks/{migration-utils-2n9_gMx1.esm.js → migration-utils-D4OMb4fL.esm.js} +2 -2
  50. package/dist/chunks/{migration-utils-2n9_gMx1.esm.js.map → migration-utils-D4OMb4fL.esm.js.map} +1 -1
  51. package/dist/chunks/{migration-utils-hBeA2Gxt.js → migration-utils-Dc_6VdeJ.js} +2 -2
  52. package/dist/chunks/{migration-utils-hBeA2Gxt.js.map → migration-utils-Dc_6VdeJ.js.map} +1 -1
  53. package/dist/chunks/{page-context-_AMJB_ty.js → page-context-Cg2MyCmD.js} +3 -3
  54. package/dist/chunks/{page-context-_AMJB_ty.js.map → page-context-Cg2MyCmD.js.map} +1 -1
  55. package/dist/chunks/{page-context-C_YWMVhh.esm.js → page-context-DfmpUWuf.esm.js} +3 -3
  56. package/dist/chunks/{page-context-C_YWMVhh.esm.js.map → page-context-DfmpUWuf.esm.js.map} +1 -1
  57. package/dist/chunks/{radio-button-BYtmY0l-.js → radio-button-Bxl9UISl.js} +1 -18
  58. package/dist/chunks/radio-button-Bxl9UISl.js.map +1 -0
  59. package/dist/chunks/{radio-button-wgwiOmaZ.esm.js → radio-button-mbPNQ3rc.esm.js} +16 -33
  60. package/dist/chunks/radio-button-mbPNQ3rc.esm.js.map +1 -0
  61. package/dist/chunks/{reducer-BMzMjtRW.js → reducer-BuEwR2fM.js} +2 -2
  62. package/dist/chunks/{reducer-BMzMjtRW.js.map → reducer-BuEwR2fM.js.map} +1 -1
  63. package/dist/chunks/{reducer-CUnOsvvx.esm.js → reducer-C0cHDjmv.esm.js} +2 -2
  64. package/dist/chunks/{reducer-CUnOsvvx.esm.js.map → reducer-C0cHDjmv.esm.js.map} +1 -1
  65. package/dist/chunks/{shareSlice-D8QQItpw.js → shareSlice-BHlSQRKw.js} +2 -2
  66. package/dist/chunks/{shareSlice-D8QQItpw.js.map → shareSlice-BHlSQRKw.js.map} +1 -1
  67. package/dist/chunks/{shareSlice-DtNEq6Sr.esm.js → shareSlice-DvnaG9GO.esm.js} +2 -2
  68. package/dist/chunks/{shareSlice-DtNEq6Sr.esm.js.map → shareSlice-DvnaG9GO.esm.js.map} +1 -1
  69. package/dist/chunks/{sidebar-CGU3tdez.esm.js → sidebar-B6-JNM4K.esm.js} +5 -5
  70. package/dist/chunks/{sidebar-CGU3tdez.esm.js.map → sidebar-B6-JNM4K.esm.js.map} +1 -1
  71. package/dist/chunks/{sidebar-CobitAdp.js → sidebar-CBzmUNFw.js} +5 -5
  72. package/dist/chunks/{sidebar-CobitAdp.js.map → sidebar-CBzmUNFw.js.map} +1 -1
  73. package/dist/chunks/{sidebarScreen-R_SLQJpq.esm.js → sidebarScreen-C7gUqSYZ.esm.js} +5 -5
  74. package/dist/chunks/{sidebarScreen-R_SLQJpq.esm.js.map → sidebarScreen-C7gUqSYZ.esm.js.map} +1 -1
  75. package/dist/chunks/{sidebarScreen-Kh58mSpF.js → sidebarScreen-vIzHgQxd.js} +5 -5
  76. package/dist/chunks/{sidebarScreen-Kh58mSpF.js.map → sidebarScreen-vIzHgQxd.js.map} +1 -1
  77. package/dist/chunks/{store-BlAfdMng.js → store-6mckWhh4.js} +3 -3
  78. package/dist/chunks/{store-BlAfdMng.js.map → store-6mckWhh4.js.map} +1 -1
  79. package/dist/chunks/{store-CKCweEtz.esm.js → store-giqheYvw.esm.js} +3 -3
  80. package/dist/chunks/{store-CKCweEtz.esm.js.map → store-giqheYvw.esm.js.map} +1 -1
  81. package/dist/chunks/{tick-B4IAsV4W.js → tick-COMAwRR1.js} +18 -1
  82. package/dist/chunks/tick-COMAwRR1.js.map +1 -0
  83. package/dist/chunks/{tick-DUuDXLjB.esm.js → tick-DaxkNl7E.esm.js} +18 -1
  84. package/dist/chunks/tick-DaxkNl7E.esm.js.map +1 -0
  85. package/dist/chunks/{translations-CURTcJu7.esm.js → translations-DiE6kTBI.esm.js} +2 -2
  86. package/dist/chunks/{translations-CURTcJu7.esm.js.map → translations-DiE6kTBI.esm.js.map} +1 -1
  87. package/dist/chunks/{translations-B5xv1gxS.js → translations-vAZ7RIc7.js} +2 -2
  88. package/dist/chunks/{translations-B5xv1gxS.js.map → translations-vAZ7RIc7.js.map} +1 -1
  89. package/dist/chunks/{uom-field-wrapper-Dke2cTpR.esm.js → uom-field-wrapper-BnjRsGw2.esm.js} +16 -16
  90. package/dist/chunks/{uom-field-wrapper-Dke2cTpR.esm.js.map → uom-field-wrapper-BnjRsGw2.esm.js.map} +1 -1
  91. package/dist/chunks/{uom-field-wrapper-BAFOTp35.js → uom-field-wrapper-aR0Kqbm9.js} +17 -17
  92. package/dist/chunks/{uom-field-wrapper-BAFOTp35.js.map → uom-field-wrapper-aR0Kqbm9.js.map} +1 -1
  93. package/dist/chunks/{useAddressContact-DRv6rxkI.js → useAddressContact-3jZsdmGS.js} +6 -6
  94. package/dist/chunks/{useAddressContact-DRv6rxkI.js.map → useAddressContact-3jZsdmGS.js.map} +1 -1
  95. package/dist/chunks/{useAddressContact-jJ8XlmC_.esm.js → useAddressContact-VUXo0xxq.esm.js} +6 -6
  96. package/dist/chunks/{useAddressContact-jJ8XlmC_.esm.js.map → useAddressContact-VUXo0xxq.esm.js.map} +1 -1
  97. package/dist/chunks/{useAuth-DtiC6c_b.js → useAuth-BNR7N60-.js} +2 -2
  98. package/dist/chunks/useAuth-BNR7N60-.js.map +1 -0
  99. package/dist/chunks/{useAuth-DnwuL4k3.esm.js → useAuth-b1FMAFmO.esm.js} +2 -2
  100. package/dist/chunks/useAuth-b1FMAFmO.esm.js.map +1 -0
  101. package/dist/chunks/{useLangauge-C_Z9sEw7.js → useLangauge-DsEM05Ll.js} +2 -2
  102. package/dist/chunks/{useLangauge-C_Z9sEw7.js.map → useLangauge-DsEM05Ll.js.map} +1 -1
  103. package/dist/chunks/{useLangauge-P-Sc0U-O.esm.js → useLangauge-dxTIlPe-.esm.js} +2 -2
  104. package/dist/chunks/{useLangauge-P-Sc0U-O.esm.js.map → useLangauge-dxTIlPe-.esm.js.map} +1 -1
  105. package/dist/components/header/components/index.d.ts +1 -0
  106. package/dist/components/header/components/language-switch/index.d.ts +2 -0
  107. package/dist/components/header/components/language-switch/language-switch.d.ts +2 -0
  108. package/dist/components/index.esm.js +34 -34
  109. package/dist/components/index.js +18 -18
  110. package/dist/components/providers/ERPUIProvider.d.ts +1 -0
  111. package/dist/contexts/AuthContext.d.ts +1 -0
  112. package/dist/contexts/index.esm.js +3 -3
  113. package/dist/contexts/index.js +3 -3
  114. package/dist/hooks/index.esm.js +5 -5
  115. package/dist/hooks/index.js +5 -5
  116. package/dist/icons/index.esm.js +26 -26
  117. package/dist/icons/index.js +8 -8
  118. package/dist/index.esm.js +58 -58
  119. package/dist/index.js +32 -32
  120. package/dist/layout/index.esm.js +2 -2
  121. package/dist/layout/index.js +2 -2
  122. package/dist/redux/index.esm.js +4 -4
  123. package/dist/redux/index.js +4 -4
  124. package/dist/src/components/header/components/index.d.ts +1 -0
  125. package/dist/src/components/header/components/language-switch/index.d.ts +2 -0
  126. package/dist/src/components/header/components/language-switch/language-switch.d.ts +2 -0
  127. package/dist/src/components/providers/ERPUIProvider.d.ts +1 -0
  128. package/dist/src/contexts/AuthContext.d.ts +1 -0
  129. package/dist/style.css +43 -0
  130. package/dist/utils/index.esm.js +7 -7
  131. package/dist/utils/index.js +6 -6
  132. package/dist/views/index.esm.js +8 -8
  133. package/dist/views/index.js +7 -7
  134. package/package.json +4 -3
  135. package/dist/chunks/ERPUIProvider-BPpcQgND.js.map +0 -1
  136. package/dist/chunks/appbar-Bf_GaMVY.js.map +0 -1
  137. package/dist/chunks/appbar-DDijzrAm.esm.js.map +0 -1
  138. package/dist/chunks/radio-button-BYtmY0l-.js.map +0 -1
  139. package/dist/chunks/radio-button-wgwiOmaZ.esm.js.map +0 -1
  140. package/dist/chunks/tick-B4IAsV4W.js.map +0 -1
  141. package/dist/chunks/tick-DUuDXLjB.esm.js.map +0 -1
  142. package/dist/chunks/useAuth-DnwuL4k3.esm.js.map +0 -1
  143. package/dist/chunks/useAuth-DtiC6c_b.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"translations-CURTcJu7.esm.js","sources":["../../src/utils/calculation.ts","../../src/utils/translations.ts"],"sourcesContent":["import { getApiConfigSafe } from './api-config';\n\nexport const truncateDecimals = (num: number, decimals: number = 4) => {\n const factor = Math.pow(10, decimals);\n\treturn Math.round(num * factor) / factor;\n};\n\nexport function calculateAdditionalDiscountCrossValue(\n sourceValue: number,\n sourceField: 'percentage' | 'amount',\n total: number,\n decimals: number = 2,\n useTruncation: boolean = false\n): number {\n if (total <= 0 || sourceValue <= 0) return 0;\n if (sourceField === 'percentage') {\n const result = total * (sourceValue / 100);\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n }\n const result = (sourceValue / total) * 100;\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n}\n\nexport const calculateEntries = (\n\titems: any[],\n\texpenses?: any[],\n\tadditionalDiscountOn?: string,\n\tadditionalDiscountPercentage?: number,\n\tprovidedAdditionalDiscountAmount?: number,\n\troundOff?: boolean,\n\troundOffAmount?: number,\n promotionAmount?: number,\n decimals: number = 2,\n useTruncation: boolean = false\n) => {\n\tlet totalQuantity = 0,\n\t\ttotalDiscount = 0,\n\t\ttotalTaxAmount = 0,\n\t\ttotalAmountExcludingAll = 0,\n\t\ttotalAmountIncludingAll = 0,\n\t\tadditionalDiscountAmount = 0,\n\t\ttotalGrossAmount = 0;\n\n\tif (items.length) {\n\t\titems.forEach((item) => {\n\t\t\ttotalQuantity += Number(item?.quantity || 0);\n\t\t\ttotalDiscount += Number(item?.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll +=\n\t\t\t\tNumber(item.quantity || 0) *\n\t\t\t\tNumber(item.rate || 0);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\tif (expenses?.length) {\n\t\texpenses.forEach((item) => {\n\t\t\ttotalQuantity += 1;\n\t\t\ttotalDiscount += Number(item.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll += 1 * Number(item.rate);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\n\tlet finalAmount = totalAmountIncludingAll;\n\n\tif (additionalDiscountOn) {\n\t\tif (additionalDiscountOn === 'Net Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalAmountIncludingAll * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t} else if (additionalDiscountOn === 'Gross Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalGrossAmount * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalAmount =\n\t\tadditionalDiscountOn === 'Gross Amount'\n\t\t\t? Number(totalAmountIncludingAll) - Number(additionalDiscountAmount)\n\t\t\t: Number(totalAmountIncludingAll) - Number(additionalDiscountAmount);\n \n if(Number(promotionAmount)) {\n finalAmount = finalAmount - Number(promotionAmount)\n }\n\n\tconst actualTotalAmount = finalAmount;\n\tif (roundOff && roundOffAmount && Number(roundOffAmount)) {\n\t\tfinalAmount = Math.round(finalAmount / roundOffAmount) * roundOffAmount;\n\t}\n\tconst roundOffDifference = Number(finalAmount) - Number(actualTotalAmount);\n\tconst totalItemsExpenseDiscount = totalDiscount;\n\ttotalDiscount += Number(additionalDiscountAmount);\n\treturn {\n\t\ttotalQuantity,\n\t\ttotalDiscount,\n\t\ttotalItemsExpenseDiscount,\n\t\ttotalTaxAmount,\n\t\ttotalAmountExludingAll: totalAmountExcludingAll,\n\t\ttotalAmountIncludingAll,\n\t\tadditinoalDiscountAmount: additionalDiscountAmount,\n\t\ttotalGrossAmount,\n\t\tactualTotalAmount,\n\t\troundOffDifference,\n\t\tfinalAmount\n\t};\n};","import _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { getV1LanguagesTranslations } from \"../api-client/api.system-feature/api\";\nimport { getToken } from \"./common\";\n\nconst loadedModules = new Set<string>();\n\nfunction nestTranslation(flatObject: any) {\n const nested = {};\n const keys = Object.keys(flatObject);\n const namespaceKeys = new Set<string>();\n\n // Identify all keys that act as parent namespaces for nested objects\n keys.forEach((key) => {\n keys.forEach((otherKey) => {\n if (otherKey.startsWith(key + '.')) {\n namespaceKeys.add(key);\n }\n });\n });\n\n // Nest only the leaf keys to prevent intermediate primitive string collisions\n keys.forEach((key) => {\n if (!namespaceKeys.has(key)) {\n _.set(nested, key, flatObject[key]);\n }\n });\n\n return nested;\n}\n\nexport async function loadModuleTranslations(moduleNames: string[], i18nInstance?: any) {\n const modulesToLoad = moduleNames?.filter(m => !loadedModules.has(m)) || [];\n\n if(!modulesToLoad.length) return;\n\n const filters = `(module.in=[${modulesToLoad?.join(',')}])`;\n\n const response = await getV1LanguagesTranslations({\n filters,\n limit: 9999,\n ...getToken(),\n });\n\n const data = response?.data?.translations || [];\n\n const resources: Record<string, Record<string, string>> = {};\n\n data.forEach((module: any) => {\n module?.fields?.forEach((item: any) => {\n for (const lang in item.translation) {\n if (!resources[lang]) {\n resources[lang] = {};\n }\n resources[lang][item.slug] = item.translation[lang];\n }\n })\n });\n\n \n if (i18nInstance) {\n Object.keys(resources).forEach((lang) => {\n const nested = nestTranslation(resources[lang]);\n i18nInstance.addResourceBundle(lang, 'translation', nested, true, true);\n });\n }\n\n modulesToLoad.forEach((module) => {\n loadedModules.add(module);\n });\n}\n"],"names":["result","_a"],"mappings":"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"}
1
+ {"version":3,"file":"translations-DiE6kTBI.esm.js","sources":["../../src/utils/calculation.ts","../../src/utils/translations.ts"],"sourcesContent":["import { getApiConfigSafe } from './api-config';\n\nexport const truncateDecimals = (num: number, decimals: number = 4) => {\n const factor = Math.pow(10, decimals);\n\treturn Math.round(num * factor) / factor;\n};\n\nexport function calculateAdditionalDiscountCrossValue(\n sourceValue: number,\n sourceField: 'percentage' | 'amount',\n total: number,\n decimals: number = 2,\n useTruncation: boolean = false\n): number {\n if (total <= 0 || sourceValue <= 0) return 0;\n if (sourceField === 'percentage') {\n const result = total * (sourceValue / 100);\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n }\n const result = (sourceValue / total) * 100;\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n}\n\nexport const calculateEntries = (\n\titems: any[],\n\texpenses?: any[],\n\tadditionalDiscountOn?: string,\n\tadditionalDiscountPercentage?: number,\n\tprovidedAdditionalDiscountAmount?: number,\n\troundOff?: boolean,\n\troundOffAmount?: number,\n promotionAmount?: number,\n decimals: number = 2,\n useTruncation: boolean = false\n) => {\n\tlet totalQuantity = 0,\n\t\ttotalDiscount = 0,\n\t\ttotalTaxAmount = 0,\n\t\ttotalAmountExcludingAll = 0,\n\t\ttotalAmountIncludingAll = 0,\n\t\tadditionalDiscountAmount = 0,\n\t\ttotalGrossAmount = 0;\n\n\tif (items.length) {\n\t\titems.forEach((item) => {\n\t\t\ttotalQuantity += Number(item?.quantity || 0);\n\t\t\ttotalDiscount += Number(item?.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll +=\n\t\t\t\tNumber(item.quantity || 0) *\n\t\t\t\tNumber(item.rate || 0);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\tif (expenses?.length) {\n\t\texpenses.forEach((item) => {\n\t\t\ttotalQuantity += 1;\n\t\t\ttotalDiscount += Number(item.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll += 1 * Number(item.rate);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\n\tlet finalAmount = totalAmountIncludingAll;\n\n\tif (additionalDiscountOn) {\n\t\tif (additionalDiscountOn === 'Net Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalAmountIncludingAll * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t} else if (additionalDiscountOn === 'Gross Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalGrossAmount * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalAmount =\n\t\tadditionalDiscountOn === 'Gross Amount'\n\t\t\t? Number(totalAmountIncludingAll) - Number(additionalDiscountAmount)\n\t\t\t: Number(totalAmountIncludingAll) - Number(additionalDiscountAmount);\n \n if(Number(promotionAmount)) {\n finalAmount = finalAmount - Number(promotionAmount)\n }\n\n\tconst actualTotalAmount = finalAmount;\n\tif (roundOff && roundOffAmount && Number(roundOffAmount)) {\n\t\tfinalAmount = Math.round(finalAmount / roundOffAmount) * roundOffAmount;\n\t}\n\tconst roundOffDifference = Number(finalAmount) - Number(actualTotalAmount);\n\tconst totalItemsExpenseDiscount = totalDiscount;\n\ttotalDiscount += Number(additionalDiscountAmount);\n\treturn {\n\t\ttotalQuantity,\n\t\ttotalDiscount,\n\t\ttotalItemsExpenseDiscount,\n\t\ttotalTaxAmount,\n\t\ttotalAmountExludingAll: totalAmountExcludingAll,\n\t\ttotalAmountIncludingAll,\n\t\tadditinoalDiscountAmount: additionalDiscountAmount,\n\t\ttotalGrossAmount,\n\t\tactualTotalAmount,\n\t\troundOffDifference,\n\t\tfinalAmount\n\t};\n};","import _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { getV1LanguagesTranslations } from \"../api-client/api.system-feature/api\";\nimport { getToken } from \"./common\";\n\nconst loadedModules = new Set<string>();\n\nfunction nestTranslation(flatObject: any) {\n const nested = {};\n const keys = Object.keys(flatObject);\n const namespaceKeys = new Set<string>();\n\n // Identify all keys that act as parent namespaces for nested objects\n keys.forEach((key) => {\n keys.forEach((otherKey) => {\n if (otherKey.startsWith(key + '.')) {\n namespaceKeys.add(key);\n }\n });\n });\n\n // Nest only the leaf keys to prevent intermediate primitive string collisions\n keys.forEach((key) => {\n if (!namespaceKeys.has(key)) {\n _.set(nested, key, flatObject[key]);\n }\n });\n\n return nested;\n}\n\nexport async function loadModuleTranslations(moduleNames: string[], i18nInstance?: any) {\n const modulesToLoad = moduleNames?.filter(m => !loadedModules.has(m)) || [];\n\n if(!modulesToLoad.length) return;\n\n const filters = `(module.in=[${modulesToLoad?.join(',')}])`;\n\n const response = await getV1LanguagesTranslations({\n filters,\n limit: 9999,\n ...getToken(),\n });\n\n const data = response?.data?.translations || [];\n\n const resources: Record<string, Record<string, string>> = {};\n\n data.forEach((module: any) => {\n module?.fields?.forEach((item: any) => {\n for (const lang in item.translation) {\n if (!resources[lang]) {\n resources[lang] = {};\n }\n resources[lang][item.slug] = item.translation[lang];\n }\n })\n });\n\n \n if (i18nInstance) {\n Object.keys(resources).forEach((lang) => {\n const nested = nestTranslation(resources[lang]);\n i18nInstance.addResourceBundle(lang, 'translation', nested, true, true);\n });\n }\n\n modulesToLoad.forEach((module) => {\n loadedModules.add(module);\n });\n}\n"],"names":["result","_a"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  const apiConfig = require("./api-config-DXwDMFn-.js");
3
3
  const _ = require("lodash");
4
4
  const api = require("./api-CrXXYiZ2.js");
5
- const common = require("./common-BtIKVrzA.js");
5
+ const common = require("./common-B1hGK8kQ.js");
6
6
  const truncateDecimals = (num, decimals = 4) => {
7
7
  const factor = Math.pow(10, decimals);
8
8
  return Math.round(num * factor) / factor;
@@ -142,4 +142,4 @@ exports.calculateAdditionalDiscountCrossValue = calculateAdditionalDiscountCross
142
142
  exports.calculateEntries = calculateEntries;
143
143
  exports.loadModuleTranslations = loadModuleTranslations;
144
144
  exports.truncateDecimals = truncateDecimals;
145
- //# sourceMappingURL=translations-B5xv1gxS.js.map
145
+ //# sourceMappingURL=translations-vAZ7RIc7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"translations-B5xv1gxS.js","sources":["../../src/utils/calculation.ts","../../src/utils/translations.ts"],"sourcesContent":["import { getApiConfigSafe } from './api-config';\n\nexport const truncateDecimals = (num: number, decimals: number = 4) => {\n const factor = Math.pow(10, decimals);\n\treturn Math.round(num * factor) / factor;\n};\n\nexport function calculateAdditionalDiscountCrossValue(\n sourceValue: number,\n sourceField: 'percentage' | 'amount',\n total: number,\n decimals: number = 2,\n useTruncation: boolean = false\n): number {\n if (total <= 0 || sourceValue <= 0) return 0;\n if (sourceField === 'percentage') {\n const result = total * (sourceValue / 100);\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n }\n const result = (sourceValue / total) * 100;\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n}\n\nexport const calculateEntries = (\n\titems: any[],\n\texpenses?: any[],\n\tadditionalDiscountOn?: string,\n\tadditionalDiscountPercentage?: number,\n\tprovidedAdditionalDiscountAmount?: number,\n\troundOff?: boolean,\n\troundOffAmount?: number,\n promotionAmount?: number,\n decimals: number = 2,\n useTruncation: boolean = false\n) => {\n\tlet totalQuantity = 0,\n\t\ttotalDiscount = 0,\n\t\ttotalTaxAmount = 0,\n\t\ttotalAmountExcludingAll = 0,\n\t\ttotalAmountIncludingAll = 0,\n\t\tadditionalDiscountAmount = 0,\n\t\ttotalGrossAmount = 0;\n\n\tif (items.length) {\n\t\titems.forEach((item) => {\n\t\t\ttotalQuantity += Number(item?.quantity || 0);\n\t\t\ttotalDiscount += Number(item?.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll +=\n\t\t\t\tNumber(item.quantity || 0) *\n\t\t\t\tNumber(item.rate || 0);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\tif (expenses?.length) {\n\t\texpenses.forEach((item) => {\n\t\t\ttotalQuantity += 1;\n\t\t\ttotalDiscount += Number(item.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll += 1 * Number(item.rate);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\n\tlet finalAmount = totalAmountIncludingAll;\n\n\tif (additionalDiscountOn) {\n\t\tif (additionalDiscountOn === 'Net Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalAmountIncludingAll * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t} else if (additionalDiscountOn === 'Gross Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalGrossAmount * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalAmount =\n\t\tadditionalDiscountOn === 'Gross Amount'\n\t\t\t? Number(totalAmountIncludingAll) - Number(additionalDiscountAmount)\n\t\t\t: Number(totalAmountIncludingAll) - Number(additionalDiscountAmount);\n \n if(Number(promotionAmount)) {\n finalAmount = finalAmount - Number(promotionAmount)\n }\n\n\tconst actualTotalAmount = finalAmount;\n\tif (roundOff && roundOffAmount && Number(roundOffAmount)) {\n\t\tfinalAmount = Math.round(finalAmount / roundOffAmount) * roundOffAmount;\n\t}\n\tconst roundOffDifference = Number(finalAmount) - Number(actualTotalAmount);\n\tconst totalItemsExpenseDiscount = totalDiscount;\n\ttotalDiscount += Number(additionalDiscountAmount);\n\treturn {\n\t\ttotalQuantity,\n\t\ttotalDiscount,\n\t\ttotalItemsExpenseDiscount,\n\t\ttotalTaxAmount,\n\t\ttotalAmountExludingAll: totalAmountExcludingAll,\n\t\ttotalAmountIncludingAll,\n\t\tadditinoalDiscountAmount: additionalDiscountAmount,\n\t\ttotalGrossAmount,\n\t\tactualTotalAmount,\n\t\troundOffDifference,\n\t\tfinalAmount\n\t};\n};","import _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { getV1LanguagesTranslations } from \"../api-client/api.system-feature/api\";\nimport { getToken } from \"./common\";\n\nconst loadedModules = new Set<string>();\n\nfunction nestTranslation(flatObject: any) {\n const nested = {};\n const keys = Object.keys(flatObject);\n const namespaceKeys = new Set<string>();\n\n // Identify all keys that act as parent namespaces for nested objects\n keys.forEach((key) => {\n keys.forEach((otherKey) => {\n if (otherKey.startsWith(key + '.')) {\n namespaceKeys.add(key);\n }\n });\n });\n\n // Nest only the leaf keys to prevent intermediate primitive string collisions\n keys.forEach((key) => {\n if (!namespaceKeys.has(key)) {\n _.set(nested, key, flatObject[key]);\n }\n });\n\n return nested;\n}\n\nexport async function loadModuleTranslations(moduleNames: string[], i18nInstance?: any) {\n const modulesToLoad = moduleNames?.filter(m => !loadedModules.has(m)) || [];\n\n if(!modulesToLoad.length) return;\n\n const filters = `(module.in=[${modulesToLoad?.join(',')}])`;\n\n const response = await getV1LanguagesTranslations({\n filters,\n limit: 9999,\n ...getToken(),\n });\n\n const data = response?.data?.translations || [];\n\n const resources: Record<string, Record<string, string>> = {};\n\n data.forEach((module: any) => {\n module?.fields?.forEach((item: any) => {\n for (const lang in item.translation) {\n if (!resources[lang]) {\n resources[lang] = {};\n }\n resources[lang][item.slug] = item.translation[lang];\n }\n })\n });\n\n \n if (i18nInstance) {\n Object.keys(resources).forEach((lang) => {\n const nested = nestTranslation(resources[lang]);\n i18nInstance.addResourceBundle(lang, 'translation', nested, true, true);\n });\n }\n\n modulesToLoad.forEach((module) => {\n loadedModules.add(module);\n });\n}\n"],"names":["result","getApiConfigSafe","getV1LanguagesTranslations","getToken","module","_a"],"mappings":"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"}
1
+ {"version":3,"file":"translations-vAZ7RIc7.js","sources":["../../src/utils/calculation.ts","../../src/utils/translations.ts"],"sourcesContent":["import { getApiConfigSafe } from './api-config';\n\nexport const truncateDecimals = (num: number, decimals: number = 4) => {\n const factor = Math.pow(10, decimals);\n\treturn Math.round(num * factor) / factor;\n};\n\nexport function calculateAdditionalDiscountCrossValue(\n sourceValue: number,\n sourceField: 'percentage' | 'amount',\n total: number,\n decimals: number = 2,\n useTruncation: boolean = false\n): number {\n if (total <= 0 || sourceValue <= 0) return 0;\n if (sourceField === 'percentage') {\n const result = total * (sourceValue / 100);\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n }\n const result = (sourceValue / total) * 100;\n if (getApiConfigSafe()?.countryEnv === 'ksa') return result;\n return useTruncation ? truncateDecimals(result, decimals) : Number(result.toFixed(decimals));\n}\n\nexport const calculateEntries = (\n\titems: any[],\n\texpenses?: any[],\n\tadditionalDiscountOn?: string,\n\tadditionalDiscountPercentage?: number,\n\tprovidedAdditionalDiscountAmount?: number,\n\troundOff?: boolean,\n\troundOffAmount?: number,\n promotionAmount?: number,\n decimals: number = 2,\n useTruncation: boolean = false\n) => {\n\tlet totalQuantity = 0,\n\t\ttotalDiscount = 0,\n\t\ttotalTaxAmount = 0,\n\t\ttotalAmountExcludingAll = 0,\n\t\ttotalAmountIncludingAll = 0,\n\t\tadditionalDiscountAmount = 0,\n\t\ttotalGrossAmount = 0;\n\n\tif (items.length) {\n\t\titems.forEach((item) => {\n\t\t\ttotalQuantity += Number(item?.quantity || 0);\n\t\t\ttotalDiscount += Number(item?.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll +=\n\t\t\t\tNumber(item.quantity || 0) *\n\t\t\t\tNumber(item.rate || 0);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\tif (expenses?.length) {\n\t\texpenses.forEach((item) => {\n\t\t\ttotalQuantity += 1;\n\t\t\ttotalDiscount += Number(item.discount_amount || 0);\n\t\t\ttotalAmountIncludingAll += Number(\n\t\t\t\titem.total_amount || 0\n\t\t\t);\n\t\t\ttotalTaxAmount += Number(item.tax_amount);\n\t\t\ttotalAmountExcludingAll += 1 * Number(item.rate);\n\t\t\ttotalGrossAmount += Number(item.gross_amount || 0);\n\t\t});\n\t}\n\n\tlet finalAmount = totalAmountIncludingAll;\n\n\tif (additionalDiscountOn) {\n\t\tif (additionalDiscountOn === 'Net Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalAmountIncludingAll * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t} else if (additionalDiscountOn === 'Gross Amount') {\n\t\t\tif (\n\t\t\t\tadditionalDiscountPercentage &&\n\t\t\t\tNumber(additionalDiscountPercentage) !== 0\n\t\t\t) {\n\t\t\t\tadditionalDiscountAmount =\n\t\t\t\t\ttotalGrossAmount * (additionalDiscountPercentage / 100);\n\t\t\t} else {\n\t\t\t\tadditionalDiscountAmount = providedAdditionalDiscountAmount || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalAmount =\n\t\tadditionalDiscountOn === 'Gross Amount'\n\t\t\t? Number(totalAmountIncludingAll) - Number(additionalDiscountAmount)\n\t\t\t: Number(totalAmountIncludingAll) - Number(additionalDiscountAmount);\n \n if(Number(promotionAmount)) {\n finalAmount = finalAmount - Number(promotionAmount)\n }\n\n\tconst actualTotalAmount = finalAmount;\n\tif (roundOff && roundOffAmount && Number(roundOffAmount)) {\n\t\tfinalAmount = Math.round(finalAmount / roundOffAmount) * roundOffAmount;\n\t}\n\tconst roundOffDifference = Number(finalAmount) - Number(actualTotalAmount);\n\tconst totalItemsExpenseDiscount = totalDiscount;\n\ttotalDiscount += Number(additionalDiscountAmount);\n\treturn {\n\t\ttotalQuantity,\n\t\ttotalDiscount,\n\t\ttotalItemsExpenseDiscount,\n\t\ttotalTaxAmount,\n\t\ttotalAmountExludingAll: totalAmountExcludingAll,\n\t\ttotalAmountIncludingAll,\n\t\tadditinoalDiscountAmount: additionalDiscountAmount,\n\t\ttotalGrossAmount,\n\t\tactualTotalAmount,\n\t\troundOffDifference,\n\t\tfinalAmount\n\t};\n};","import _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { getV1LanguagesTranslations } from \"../api-client/api.system-feature/api\";\nimport { getToken } from \"./common\";\n\nconst loadedModules = new Set<string>();\n\nfunction nestTranslation(flatObject: any) {\n const nested = {};\n const keys = Object.keys(flatObject);\n const namespaceKeys = new Set<string>();\n\n // Identify all keys that act as parent namespaces for nested objects\n keys.forEach((key) => {\n keys.forEach((otherKey) => {\n if (otherKey.startsWith(key + '.')) {\n namespaceKeys.add(key);\n }\n });\n });\n\n // Nest only the leaf keys to prevent intermediate primitive string collisions\n keys.forEach((key) => {\n if (!namespaceKeys.has(key)) {\n _.set(nested, key, flatObject[key]);\n }\n });\n\n return nested;\n}\n\nexport async function loadModuleTranslations(moduleNames: string[], i18nInstance?: any) {\n const modulesToLoad = moduleNames?.filter(m => !loadedModules.has(m)) || [];\n\n if(!modulesToLoad.length) return;\n\n const filters = `(module.in=[${modulesToLoad?.join(',')}])`;\n\n const response = await getV1LanguagesTranslations({\n filters,\n limit: 9999,\n ...getToken(),\n });\n\n const data = response?.data?.translations || [];\n\n const resources: Record<string, Record<string, string>> = {};\n\n data.forEach((module: any) => {\n module?.fields?.forEach((item: any) => {\n for (const lang in item.translation) {\n if (!resources[lang]) {\n resources[lang] = {};\n }\n resources[lang][item.slug] = item.translation[lang];\n }\n })\n });\n\n \n if (i18nInstance) {\n Object.keys(resources).forEach((lang) => {\n const nested = nestTranslation(resources[lang]);\n i18nInstance.addResourceBundle(lang, 'translation', nested, true, true);\n });\n }\n\n modulesToLoad.forEach((module) => {\n loadedModules.add(module);\n });\n}\n"],"names":["result","getApiConfigSafe","getV1LanguagesTranslations","getToken","module","_a"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
2
2
  import { useFieldArray, Controller, useForm, useWatch, useFormContext } from "react-hook-form";
3
3
  import { P as PropTypes, e as _objectWithoutPropertiesLoose, _ as _extends$1, g as generateUtilityClass, j as capitalize, u as useDefaultProps, k as interopRequireDefaultExports, y as lighten_1, z as darken_1, f as alpha_1 } from "./identifier-0SZUhw_A.esm.js";
4
- import { i as default_1$3, T as Typography, e as useForkRef, o as ownerWindow, d as useEnhancedEffect, h as debounce, p as isMuiElement, u as useAuth, q as useControlled, r as requireCreateSvgIcon } from "./useAuth-DnwuL4k3.esm.js";
5
- import { aq as default_1$4, w as DynamicSelect, h as DateTimePicker, D as DatePicker$1, ar as useThemeProps, A as Accordion$1, a8 as Select, f as ChipOrPlaceholder$1, i as DropdownButton, s as DynamicPhone, u as DynamicSearchSelect, k as DynamicCheckBox, af as TitleDropdownButton, T as HeaderCard, ad as TabBar, as as default_1$5, a7 as SearchableSelect, at as Chip$1, ae as TimePicker, aj as UploadMedia, a3 as PhoneInput, Z as ModalLoader, Y as MaterialTable, m as DynamicDate, z as DynamicTime, C as ChipGenerator, M as Footer, F as Fallback, au as IconButton$1, av as TabContext, aw as TabList, ax as Tab, ay as TabPanel, az as default_1$9, a as ActionBar, aA as SwitchBase } from "./android-12-switch-DSM1b9TA.esm.js";
6
- import { D as DynamicInput, z as Typography$1, b as Avatar, F as o, M as Modal, c as ConfirmPopUp, B as Box$1, d as Toast, u as useTheme$1, S as SearchBar, G as resolveComponentProps, I as mergeSlotProps, J as appendOwnerState, P as Paper$1, n as chainPropTypes, f as ButtonBase$1, x as default_1$6, T as TextField$1, e as Tooltip$1, E as default_1$7, w as default_1$8, K as Menu$2, N as MenuItem$1, p as useRtl, y as List$1, t as ListItem, O as ListItemText$1, Q as refType } from "./appbar-DDijzrAm.esm.js";
4
+ import { i as default_1$3, T as Typography, e as useForkRef, o as ownerWindow, d as useEnhancedEffect, h as debounce, p as isMuiElement, u as useAuth, q as useControlled, r as requireCreateSvgIcon } from "./useAuth-b1FMAFmO.esm.js";
5
+ import { aq as default_1$4, w as DynamicSelect, h as DateTimePicker, D as DatePicker$1, ar as useThemeProps, A as Accordion$1, a8 as Select, f as ChipOrPlaceholder$1, i as DropdownButton, s as DynamicPhone, u as DynamicSearchSelect, k as DynamicCheckBox, af as TitleDropdownButton, T as HeaderCard, ad as TabBar, as as default_1$5, a7 as SearchableSelect, at as Chip$1, ae as TimePicker, aj as UploadMedia, a3 as PhoneInput, Z as ModalLoader, Y as MaterialTable, m as DynamicDate, z as DynamicTime, C as ChipGenerator, M as Footer, F as Fallback, au as IconButton$1, av as TabContext, aw as TabList, ax as Tab, ay as TabPanel, az as default_1$9, a as ActionBar, aA as SwitchBase } from "./android-12-switch-DPP00xjJ.esm.js";
6
+ import { D as DynamicInput, z as Typography$1, b as Avatar, F as o, M as Modal, c as ConfirmPopUp, B as Box$1, d as Toast, u as useTheme$1, S as SearchBar, G as resolveComponentProps, I as mergeSlotProps, J as appendOwnerState, P as Paper$1, n as chainPropTypes, f as ButtonBase$1, x as default_1$6, T as TextField$1, e as Tooltip$1, E as default_1$7, w as default_1$8, K as Menu$2, N as MenuItem$1, p as useRtl, y as List$1, t as ListItem, O as ListItemText$1, Q as refType } from "./appbar-7puZelDZ.esm.js";
7
7
  import * as React from "react";
8
8
  import React__default, { useState, lazy, useMemo, useRef, useEffect, useCallback, useLayoutEffect, useContext, createElement, createContext, cloneElement } from "react";
9
9
  import DatePicker from "react-datepicker";
@@ -11,10 +11,10 @@ import DatePicker from "react-datepicker";
11
11
  import { C as CalenderIcon, i as images } from "./images-DvZ6-RV8.esm.js";
12
12
  import { KeyboardArrowLeft, KeyboardArrowRight, Close, ChevronLeft, ChevronRight, Add, AccessTimeRounded, KeyboardArrowUp, KeyboardArrowDown, Clear } from "@mui/icons-material";
13
13
  import { Box, styled as styled$1, TextField, DialogTitle, IconButton, DialogContent, MenuItem, DialogActions, CircularProgress, FormControlLabel, Checkbox as Checkbox$2, Grid, ButtonBase, useTheme, useMediaQuery, Drawer, Tooltip, Collapse, Divider, ButtonGroup, Button as Button$1, Popper, Grow, Paper, ClickAwayListener, Menu as Menu$1, ListItemIcon, ListItemText, OutlinedInput, InputAdornment, Popover, Dialog, FormHelperText, Card as Card$1, CardContent as CardContent$1, TableRow, TableCell, TableContainer, Table, TableHead, TableBody } from "@mui/material";
14
- import { u as useLanguage } from "./useLangauge-P-Sc0U-O.esm.js";
14
+ import { u as useLanguage } from "./useLangauge-dxTIlPe-.esm.js";
15
15
  import dayjs from "dayjs";
16
16
  /* empty css */
17
- import { aX as formatText, at as getToken, W as formatLabel, a1 as generateFields, aa as getErrorMessage, G as fetchRentalResponseItems, H as fetchRfqItemsByIdForResponse, aL as responseItemDetailsColumns, _ as formatTimeForPayload, R as formatDateForPayload, aA as mapApiPayload, Q as formatDate, r as createdOnAndBy, aR as toFixedWithNumbers } from "./common-D8YIf-p0.esm.js";
17
+ import { aX as formatText, at as getToken, W as formatLabel, a1 as generateFields, aa as getErrorMessage, G as fetchRentalResponseItems, H as fetchRfqItemsByIdForResponse, aL as responseItemDetailsColumns, _ as formatTimeForPayload, R as formatDateForPayload, aA as mapApiPayload, Q as formatDate, r as createdOnAndBy, aR as toFixedWithNumbers } from "./common-BVfS06ca.esm.js";
18
18
  import { useTranslation } from "react-i18next";
19
19
  import { g as generateUtilityClasses, a as clsx, b as composeClasses, s as styled, f as reactIsExports, c as createSvgIcon, r as rootShouldForwardProp } from "./notification-_WEc_EZI.esm.js";
20
20
  import { Sparkles, X, TrendingUp, AlertTriangle, Clock, SendHorizontal, Check, Copy, ChevronUp, ThumbsUp, ThumbsDown, ChevronDown } from "lucide-react";
@@ -23,15 +23,15 @@ import { marked } from "marked";
23
23
  import { by as streamV1AiFeatureChat, aF as getV1User, bz as getV1ReportsScheduleReport, J as getV1ReportsReportList, bA as deleteV1ReportsScheduleReportId, bB as putV1ReportsUpdateScheduleReportId, bC as postV1ReportsScheduleReport, y as getV1FormBuilder } from "./api-z4kM0HGD.esm.js";
24
24
  import { b as getApiConfigSafe, a as auth, g as getApiConfig } from "./api-config-GOys-syK.esm.js";
25
25
  import * as Yup from "yup";
26
- import { C as Checkbox$1, f as usePages, b as useDeepMemo, a as useApi } from "./checkbox-C5oERyEy.esm.js";
26
+ import { C as Checkbox$1, f as usePages, b as useDeepMemo, a as useApi } from "./checkbox-Vd4h25n2.esm.js";
27
27
  import { B as Button } from "./button-CiFUSruA.esm.js";
28
- import { C as Chip, M as Menu, t as transformTableColumns, d as formateValueByType, r as renderEmptyRowsFallback } from "./form-builder-deconversion-pKIkZ_95.esm.js";
29
- import { M as MoreIcon, p as Filter, c as ArrowUpDown, f as Export, o as Calendar$1, a as ArrowDown } from "./radio-button-wgwiOmaZ.esm.js";
28
+ import { C as Chip, M as Menu, t as transformTableColumns, d as formateValueByType, r as renderEmptyRowsFallback } from "./form-builder-deconversion-1hYI2jWw.esm.js";
29
+ import { M as MoreIcon, o as Filter, b as ArrowUpDown, e as Export, n as Calendar$1 } from "./radio-button-mbPNQ3rc.esm.js";
30
30
  import { enqueueSnackbar, useSnackbar, SnackbarProvider } from "notistack";
31
31
  import { useDispatch } from "react-redux";
32
- import { a as apiHelper, c as useGenericDataFetcher, b as useAppTranslations } from "./ERPUIProvider-DZbxFsRb.esm.js";
32
+ import { a as apiHelper, c as useGenericDataFetcher, b as useAppTranslations } from "./ERPUIProvider-CmmabhgQ.esm.js";
33
33
  import Board from "@asseinfo/react-kanban";
34
- import { a as calculateEntries, t as truncateDecimals } from "./translations-CURTcJu7.esm.js";
34
+ import { a as calculateEntries, t as truncateDecimals } from "./translations-DiE6kTBI.esm.js";
35
35
  import FullCalendar from "@fullcalendar/react";
36
36
  import dayGridPlugin from "@fullcalendar/daygrid";
37
37
  import listPlugin from "@fullcalendar/list";
@@ -40,20 +40,20 @@ import timeGridPlugin from "@fullcalendar/timegrid";
40
40
  import resourceTimeGridPlugin from "@fullcalendar/resource-timegrid";
41
41
  import timelinePlugin from "@fullcalendar/timeline";
42
42
  import resourceTimelinePlugin from "@fullcalendar/resource-timeline";
43
- import { E as EyeOff } from "./tick-DUuDXLjB.esm.js";
43
+ import { E as EyeOff, A as ArrowDown } from "./tick-DaxkNl7E.esm.js";
44
44
  import { E as Eye } from "./eye-PU88lR34.esm.js";
45
45
  import { j as Copy$1, e as ArrowUp } from "./arrow-up-BDkqlEB_.esm.js";
46
46
  import ReactFlagsSelect from "react-flags-select";
47
47
  import { useParams, useLocation, useNavigate } from "react-router-dom";
48
48
  import { g as getEntityId, R as RANGE, a as handleCompareDateRangeSync, h as handleCompareDateRange } from "./navigation-utils-ChG-fDRf.esm.js";
49
- import { E as ErpLoader } from "./page-context-C_YWMVhh.esm.js";
49
+ import { E as ErpLoader } from "./page-context-DfmpUWuf.esm.js";
50
50
  import { Gantt, ViewMode } from "gantt-task-react";
51
51
  import { DateRange, Calendar } from "react-date-range";
52
52
  import { v as viewTypes } from "./action-bar-BsXTcYpL.esm.js";
53
53
  import DataEditor, { GridCellKind } from "@glideapps/glide-data-grid";
54
54
  import { useExtraCells } from "@glideapps/glide-data-grid-cells";
55
55
  import { createPortal } from "react-dom";
56
- import { C as Collapse$1 } from "./sidebar-CGU3tdez.esm.js";
56
+ import { C as Collapse$1 } from "./sidebar-B6-JNM4K.esm.js";
57
57
  import { useMaterialReactTable, MaterialReactTable } from "material-react-table";
58
58
  import { R as RecgtangleIcon, C as CheckBoxIcon$1, T as Trash, E as Edit } from "./trash-Dgfsw2UY.esm.js";
59
59
  import { C as Close$1 } from "./document-CFCrnZGh.esm.js";
@@ -62,7 +62,7 @@ import { P as PathnameDocument } from "./modules-CDt6nd-Q.esm.js";
62
62
  import { f as PathnameRental, b as PathnameCrm, e as PathnamePurchase, d as PathnameManufacturing, c as PathnameInventory, a as PathnameAccounting } from "./pathname.rental-Dvo5a732.esm.js";
63
63
  import { a as PathnameUsers } from "./route-page-map-CwkJKqEq.esm.js";
64
64
  import { u as useAppDispatch, a as useAppSelector } from "./hooks-Cj9Yhy-E.esm.js";
65
- import { f as fetchCompanies } from "./store-CKCweEtz.esm.js";
65
+ import { f as fetchCompanies } from "./store-giqheYvw.esm.js";
66
66
  import { useDropzone } from "react-dropzone";
67
67
  /* empty css */
68
68
  import { css, keyframes } from "@emotion/react";
@@ -916,7 +916,7 @@ DynamicDateTime.propTypes = {
916
916
  min_date: PropTypes.any,
917
917
  max_date: PropTypes.any
918
918
  };
919
- const CustomEditor = lazy(() => import("./custom-editor-DxM6_6Mt.esm.js"));
919
+ const CustomEditor = lazy(() => import("./custom-editor-e50eHmKt.esm.js"));
920
920
  const DyanmicTextEditor = ({
921
921
  formControl,
922
922
  name,
@@ -16974,4 +16974,4 @@ export {
16974
16974
  DyanmicTextEditor as y,
16975
16975
  DynamicDateRange as z
16976
16976
  };
16977
- //# sourceMappingURL=uom-field-wrapper-Dke2cTpR.esm.js.map
16977
+ //# sourceMappingURL=uom-field-wrapper-BnjRsGw2.esm.js.map