@infuro/cms-core 1.0.68 → 1.0.70

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 (153) hide show
  1. package/dist/{OrderTrackPage-W3J6WIG2.js → OrderTrackPage-VBZUVZOU.js} +1 -1
  2. package/dist/{OrderTrackPage-Z6FCJQYY.cjs → OrderTrackPage-VFIXWJOW.cjs} +4 -4
  3. package/dist/admin.cjs +2831 -2680
  4. package/dist/admin.js +1590 -1439
  5. package/dist/api.cjs +57 -57
  6. package/dist/api.js +24 -24
  7. package/dist/auth.cjs +62 -62
  8. package/dist/auth.js +6 -6
  9. package/dist/{chunk-XJNNOSJR.js → chunk-2BNVRFUQ.js} +1 -1
  10. package/dist/chunk-2JHGIWH7.cjs +2700 -0
  11. package/dist/{chunk-3DZRIZOD.cjs → chunk-3ASNJS2H.cjs} +3 -3
  12. package/dist/{chunk-N4LBZXBG.js → chunk-3LF4RYAJ.js} +360 -30
  13. package/dist/{chunk-7NMT3GBR.cjs → chunk-3LQS4ATQ.cjs} +4 -4
  14. package/dist/{chunk-P6S4XFZO.cjs → chunk-47G65M5Q.cjs} +2 -2
  15. package/dist/{chunk-UMC7W5G3.cjs → chunk-4MNVIGVJ.cjs} +11 -11
  16. package/dist/{chunk-OY2YTBMP.cjs → chunk-4WZNRVEZ.cjs} +3 -3
  17. package/dist/chunk-5BKT4CS5.js +28 -0
  18. package/dist/{chunk-IKTBZJHT.js → chunk-5DSY3GQI.js} +1 -1
  19. package/dist/{chunk-AYERBA7I.js → chunk-5NVGWJSY.js} +1 -1
  20. package/dist/{chunk-HF3L2GIT.cjs → chunk-5YMKJ3TH.cjs} +16 -16
  21. package/dist/{chunk-MYUGQHU4.js → chunk-7NQMGB2S.js} +162 -51
  22. package/dist/{chunk-SYBOCAWB.js → chunk-7QJI56OL.js} +1 -1
  23. package/dist/{chunk-DBPSJYLZ.js → chunk-BK5XW5XH.js} +1 -1
  24. package/dist/{chunk-SUUD7OUG.cjs → chunk-BQQMTQ4C.cjs} +27 -27
  25. package/dist/{chunk-6YOQ7G5O.js → chunk-CFUSYGSA.js} +1 -1
  26. package/dist/{chunk-OOTLNH63.cjs → chunk-CIZZX57T.cjs} +2 -2
  27. package/dist/{chunk-5NOZSG6J.js → chunk-CJY2HUJC.js} +20 -20
  28. package/dist/{chunk-HBUV73RB.cjs → chunk-CKTRA3Q2.cjs} +81 -81
  29. package/dist/{chunk-7L6KWI7S.cjs → chunk-CTTV375J.cjs} +13 -13
  30. package/dist/{chunk-2IAXTKQN.cjs → chunk-DZNWS2MM.cjs} +2 -2
  31. package/dist/{chunk-M5GPOPGX.cjs → chunk-E62LKM6Z.cjs} +2 -2
  32. package/dist/{chunk-CRFV5WJK.js → chunk-ECNYZG6T.js} +1 -1
  33. package/dist/{chunk-OVTOP42W.js → chunk-ECUGNV2I.js} +2 -58
  34. package/dist/{chunk-TZEMLHSP.cjs → chunk-EYUBL7YH.cjs} +7 -7
  35. package/dist/{chunk-OV5TRZET.cjs → chunk-FNLF6G2N.cjs} +27 -27
  36. package/dist/{chunk-SKJH7PX4.js → chunk-HZZTDM5J.js} +3 -3
  37. package/dist/{chunk-TJ2MIQUT.cjs → chunk-JRW3GQD4.cjs} +4 -4
  38. package/dist/{chunk-3K5AIEIZ.js → chunk-JYRFSFXH.js} +1 -1
  39. package/dist/{chunk-GWDI752Q.js → chunk-K6JT7BKY.js} +59 -2
  40. package/dist/{chunk-WKDBMDUX.js → chunk-K6RXCLD5.js} +1 -1
  41. package/dist/{chunk-PA6YDMFZ.cjs → chunk-K742UE6S.cjs} +13 -12
  42. package/dist/{chunk-WFMVD567.cjs → chunk-KB7EBYPR.cjs} +9 -67
  43. package/dist/{chunk-H3IVLIPR.cjs → chunk-KJB5LBFQ.cjs} +63 -4
  44. package/dist/{chunk-O4AFPDQ4.cjs → chunk-LCZZ3S4I.cjs} +49 -49
  45. package/dist/{chunk-7JCCPQEF.js → chunk-LJ5C4RBF.js} +3 -3
  46. package/dist/{chunk-EIZKW2PF.js → chunk-LY7CDNC6.js} +1 -1
  47. package/dist/{chunk-MQBT33IV.js → chunk-MGT4DJ2D.js} +1 -1
  48. package/dist/{chunk-GN4LKG4V.cjs → chunk-NIBEGDD4.cjs} +18 -18
  49. package/dist/{chunk-ZY64VJMS.js → chunk-NQF6H656.js} +2 -2
  50. package/dist/{chunk-22XKONB5.cjs → chunk-OP624LWU.cjs} +1204 -1093
  51. package/dist/{chunk-ZIT4IP6N.js → chunk-PQJIJ4ZX.js} +6 -6
  52. package/dist/{chunk-HY3AXLOI.cjs → chunk-PRXVSSIF.cjs} +13 -13
  53. package/dist/{chunk-TDV6EJHV.js → chunk-PRZOLCFW.js} +2 -2
  54. package/dist/{chunk-VM6OVUUM.cjs → chunk-QN6PZLAP.cjs} +40 -40
  55. package/dist/{chunk-UPLVMVRX.cjs → chunk-RQCXRCYM.cjs} +2 -2
  56. package/dist/{chunk-Z5G54EGD.js → chunk-SCE2GIKH.js} +5 -5
  57. package/dist/{chunk-WUQAOTHA.js → chunk-SERRQ736.js} +1 -1
  58. package/dist/{chunk-SMHQV3WL.cjs → chunk-TTOEY7AH.cjs} +496 -166
  59. package/dist/{chunk-FLUF2GZH.js → chunk-W2ZTGLUH.js} +2 -1
  60. package/dist/{chunk-JC6DLWTE.js → chunk-WQZ4AH2P.js} +1 -1
  61. package/dist/{chunk-D5FBNKQM.cjs → chunk-WXH3GMCF.cjs} +8 -8
  62. package/dist/chunk-XHPRD45G.cjs +32 -0
  63. package/dist/{chunk-THL5JDWJ.cjs → chunk-Y54WDY2O.cjs} +2 -2
  64. package/dist/{chunk-YRCKEGL2.js → chunk-YDMHG6BA.js} +1 -1
  65. package/dist/chunk-YHVA5NHI.js +2698 -0
  66. package/dist/{chunk-JXF23MPG.js → chunk-ZMIMKNSQ.js} +1 -1
  67. package/dist/cli.cjs +10 -10
  68. package/dist/cli.js +1 -1
  69. package/dist/email-queue-BJDH2ID7.cjs +29 -0
  70. package/dist/email-queue-MWP4R67H.js +8 -0
  71. package/dist/email-service-6JODEMUA.js +3 -0
  72. package/dist/email-service-VA4Q4ZRB.cjs +28 -0
  73. package/dist/emit-order-notification-trigger-I4HQSTEN.cjs +16 -0
  74. package/dist/emit-order-notification-trigger-TBXAZAPS.js +3 -0
  75. package/dist/erp-config-enabled-32XTHBBT.cjs +11 -0
  76. package/dist/erp-config-enabled-CASE5YVI.js +2 -0
  77. package/dist/erp-order-invoice-5O42ZKC5.cjs +28 -0
  78. package/dist/erp-order-invoice-JEQKFXG4.js +7 -0
  79. package/dist/{event-order-defaults-DU7V3YND.cjs → event-order-defaults-TR45WAQQ.cjs} +10 -10
  80. package/dist/{event-order-defaults-H4RT7NMR.js → event-order-defaults-VXYO6NHT.js} +2 -2
  81. package/dist/generate-local-invoice-pdf-2NCA2WBL.cjs +12 -0
  82. package/dist/generate-local-invoice-pdf-XUH6GYEJ.js +3 -0
  83. package/dist/hooks.cjs +24 -24
  84. package/dist/hooks.js +2 -2
  85. package/dist/index.cjs +504 -504
  86. package/dist/index.js +39 -39
  87. package/dist/interpolate-KD37IRF2.js +2 -0
  88. package/dist/interpolate-WP6OSJHN.cjs +11 -0
  89. package/dist/{invoice-templates-RB462AQN.cjs → invoice-templates-2ESQ7K4N.cjs} +5 -5
  90. package/dist/invoice-templates-3AXTXERZ.js +2 -0
  91. package/dist/middleware.cjs +4 -4
  92. package/dist/middleware.js +2 -2
  93. package/dist/{order-assignees-handlers-KF7RMTV5.cjs → order-assignees-handlers-E6PQZP4H.cjs} +25 -6
  94. package/dist/{order-assignees-handlers-L3RVKUBS.js → order-assignees-handlers-YCT3Q3KC.js} +23 -4
  95. package/dist/{order-completion-otp-handlers-DDQREULW.cjs → order-completion-otp-handlers-2ZKRK5SN.cjs} +25 -25
  96. package/dist/{order-completion-otp-handlers-NROWBGXN.js → order-completion-otp-handlers-KHLZQQJX.js} +12 -12
  97. package/dist/{order-inventory-76V4XIGW.js → order-inventory-R3AU6N4V.js} +2 -2
  98. package/dist/{order-inventory-2MYRKEPC.cjs → order-inventory-UUFPWLBW.cjs} +10 -10
  99. package/dist/order-notification-dispatcher-37KDVHBM.cjs +38 -0
  100. package/dist/order-notification-dispatcher-Z3MXNF4U.js +13 -0
  101. package/dist/paid-order-erp-GRXR2OG6.js +3 -0
  102. package/dist/paid-order-erp-X5QHPI23.cjs +12 -0
  103. package/dist/pg-boss-service-CMW3KQJM.js +2 -0
  104. package/dist/pg-boss-service-GA6ZVD5G.cjs +15 -0
  105. package/dist/{razorpay-U23LGY72.cjs → razorpay-GP2DXVP2.cjs} +2 -2
  106. package/dist/{razorpay-KLO2KNCB.js → razorpay-I3G5LNYH.js} +1 -1
  107. package/dist/{rbac-debug-db-DFZWZ6GV.js → rbac-debug-db-JK3U5UZK.js} +2 -2
  108. package/dist/{rbac-debug-db-KWV7D5PQ.cjs → rbac-debug-db-S3D6N6HN.cjs} +4 -4
  109. package/dist/resolve-invoice-asset-url-64QQUVC3.js +2 -0
  110. package/dist/resolve-invoice-asset-url-J7WAMD26.cjs +11 -0
  111. package/dist/retire-soft-deleted-unique-DZALT537.cjs +15 -0
  112. package/dist/{retire-soft-deleted-unique-NXQIH4BC.js → retire-soft-deleted-unique-F25KZBZK.js} +2 -2
  113. package/dist/sms-defaults-DSO3M26Y.js +2 -0
  114. package/dist/{sms-defaults-KCOPKQBA.cjs → sms-defaults-GDFILHHR.cjs} +5 -5
  115. package/dist/{sms-notification-templates-handlers-SJLO7JGZ.js → sms-notification-templates-handlers-ZGDCVS5Z.js} +1 -1
  116. package/dist/{sms-notification-templates-handlers-YSB3L2PK.cjs → sms-notification-templates-handlers-ZKLKFRFZ.cjs} +3 -3
  117. package/dist/{stripe-VU6OEG2D.cjs → stripe-2APRZHKU.cjs} +2 -2
  118. package/dist/{stripe-4FD27QVJ.js → stripe-7CO2ETTN.js} +1 -1
  119. package/dist/theme.cjs +10 -10
  120. package/dist/theme.js +3 -3
  121. package/dist/vendor-invite-status-45ZCWKCX.js +2 -0
  122. package/dist/{vendor-invite-status-77O7ZQ3U.cjs → vendor-invite-status-AT2E4FUA.cjs} +5 -5
  123. package/package.json +2 -1
  124. package/dist/chunk-SHUYVCID.js +0 -4
  125. package/dist/chunk-USNT2KNT.cjs +0 -6
  126. package/dist/chunk-Z5OB5QGN.js +0 -465
  127. package/dist/chunk-ZX5U3VCB.cjs +0 -471
  128. package/dist/email-queue-3QBQ63F7.js +0 -8
  129. package/dist/email-queue-K4E4OFI7.cjs +0 -29
  130. package/dist/email-service-5O24BSFR.cjs +0 -28
  131. package/dist/email-service-ADDF52PJ.js +0 -3
  132. package/dist/emit-order-notification-trigger-ROASTYQP.cjs +0 -16
  133. package/dist/emit-order-notification-trigger-YUQTPELC.js +0 -3
  134. package/dist/erp-config-enabled-CUMQ6N2V.cjs +0 -11
  135. package/dist/erp-config-enabled-T37X7T34.js +0 -2
  136. package/dist/erp-order-invoice-AZ5MX2JB.cjs +0 -28
  137. package/dist/erp-order-invoice-XSYHAMBS.js +0 -7
  138. package/dist/generate-local-invoice-pdf-BQTCL5MW.cjs +0 -12
  139. package/dist/generate-local-invoice-pdf-OCFG47SE.js +0 -3
  140. package/dist/interpolate-WAKPN56R.cjs +0 -11
  141. package/dist/interpolate-WDUWDF3I.js +0 -2
  142. package/dist/invoice-templates-GZ33OENC.js +0 -2
  143. package/dist/order-notification-dispatcher-6HCJ6Q75.cjs +0 -38
  144. package/dist/order-notification-dispatcher-KM2SY7TX.js +0 -13
  145. package/dist/paid-order-erp-3USEG6WL.js +0 -3
  146. package/dist/paid-order-erp-FSQ3GSXE.cjs +0 -12
  147. package/dist/pg-boss-service-BDGOKM2T.cjs +0 -15
  148. package/dist/pg-boss-service-WCBJD4JB.js +0 -2
  149. package/dist/resolve-invoice-asset-url-JEZRENJW.cjs +0 -11
  150. package/dist/resolve-invoice-asset-url-QZ2FRDHI.js +0 -2
  151. package/dist/retire-soft-deleted-unique-5VXBA5XX.cjs +0 -15
  152. package/dist/sms-defaults-2NL24H57.js +0 -2
  153. package/dist/vendor-invite-status-PWJ3DE76.js +0 -2
@@ -1,20 +1,20 @@
1
- import { inviteStatusForActivation } from './chunk-JXF23MPG.js';
2
- import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, queueSms, verifyAndConsumeOtpChallenge } from './chunk-OVTOP42W.js';
3
- import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-AYERBA7I.js';
4
- import { JOB_RUNNER_QUEUE } from './chunk-XJNNOSJR.js';
5
- import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-3K5AIEIZ.js';
6
- import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-N4LBZXBG.js';
7
- import { registerWhatsAppQueueProcessor } from './chunk-GWDI752Q.js';
8
- import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-7JCCPQEF.js';
9
- import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-ZIT4IP6N.js';
10
- import { isErpIntegrationEnabled } from './chunk-JC6DLWTE.js';
11
- import { mergeEmailLayoutCompanyDetails } from './chunk-YRCKEGL2.js';
12
- import { getSmsTemplateDefault, SMS_MESSAGE_TEMPLATE_DEFAULTS } from './chunk-MQBT33IV.js';
13
- import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-ZY64VJMS.js';
14
- import { permissionRowsToRecord, logRbac, isSuperAdmin, vendorPortalFlagsFromUser, VENDOR_SCOPED_STORE_ENTITIES, isVendorPortalUser, getPermissionableEntityKeys, VENDOR_STORE_RBAC_ENTITIES, isSuperAdminGroupName, VENDOR_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, DEFAULT_VENDOR_ROLE_DEFS, VENDOR_GROUP_NAME, resolveVendorScopeFromSessionUser, canManageVendorRoles, isPlatformAdministrator, canManageVendorTeam, resolveDisabledMultiVendorScope, logEntityAccessDecision, explainSessionEntityAccess } from './chunk-5NOZSG6J.js';
15
- import { retireSoftDeletedUniqueValue, activeUniqueValueExists } from './chunk-DBPSJYLZ.js';
16
- import { queueErp } from './chunk-SYBOCAWB.js';
17
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-3LF4RYAJ.js';
2
+ import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, verifyAndConsumeOtpChallenge } from './chunk-ECUGNV2I.js';
3
+ import { registerWhatsAppQueueProcessor, queueSms } from './chunk-K6JT7BKY.js';
4
+ import { inviteStatusForActivation } from './chunk-ZMIMKNSQ.js';
5
+ import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-5NVGWJSY.js';
6
+ import { JOB_RUNNER_QUEUE } from './chunk-2BNVRFUQ.js';
7
+ import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-JYRFSFXH.js';
8
+ import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-LJ5C4RBF.js';
9
+ import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-PQJIJ4ZX.js';
10
+ import { isErpIntegrationEnabled } from './chunk-WQZ4AH2P.js';
11
+ import { mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
12
+ import { getSmsTemplateDefault, SMS_MESSAGE_TEMPLATE_DEFAULTS } from './chunk-MGT4DJ2D.js';
13
+ import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-NQF6H656.js';
14
+ import { permissionRowsToRecord, logRbac, isSuperAdmin, vendorPortalFlagsFromUser, VENDOR_SCOPED_STORE_ENTITIES, isVendorPortalUser, getPermissionableEntityKeys, VENDOR_STORE_RBAC_ENTITIES, isSuperAdminGroupName, VENDOR_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, DEFAULT_VENDOR_ROLE_DEFS, VENDOR_GROUP_NAME, resolveVendorScopeFromSessionUser, canManageVendorRoles, isPlatformAdministrator, canManageVendorTeam, resolveDisabledMultiVendorScope, logEntityAccessDecision, explainSessionEntityAccess } from './chunk-CJY2HUJC.js';
15
+ import { retireSoftDeletedUniqueValue, activeUniqueValueExists } from './chunk-BK5XW5XH.js';
16
+ import { queueErp } from './chunk-7QJI56OL.js';
17
+ import { __name } from './chunk-5BKT4CS5.js';
18
18
  import { PrimaryGeneratedColumn, Column, Entity, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn, Unique, OneToMany, Index, ManyToMany, JoinTable, In, ILike, Between, MoreThanOrEqual, LessThanOrEqual, Not, MoreThan, IsNull } from 'typeorm';
19
19
  import { Country, State, City } from 'country-state-city';
20
20
  import crypto2, { randomBytes, randomUUID } from 'crypto';
@@ -1698,6 +1698,82 @@ async function recordOrderAssigneeHistory(dataSource, entityMap, orderId, userId
1698
1698
  return nextSortOrder;
1699
1699
  }
1700
1700
  __name(recordOrderAssigneeHistory, "recordOrderAssigneeHistory");
1701
+ async function validateAssigneeOrderPermission(dataSource, entityMap, userId) {
1702
+ if (!Number.isFinite(userId) || userId <= 0) return {
1703
+ valid: true
1704
+ };
1705
+ if (entityMap.users) {
1706
+ const uRepo = dataSource.getRepository(entityMap.users);
1707
+ const u = await uRepo.findOne({
1708
+ where: {
1709
+ id: userId,
1710
+ deleted: false
1711
+ },
1712
+ relations: [
1713
+ "group"
1714
+ ]
1715
+ });
1716
+ if (!u) {
1717
+ return {
1718
+ valid: false,
1719
+ error: "Assignee user not found."
1720
+ };
1721
+ }
1722
+ const userRow = u;
1723
+ if (userRow.adminAccess) {
1724
+ return {
1725
+ valid: true
1726
+ };
1727
+ }
1728
+ if (userRow.group?.name && userRow.group.name.toLowerCase() === "customer") {
1729
+ return {
1730
+ valid: false,
1731
+ error: "Customer accounts cannot be assigned to orders."
1732
+ };
1733
+ }
1734
+ }
1735
+ if (entityMap.vendor_users) {
1736
+ const vuRepo = dataSource.getRepository(entityMap.vendor_users);
1737
+ const vuLinks = await vuRepo.find({
1738
+ where: {
1739
+ userId
1740
+ },
1741
+ relations: [
1742
+ "vendorRole",
1743
+ "vendorRole.permissions"
1744
+ ]
1745
+ });
1746
+ if (vuLinks && vuLinks.length > 0) {
1747
+ let anyRoleHasAccess = false;
1748
+ for (const vu of vuLinks) {
1749
+ const r = vu.vendorRole;
1750
+ if (r) {
1751
+ if (r.isOwnerRole) {
1752
+ anyRoleHasAccess = true;
1753
+ break;
1754
+ }
1755
+ if (Array.isArray(r.permissions)) {
1756
+ const orderPerm = r.permissions.find((p) => String(p?.entity).toLowerCase() === "orders");
1757
+ if (orderPerm && orderPerm.canRead) {
1758
+ anyRoleHasAccess = true;
1759
+ break;
1760
+ }
1761
+ }
1762
+ }
1763
+ }
1764
+ if (!anyRoleHasAccess) {
1765
+ return {
1766
+ valid: false,
1767
+ error: "Cannot assign order: This team member does not have permission to access orders. Please grant order access in Roles & Permissions."
1768
+ };
1769
+ }
1770
+ }
1771
+ }
1772
+ return {
1773
+ valid: true
1774
+ };
1775
+ }
1776
+ __name(validateAssigneeOrderPermission, "validateAssigneeOrderPermission");
1701
1777
  var LIST_QUERY_RESERVED = /* @__PURE__ */ new Set([
1702
1778
  "page",
1703
1779
  "limit",
@@ -5112,6 +5188,16 @@ function createCrudHandler(dataSource, entityMap, options) {
5112
5188
  persistBody.orderNumber = `ORD00${randomPart}`;
5113
5189
  persistBody.qrToken = crypto2.randomBytes(16).toString("hex");
5114
5190
  }
5191
+ if (resource === "orders" && persistBody.assignedUserId) {
5192
+ const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, Number(persistBody.assignedUserId));
5193
+ if (!assignCheck.valid) {
5194
+ return json({
5195
+ error: assignCheck.error ?? "Invalid order assignee"
5196
+ }, {
5197
+ status: 400
5198
+ });
5199
+ }
5200
+ }
5115
5201
  await retireSoftDeletedUniquesFromBody(repo, persistBody);
5116
5202
  created = await repo.save(repo.create(persistBody));
5117
5203
  if (resource === "orders") {
@@ -5313,7 +5399,7 @@ function createCrudHandler(dataSource, entityMap, options) {
5313
5399
  const orderIdForNotify = created.id;
5314
5400
  const finalCreatedStatus = String(created.status ?? createdStatus ?? "pending").toLowerCase();
5315
5401
  const initialPayStatus = String(persistBody.paymentStatus ?? body.paymentStatus ?? "unpaid").toLowerCase();
5316
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
5402
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
5317
5403
  if (finalCreatedStatus === "pending") {
5318
5404
  if (initialPayStatus === "failed") {
5319
5405
  fireOrderNotificationTrigger("payment_failed", orderIdForNotify, {
@@ -6220,6 +6306,14 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6220
6306
  if ("assignedUserId" in rawBody && rawBody.assignedUserId !== void 0) {
6221
6307
  const aId = Number(rawBody.assignedUserId);
6222
6308
  if (Number.isFinite(aId) && aId > 0) {
6309
+ const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, aId);
6310
+ if (!assignCheck.valid) {
6311
+ return json({
6312
+ error: assignCheck.error ?? "Invalid order assignee"
6313
+ }, {
6314
+ status: 400
6315
+ });
6316
+ }
6223
6317
  if (scopePutEarly.type === "vendor" && entityMap.vendor_users) {
6224
6318
  const vuRepo = dataSource.getRepository(entityMap.vendor_users);
6225
6319
  const vuLink = await vuRepo.findOne({
@@ -6516,7 +6610,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6516
6610
  const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
6517
6611
  const assigneeUpdated = Boolean(rawBody && typeof rawBody === "object" && "assignedUserId" in rawBody && rawBody.assignedUserId !== void 0 && Number(rawBody.assignedUserId) > 0 && Number(rawBody.assignedUserId) !== Number(existingOrderRow?.assignedUserId));
6518
6612
  if (assigneeUpdated) {
6519
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
6613
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
6520
6614
  fireOrderNotificationTrigger("order_assigned", updatedOrder.id, {
6521
6615
  dataSource,
6522
6616
  entityMap
@@ -6533,7 +6627,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6533
6627
  const payments = Array.isArray(updatedOrder.payments) ? updatedOrder.payments : [];
6534
6628
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
6535
6629
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
6536
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
6630
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
6537
6631
  if (newStatus === "pending") {
6538
6632
  if (curPayStatus === "failed") {
6539
6633
  fireOrderNotificationTrigger("payment_failed", updatedOrder.id, {
@@ -7101,6 +7195,14 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7101
7195
  const aId = Number(rawBody.assignedUserId);
7102
7196
  console.log("[ORDERS-DEBUG][UPDATE] Updating assignedUserId to:", aId);
7103
7197
  if (Number.isFinite(aId) && aId > 0) {
7198
+ const assignCheck = await validateAssigneeOrderPermission(dataSource, entityMap, aId);
7199
+ if (!assignCheck.valid) {
7200
+ return json({
7201
+ error: assignCheck.error ?? "Invalid order assignee"
7202
+ }, {
7203
+ status: 400
7204
+ });
7205
+ }
7104
7206
  if (scopePut.type === "vendor" && entityMap.vendor_users) {
7105
7207
  const vuRepo = dataSource.getRepository(entityMap.vendor_users);
7106
7208
  const vuLink = await vuRepo.findOne({
@@ -7241,7 +7343,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7241
7343
  });
7242
7344
  }
7243
7345
  if (ordStatus === "pending" || ordStatus === "confirmed") {
7244
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
7346
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
7245
7347
  fireOrderNotificationTrigger("order_placed", pOrder, {
7246
7348
  dataSource,
7247
7349
  entityMap
@@ -7255,7 +7357,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7255
7357
  }
7256
7358
  }
7257
7359
  } else if (newPayStatus === "failed") {
7258
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
7360
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
7259
7361
  fireOrderNotificationTrigger("payment_failed", pOrder, {
7260
7362
  dataSource,
7261
7363
  entityMap
@@ -7263,7 +7365,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7263
7365
  }).catch(() => {
7264
7366
  });
7265
7367
  } else if (newPayStatus === "refunded") {
7266
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
7368
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
7267
7369
  fireOrderNotificationTrigger("payment_refund_initiated", pOrder, {
7268
7370
  dataSource,
7269
7371
  entityMap
@@ -7390,7 +7492,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7390
7492
  const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
7391
7493
  const assigneeUpdated = Boolean(rawBody && typeof rawBody === "object" && "assignedUserId" in rawBody && rawBody.assignedUserId !== void 0 && Number(rawBody.assignedUserId) > 0 && Number(rawBody.assignedUserId) !== Number(existingOrderRow?.assignedUserId));
7392
7494
  if (assigneeUpdated) {
7393
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
7495
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
7394
7496
  fireOrderNotificationTrigger("order_assigned", ord.id, {
7395
7497
  dataSource,
7396
7498
  entityMap
@@ -7407,7 +7509,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7407
7509
  const payments = Array.isArray(ord.payments) ? ord.payments : [];
7408
7510
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
7409
7511
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
7410
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
7512
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
7411
7513
  if (newStatus === "pending") {
7412
7514
  if (curPayStatus === "failed") {
7413
7515
  fireOrderNotificationTrigger("payment_failed", ord.id, {
@@ -11061,7 +11163,7 @@ function createUsersApiHandlers(config) {
11061
11163
  if (token) {
11062
11164
  inviteLink = buildVendorInviteLink(baseUrl, token);
11063
11165
  }
11064
- const { markVendorInvitePendingForUser } = await import('./vendor-invite-status-PWJ3DE76.js');
11166
+ const { markVendorInvitePendingForUser } = await import('./vendor-invite-status-45ZCWKCX.js');
11065
11167
  await markVendorInvitePendingForUser(dataSource, entityMap.vendors, u.id);
11066
11168
  }
11067
11169
  }
@@ -27861,7 +27963,7 @@ async function queueJobScheduleNow(cms, scheduleId) {
27861
27963
  if (!boss) {
27862
27964
  throw new Error("pg-boss is not configured (DATABASE_URL required)");
27863
27965
  }
27864
- const { JOB_RUNNER_QUEUE: JOB_RUNNER_QUEUE2 } = await import('./pg-boss-service-WCBJD4JB.js');
27966
+ const { JOB_RUNNER_QUEUE: JOB_RUNNER_QUEUE2 } = await import('./pg-boss-service-CMW3KQJM.js');
27865
27967
  await boss.send(JOB_RUNNER_QUEUE2, {
27866
27968
  scheduleId,
27867
27969
  triggeredBy: "manual"
@@ -29036,6 +29138,7 @@ function whatsappPlugin(config = {}) {
29036
29138
  const { getWhatsAppSettings, getMessageTemplateRow, ...staticRest } = config;
29037
29139
  let settingsLoader = getWhatsAppSettings;
29038
29140
  if (!settingsLoader && context.dataSource) {
29141
+ const encKey = resolveSettingsEncryptionKey(env);
29039
29142
  settingsLoader = /* @__PURE__ */ __name(async () => {
29040
29143
  try {
29041
29144
  const ds = context.dataSource;
@@ -29046,10 +29149,18 @@ function whatsappPlugin(config = {}) {
29046
29149
  deleted: false
29047
29150
  }
29048
29151
  });
29049
- return Object.fromEntries(rows.map((r) => [
29050
- r.key,
29051
- r.value
29052
- ]));
29152
+ const result = {};
29153
+ for (const r of rows) {
29154
+ let val = String(r.value ?? "");
29155
+ if (r.encrypted && encKey) {
29156
+ try {
29157
+ val = simpleDecrypt(val, encKey);
29158
+ } catch {
29159
+ }
29160
+ }
29161
+ result[r.key] = val;
29162
+ }
29163
+ return result;
29053
29164
  } catch {
29054
29165
  return {};
29055
29166
  }
@@ -29438,7 +29549,7 @@ function createCmsApiHandler(config) {
29438
29549
  companyDetails
29439
29550
  };
29440
29551
  if (queue) {
29441
- const { queueEmail: queueEmail2 } = await import('./email-queue-3QBQ63F7.js');
29552
+ const { queueEmail: queueEmail2 } = await import('./email-queue-MWP4R67H.js');
29442
29553
  await queueEmail2(cms, {
29443
29554
  to: opts.to,
29444
29555
  templateName: "passwordReset",
@@ -29463,7 +29574,7 @@ function createCmsApiHandler(config) {
29463
29574
  const prevActivate = userAuth.beforeActivate;
29464
29575
  userAuth.beforeActivate = async (email, userId) => {
29465
29576
  if (prevActivate) await prevActivate(email, userId);
29466
- const { markVendorInviteAcceptedForUser } = await import('./vendor-invite-status-PWJ3DE76.js');
29577
+ const { markVendorInviteAcceptedForUser } = await import('./vendor-invite-status-45ZCWKCX.js');
29467
29578
  await markVendorInviteAcceptedForUser(ds, vendorEntity, userId);
29468
29579
  };
29469
29580
  }
@@ -30467,9 +30578,9 @@ function createCmsApiHandler(config) {
30467
30578
  for (const r of rows) {
30468
30579
  storeMap[r.key] = r.value;
30469
30580
  }
30470
- const { normalizeInvoiceTemplateId } = await import('./invoice-templates-GZ33OENC.js');
30471
- const { generateLocalInvoicePdf } = await import('./generate-local-invoice-pdf-OCFG47SE.js');
30472
- const { resolveInvoiceAssetUrl } = await import('./resolve-invoice-asset-url-QZ2FRDHI.js');
30581
+ const { normalizeInvoiceTemplateId } = await import('./invoice-templates-3AXTXERZ.js');
30582
+ const { generateLocalInvoicePdf } = await import('./generate-local-invoice-pdf-XUH6GYEJ.js');
30583
+ const { resolveInvoiceAssetUrl } = await import('./resolve-invoice-asset-url-64QQUVC3.js');
30473
30584
  const templateId = normalizeInvoiceTemplateId(templateParam);
30474
30585
  const includeQr = qrParam != null ? qrParam === "1" || qrParam === "true" : storeMap.invoice_include_qr === "true";
30475
30586
  const sampleInput = {
@@ -30856,7 +30967,7 @@ function createCmsApiHandler(config) {
30856
30967
  const pe = await requireEntityPermissionEffective(req, "orders", "read");
30857
30968
  if (pe) return pe;
30858
30969
  const cms = await getCms();
30859
- const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-XSYHAMBS.js');
30970
+ const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-JEQKFXG4.js');
30860
30971
  const oid = Number(path2[1]);
30861
30972
  if (!Number.isFinite(oid)) return config.json({
30862
30973
  error: "Invalid id"
@@ -30890,7 +31001,7 @@ function createCmsApiHandler(config) {
30890
31001
  status: 400
30891
31002
  });
30892
31003
  const cms = await getCms();
30893
- const { isErpIntegrationEnabled: isErpIntegrationEnabled3 } = await import('./erp-config-enabled-T37X7T34.js');
31004
+ const { isErpIntegrationEnabled: isErpIntegrationEnabled3 } = await import('./erp-config-enabled-CASE5YVI.js');
30894
31005
  const enabled = await isErpIntegrationEnabled3(cms, dataSource, entityMap);
30895
31006
  if (m === "GET") {
30896
31007
  return config.json({
@@ -30903,7 +31014,7 @@ function createCmsApiHandler(config) {
30903
31014
  }, {
30904
31015
  status: 409
30905
31016
  });
30906
- const { queueErpPaidOrderForOrderId } = await import('./paid-order-erp-3USEG6WL.js');
31017
+ const { queueErpPaidOrderForOrderId } = await import('./paid-order-erp-GRXR2OG6.js');
30907
31018
  await queueErpPaidOrderForOrderId(cms, dataSource, entityMap, oid);
30908
31019
  return config.json({
30909
31020
  ok: true
@@ -31006,7 +31117,7 @@ function createCmsApiHandler(config) {
31006
31117
  }
31007
31118
  }
31008
31119
  if (path2[0] === "sms-notification-templates" && path2.length === 1 && m === "GET") {
31009
- const { createSmsNotificationTemplatesHandlers } = await import('./sms-notification-templates-handlers-SJLO7JGZ.js');
31120
+ const { createSmsNotificationTemplatesHandlers } = await import('./sms-notification-templates-handlers-ZGDCVS5Z.js');
31010
31121
  const handlers = createSmsNotificationTemplatesHandlers(dataSource, entityMap);
31011
31122
  return handlers.GET(req);
31012
31123
  }
@@ -31081,7 +31192,7 @@ function createCmsApiHandler(config) {
31081
31192
  "Content-Type": "text/html; charset=utf-8"
31082
31193
  }
31083
31194
  });
31084
- const { renderOrderTrackingPage } = await import('./OrderTrackPage-W3J6WIG2.js');
31195
+ const { renderOrderTrackingPage } = await import('./OrderTrackPage-VBZUVZOU.js');
31085
31196
  const html = renderOrderTrackingPage(order);
31086
31197
  return new Response(html, {
31087
31198
  status: 200,
@@ -31238,7 +31349,7 @@ function createCmsApiHandler(config) {
31238
31349
  status: 400
31239
31350
  });
31240
31351
  }
31241
- const { resendOrderNotification } = await import('./order-notification-dispatcher-KM2SY7TX.js');
31352
+ const { resendOrderNotification } = await import('./order-notification-dispatcher-Z3MXNF4U.js');
31242
31353
  const result = await resendOrderNotification(triggerKey, orderId, {
31243
31354
  dataSource,
31244
31355
  entityMap,
@@ -31319,7 +31430,7 @@ function createCmsApiHandler(config) {
31319
31430
  ]
31320
31431
  });
31321
31432
  if (orderWithItems) {
31322
- const { reconcileOrderInventoryBetweenSnapshots: reconcileOrderInventoryBetweenSnapshots2, orderInventorySnapshotFromRow: orderInventorySnapshotFromRow2 } = await import('./order-inventory-76V4XIGW.js');
31433
+ const { reconcileOrderInventoryBetweenSnapshots: reconcileOrderInventoryBetweenSnapshots2, orderInventorySnapshotFromRow: orderInventorySnapshotFromRow2 } = await import('./order-inventory-R3AU6N4V.js');
31323
31434
  const prevSnap = orderInventorySnapshotFromRow2(orderWithItems);
31324
31435
  const invErr = await reconcileOrderInventoryBetweenSnapshots2(dataSource, entityMap, prevSnap, {
31325
31436
  status: "cancelled",
@@ -31337,7 +31448,7 @@ function createCmsApiHandler(config) {
31337
31448
  status: "cancelled"
31338
31449
  });
31339
31450
  const fireOrderCancelledNotification = /* @__PURE__ */ __name((refundAmount) => {
31340
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
31451
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
31341
31452
  fireOrderNotificationTrigger("order_cancelled", orderId, {
31342
31453
  dataSource,
31343
31454
  entityMap
@@ -31582,7 +31693,7 @@ function createCmsApiHandler(config) {
31582
31693
  }, {
31583
31694
  status: 400
31584
31695
  });
31585
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-NROWBGXN.js');
31696
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
31586
31697
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31587
31698
  return handlers.getChannels(req, orderId);
31588
31699
  }
@@ -31597,7 +31708,7 @@ function createCmsApiHandler(config) {
31597
31708
  }, {
31598
31709
  status: 400
31599
31710
  });
31600
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-NROWBGXN.js');
31711
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
31601
31712
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31602
31713
  return handlers.sendOtp(req, orderId);
31603
31714
  }
@@ -31612,7 +31723,7 @@ function createCmsApiHandler(config) {
31612
31723
  }, {
31613
31724
  status: 400
31614
31725
  });
31615
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-NROWBGXN.js');
31726
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-KHLZQQJX.js');
31616
31727
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31617
31728
  return handlers.verifyOtp(req, orderId);
31618
31729
  }
@@ -31627,7 +31738,7 @@ function createCmsApiHandler(config) {
31627
31738
  }, {
31628
31739
  status: 400
31629
31740
  });
31630
- const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-L3RVKUBS.js');
31741
+ const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-YCT3Q3KC.js');
31631
31742
  const handlers = createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionUser);
31632
31743
  return handlers.listEligibleAssignees(req, orderId);
31633
31744
  }
@@ -32244,7 +32355,7 @@ function createStorefrontApiHandler(config) {
32244
32355
  const otpPepper = config.otpPepper;
32245
32356
  const defaultPhoneCc = config.defaultPhoneCountryCode;
32246
32357
  function fireStorefrontCheckoutNotifications(orderId) {
32247
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
32358
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
32248
32359
  fireOrderNotificationTrigger("order_pending", orderId, {
32249
32360
  dataSource,
32250
32361
  entityMap
@@ -34095,7 +34206,7 @@ function createStorefrontApiHandler(config) {
34095
34206
  }, {
34096
34207
  status: 400
34097
34208
  });
34098
- const { retireSoftDeletedUniqueValue: retireSoftDeletedUniqueValue2 } = await import('./retire-soft-deleted-unique-NXQIH4BC.js');
34209
+ const { retireSoftDeletedUniqueValue: retireSoftDeletedUniqueValue2 } = await import('./retire-soft-deleted-unique-F25KZBZK.js');
34099
34210
  await retireSoftDeletedUniqueValue2(userRepo(), "email", email);
34100
34211
  const existing = await userRepo().findOne({
34101
34212
  where: {
@@ -35189,7 +35300,7 @@ function createStorefrontApiHandler(config) {
35189
35300
  } catch {
35190
35301
  }
35191
35302
  try {
35192
- void import('./emit-order-notification-trigger-YUQTPELC.js').then(({ fireOrderNotificationTrigger }) => {
35303
+ void import('./emit-order-notification-trigger-TBXAZAPS.js').then(({ fireOrderNotificationTrigger }) => {
35193
35304
  fireOrderNotificationTrigger("order_cancelled", orderId, {
35194
35305
  dataSource,
35195
35306
  entityMap
@@ -1,4 +1,4 @@
1
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { __name } from './chunk-5BKT4CS5.js';
2
2
 
3
3
  // src/plugins/erp/erp-log.ts
4
4
  var ERP_LOG = "[webcore:erp]";
@@ -1,4 +1,4 @@
1
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { __name } from './chunk-5BKT4CS5.js';
2
2
 
3
3
  // src/lib/retire-soft-deleted-unique.ts
4
4
  async function retireSoftDeletedUniqueValue(repo, column, value) {
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkUPLVMVRX_cjs = require('./chunk-UPLVMVRX.cjs');
4
- var chunkZX5U3VCB_cjs = require('./chunk-ZX5U3VCB.cjs');
5
- var chunkM5GPOPGX_cjs = require('./chunk-M5GPOPGX.cjs');
6
- var chunkP6S4XFZO_cjs = require('./chunk-P6S4XFZO.cjs');
7
- var chunkTZEMLHSP_cjs = require('./chunk-TZEMLHSP.cjs');
8
- var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
3
+ var chunkRQCXRCYM_cjs = require('./chunk-RQCXRCYM.cjs');
4
+ var chunk2JHGIWH7_cjs = require('./chunk-2JHGIWH7.cjs');
5
+ var chunkE62LKM6Z_cjs = require('./chunk-E62LKM6Z.cjs');
6
+ var chunk47G65M5Q_cjs = require('./chunk-47G65M5Q.cjs');
7
+ var chunkEYUBL7YH_cjs = require('./chunk-EYUBL7YH.cjs');
8
+ var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
9
9
 
10
10
  // src/plugins/erp/erp-response-map.ts
11
11
  function pickString(o, keys) {
@@ -15,7 +15,7 @@ function pickString(o, keys) {
15
15
  }
16
16
  return void 0;
17
17
  }
18
- chunkUSNT2KNT_cjs.__name(pickString, "pickString");
18
+ chunkXHPRD45G_cjs.__name(pickString, "pickString");
19
19
  function unwrapErpReadData(json) {
20
20
  if (!json || typeof json !== "object") return null;
21
21
  const o = json;
@@ -23,7 +23,7 @@ function unwrapErpReadData(json) {
23
23
  if (d && typeof d === "object" && !Array.isArray(d)) return d;
24
24
  return o;
25
25
  }
26
- chunkUSNT2KNT_cjs.__name(unwrapErpReadData, "unwrapErpReadData");
26
+ chunkXHPRD45G_cjs.__name(unwrapErpReadData, "unwrapErpReadData");
27
27
  function firstObject(data, keys) {
28
28
  for (const k of keys) {
29
29
  const v = data[k];
@@ -31,7 +31,7 @@ function firstObject(data, keys) {
31
31
  }
32
32
  return null;
33
33
  }
34
- chunkUSNT2KNT_cjs.__name(firstObject, "firstObject");
34
+ chunkXHPRD45G_cjs.__name(firstObject, "firstObject");
35
35
  function extractEvents(src) {
36
36
  const timeline = src.timeline ?? src.events ?? src.history ?? src.trackingEvents;
37
37
  if (!Array.isArray(timeline) || !timeline.length) return void 0;
@@ -65,7 +65,7 @@ function extractEvents(src) {
65
65
  }
66
66
  return events.length ? events : void 0;
67
67
  }
68
- chunkUSNT2KNT_cjs.__name(extractEvents, "extractEvents");
68
+ chunkXHPRD45G_cjs.__name(extractEvents, "extractEvents");
69
69
  function mapErpPayloadToFulfillment(data) {
70
70
  const nested = firstObject(data, [
71
71
  "fulfillment",
@@ -97,7 +97,7 @@ function mapErpPayloadToFulfillment(data) {
97
97
  events
98
98
  };
99
99
  }
100
- chunkUSNT2KNT_cjs.__name(mapErpPayloadToFulfillment, "mapErpPayloadToFulfillment");
100
+ chunkXHPRD45G_cjs.__name(mapErpPayloadToFulfillment, "mapErpPayloadToFulfillment");
101
101
  function mapErpPayloadToInvoiceNumber(data) {
102
102
  const nested = firstObject(data, [
103
103
  "invoice",
@@ -113,7 +113,7 @@ function mapErpPayloadToInvoiceNumber(data) {
113
113
  "id"
114
114
  ]);
115
115
  }
116
- chunkUSNT2KNT_cjs.__name(mapErpPayloadToInvoiceNumber, "mapErpPayloadToInvoiceNumber");
116
+ chunkXHPRD45G_cjs.__name(mapErpPayloadToInvoiceNumber, "mapErpPayloadToInvoiceNumber");
117
117
  function extractChildOrderRefsFromSalePayload(data) {
118
118
  const lists = [
119
119
  data.returns,
@@ -151,7 +151,7 @@ function extractChildOrderRefsFromSalePayload(data) {
151
151
  }
152
152
  return out;
153
153
  }
154
- chunkUSNT2KNT_cjs.__name(extractChildOrderRefsFromSalePayload, "extractChildOrderRefsFromSalePayload");
154
+ chunkXHPRD45G_cjs.__name(extractChildOrderRefsFromSalePayload, "extractChildOrderRefsFromSalePayload");
155
155
 
156
156
  // src/lib/invoice/build-local-invoice-for-order.ts
157
157
  async function loadSettingsGroup(ds, entityMap, group) {
@@ -167,7 +167,7 @@ async function loadSettingsGroup(ds, entityMap, group) {
167
167
  String(r.value ?? "")
168
168
  ]));
169
169
  }
170
- chunkUSNT2KNT_cjs.__name(loadSettingsGroup, "loadSettingsGroup");
170
+ chunkXHPRD45G_cjs.__name(loadSettingsGroup, "loadSettingsGroup");
171
171
  function addrFromRow(row) {
172
172
  if (!row || typeof row !== "object") return null;
173
173
  const a = row;
@@ -180,7 +180,7 @@ function addrFromRow(row) {
180
180
  country: String(a.country ?? "").trim() || void 0
181
181
  };
182
182
  }
183
- chunkUSNT2KNT_cjs.__name(addrFromRow, "addrFromRow");
183
+ chunkXHPRD45G_cjs.__name(addrFromRow, "addrFromRow");
184
184
  async function buildLocalInvoicePdfForOrder(ds, entityMap, orderId) {
185
185
  if (!entityMap.orders || !entityMap.order_items) {
186
186
  return {
@@ -250,10 +250,10 @@ async function buildLocalInvoicePdfForOrder(ds, entityMap, orderId) {
250
250
  loadSettingsGroup(ds, entityMap, "branding"),
251
251
  loadSettingsGroup(ds, entityMap, "email")
252
252
  ]);
253
- const companyDetails = chunkTZEMLHSP_cjs.mergeEmailLayoutCompanyDetails(branding, email, store);
254
- const fromBranding = chunkTZEMLHSP_cjs.getCompanyDetailsFromSettings(branding);
253
+ const companyDetails = chunkEYUBL7YH_cjs.mergeEmailLayoutCompanyDetails(branding, email, store);
254
+ const fromBranding = chunkEYUBL7YH_cjs.getCompanyDetailsFromSettings(branding);
255
255
  const rawLogo = store.invoiceLogoUrl || store.companyLogo || store.logo || companyDetails.logoUrl || fromBranding.logoUrl || null;
256
- const logoUrl = chunkP6S4XFZO_cjs.resolveInvoiceAssetUrl(rawLogo);
256
+ const logoUrl = chunk47G65M5Q_cjs.resolveInvoiceAssetUrl(rawLogo);
257
257
  const companyName = store.companyName || store.invoiceCompanyName || store.name || companyDetails.companyName || fromBranding.companyName || "Store";
258
258
  const supportEmail = store.companyEmail || store.invoiceEmail || store.email || companyDetails.supportEmail || fromBranding.supportEmail;
259
259
  const supportPhone = store.companyPhone || store.invoicePhone || store.phone || companyDetails.supportPhone;
@@ -277,8 +277,8 @@ async function buildLocalInvoicePdfForOrder(ds, entityMap, orderId) {
277
277
  const baseUrl = process.env.NEXTAUTH_URL || process.env.PUBLIC_APP_URL || "";
278
278
  const qrData = qrToken ? baseUrl ? `${baseUrl.replace(/\/$/, "")}/track/${qrToken}` : `/track/${qrToken}` : String(o.orderNumber || orderId);
279
279
  const includeQrCode = store.invoice_include_qr === "true" || store.invoiceIncludeQr === "true";
280
- const bytes = await chunkZX5U3VCB_cjs.generateLocalInvoicePdf({
281
- templateId: chunkM5GPOPGX_cjs.normalizeInvoiceTemplateId(store.invoiceTemplate),
280
+ const bytes = await chunk2JHGIWH7_cjs.generateLocalInvoicePdf({
281
+ templateId: chunkE62LKM6Z_cjs.normalizeInvoiceTemplateId(store.invoiceTemplate),
282
282
  orderNumber: String(o.orderNumber || orderId),
283
283
  orderDate: o.createdAt || /* @__PURE__ */ new Date(),
284
284
  serviceDate,
@@ -311,7 +311,7 @@ async function buildLocalInvoicePdfForOrder(ds, entityMap, orderId) {
311
311
  filename: `invoice-${String(o.orderNumber || orderId).replace(/[^\w.-]+/g, "_")}.pdf`
312
312
  };
313
313
  }
314
- chunkUSNT2KNT_cjs.__name(buildLocalInvoicePdfForOrder, "buildLocalInvoicePdfForOrder");
314
+ chunkXHPRD45G_cjs.__name(buildLocalInvoicePdfForOrder, "buildLocalInvoicePdfForOrder");
315
315
 
316
316
  // src/plugins/erp/erp-order-invoice.ts
317
317
  function pickInvoiceId(data) {
@@ -327,7 +327,7 @@ function pickInvoiceId(data) {
327
327
  }
328
328
  return void 0;
329
329
  }
330
- chunkUSNT2KNT_cjs.__name(pickInvoiceId, "pickInvoiceId");
330
+ chunkXHPRD45G_cjs.__name(pickInvoiceId, "pickInvoiceId");
331
331
  function jsonErr(msg, status) {
332
332
  return new Response(JSON.stringify({
333
333
  error: msg
@@ -338,7 +338,7 @@ function jsonErr(msg, status) {
338
338
  }
339
339
  });
340
340
  }
341
- chunkUSNT2KNT_cjs.__name(jsonErr, "jsonErr");
341
+ chunkXHPRD45G_cjs.__name(jsonErr, "jsonErr");
342
342
  var ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES = /* @__PURE__ */ new Set([
343
343
  "pending",
344
344
  "placed",
@@ -351,7 +351,7 @@ function isOrderEligibleForInvoiceEmail(status, orderKind) {
351
351
  if (kind !== "sale") return false;
352
352
  return ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES.has(String(status ?? "").trim().toLowerCase());
353
353
  }
354
- chunkUSNT2KNT_cjs.__name(isOrderEligibleForInvoiceEmail, "isOrderEligibleForInvoiceEmail");
354
+ chunkXHPRD45G_cjs.__name(isOrderEligibleForInvoiceEmail, "isOrderEligibleForInvoiceEmail");
355
355
  async function resolveOrderInvoicePdfBytes(cms, dataSource, entityMap, orderId, options = {}) {
356
356
  try {
357
357
  const orderRepo = dataSource.getRepository(entityMap.orders);
@@ -376,7 +376,7 @@ async function resolveOrderInvoicePdfBytes(cms, dataSource, entityMap, orderId,
376
376
  status: 404
377
377
  };
378
378
  }
379
- const on = await chunkUPLVMVRX_cjs.isErpIntegrationEnabled(cms, dataSource, entityMap);
379
+ const on = await chunkRQCXRCYM_cjs.isErpIntegrationEnabled(cms, dataSource, entityMap);
380
380
  const erp = cms.getPlugin("erp");
381
381
  if (on && erp?.submission) {
382
382
  const meta = order.metadata && typeof order.metadata === "object" && !Array.isArray(order.metadata) ? order.metadata : {};
@@ -429,7 +429,7 @@ async function resolveOrderInvoicePdfBytes(cms, dataSource, entityMap, orderId,
429
429
  };
430
430
  }
431
431
  }
432
- chunkUSNT2KNT_cjs.__name(resolveOrderInvoicePdfBytes, "resolveOrderInvoicePdfBytes");
432
+ chunkXHPRD45G_cjs.__name(resolveOrderInvoicePdfBytes, "resolveOrderInvoicePdfBytes");
433
433
  async function streamOrderInvoicePdf(cms, dataSource, entityMap, orderId, options) {
434
434
  const resolved = await resolveOrderInvoicePdfBytes(cms, dataSource, entityMap, orderId, options);
435
435
  if ("error" in resolved) return jsonErr(resolved.error, resolved.status);
@@ -442,7 +442,7 @@ async function streamOrderInvoicePdf(cms, dataSource, entityMap, orderId, option
442
442
  }
443
443
  });
444
444
  }
445
- chunkUSNT2KNT_cjs.__name(streamOrderInvoicePdf, "streamOrderInvoicePdf");
445
+ chunkXHPRD45G_cjs.__name(streamOrderInvoicePdf, "streamOrderInvoicePdf");
446
446
 
447
447
  exports.ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES = ORDER_INVOICE_EMAIL_ELIGIBLE_STATUSES;
448
448
  exports.buildLocalInvoicePdfForOrder = buildLocalInvoicePdfForOrder;
@@ -1,4 +1,4 @@
1
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { __name } from './chunk-5BKT4CS5.js';
2
2
  import { SESClient, SendRawEmailCommand, SendEmailCommand } from '@aws-sdk/client-ses';
3
3
  import { createRequire } from 'module';
4
4
  import nodemailer from 'nodemailer';