@infuro/cms-core 1.0.67 → 1.0.69

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 (150) 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 +121 -12
  4. package/dist/admin.js +121 -12
  5. package/dist/api.cjs +57 -54
  6. package/dist/api.js +24 -21
  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-7NMT3GBR.cjs → chunk-3LQS4ATQ.cjs} +4 -4
  13. package/dist/{chunk-GWDI752Q.js → chunk-3XCTGADT.js} +1 -1
  14. package/dist/chunk-47G65M5Q.cjs +18 -0
  15. package/dist/{chunk-XFDIIVZB.cjs → chunk-4MNVIGVJ.cjs} +11 -11
  16. package/dist/{chunk-OY2YTBMP.cjs → chunk-4WZNRVEZ.cjs} +3 -3
  17. package/dist/{chunk-OVTOP42W.js → chunk-53AMBXMM.js} +1 -1
  18. package/dist/chunk-5BKT4CS5.js +28 -0
  19. package/dist/chunk-5DSY3GQI.js +16 -0
  20. package/dist/{chunk-AYERBA7I.js → chunk-5NVGWJSY.js} +1 -1
  21. package/dist/{chunk-HF3L2GIT.cjs → chunk-5YMKJ3TH.cjs} +16 -16
  22. package/dist/{chunk-WFMVD567.cjs → chunk-6MM5OMRL.cjs} +11 -11
  23. package/dist/{chunk-5MZFQRDW.cjs → chunk-747MJJCZ.cjs} +147 -147
  24. package/dist/{chunk-SYBOCAWB.js → chunk-7QJI56OL.js} +1 -1
  25. package/dist/{chunk-DBPSJYLZ.js → chunk-BK5XW5XH.js} +1 -1
  26. package/dist/chunk-BQQMTQ4C.cjs +455 -0
  27. package/dist/{chunk-6YOQ7G5O.js → chunk-CFUSYGSA.js} +1 -1
  28. package/dist/{chunk-OOTLNH63.cjs → chunk-CIZZX57T.cjs} +2 -2
  29. package/dist/{chunk-7L6KWI7S.cjs → chunk-CTTV375J.cjs} +13 -13
  30. package/dist/{chunk-ZY64VJMS.js → chunk-D4LR3S77.js} +2 -2
  31. package/dist/{chunk-GLLCLRCQ.js → chunk-DBBYLSQP.js} +179 -49
  32. package/dist/{chunk-5NOZSG6J.js → chunk-DWNQTFJ5.js} +2 -2
  33. package/dist/{chunk-2IAXTKQN.cjs → chunk-DZNWS2MM.cjs} +2 -2
  34. package/dist/chunk-E62LKM6Z.cjs +49 -0
  35. package/dist/{chunk-CRFV5WJK.js → chunk-ECNYZG6T.js} +1 -1
  36. package/dist/{chunk-TZEMLHSP.cjs → chunk-EYUBL7YH.cjs} +7 -7
  37. package/dist/{chunk-WMMZZRDJ.cjs → chunk-HGR4IA7I.cjs} +18 -18
  38. package/dist/{chunk-TJ2MIQUT.cjs → chunk-JRW3GQD4.cjs} +4 -4
  39. package/dist/{chunk-3K5AIEIZ.js → chunk-JYRFSFXH.js} +1 -1
  40. package/dist/chunk-K6RXCLD5.js +45 -0
  41. package/dist/{chunk-TU23GJPJ.js → chunk-LJ5C4RBF.js} +3 -3
  42. package/dist/{chunk-O4AFPDQ4.cjs → chunk-LXWF6T7F.cjs} +33 -33
  43. package/dist/{chunk-EIZKW2PF.js → chunk-LY7CDNC6.js} +1 -1
  44. package/dist/{chunk-PA6YDMFZ.cjs → chunk-M5QDJOUP.cjs} +12 -12
  45. package/dist/{chunk-MQBT33IV.js → chunk-MGT4DJ2D.js} +1 -1
  46. package/dist/{chunk-2ISSXYBZ.js → chunk-MJDNS324.js} +5 -5
  47. package/dist/{chunk-H3IVLIPR.cjs → chunk-OXFC3DAM.cjs} +4 -4
  48. package/dist/chunk-PQJIJ4ZX.js +445 -0
  49. package/dist/{chunk-HY3AXLOI.cjs → chunk-PRXVSSIF.cjs} +13 -13
  50. package/dist/{chunk-TDV6EJHV.js → chunk-PRZOLCFW.js} +2 -2
  51. package/dist/{chunk-BVLN75LP.cjs → chunk-QL44NCZC.cjs} +1221 -1091
  52. package/dist/{chunk-VM6OVUUM.cjs → chunk-QN6PZLAP.cjs} +40 -40
  53. package/dist/{chunk-OV5TRZET.cjs → chunk-QXAQ3V7R.cjs} +27 -27
  54. package/dist/{chunk-NV5IRHI3.js → chunk-RBKVMHBH.js} +9 -9
  55. package/dist/{chunk-UPLVMVRX.cjs → chunk-RQCXRCYM.cjs} +2 -2
  56. package/dist/{chunk-WUQAOTHA.js → chunk-SERRQ736.js} +1 -1
  57. package/dist/{chunk-SS3K7OIM.cjs → chunk-SWSTGV4F.cjs} +81 -81
  58. package/dist/{chunk-RCE5SJBA.js → chunk-T47VP2ZT.js} +3 -3
  59. package/dist/{chunk-FLUF2GZH.js → chunk-WHMIWJL7.js} +1 -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-X36V4DOH.cjs +16 -0
  74. package/dist/emit-order-notification-trigger-XKN2TWVF.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 +497 -494
  86. package/dist/index.d.cts +7 -1
  87. package/dist/index.d.ts +7 -1
  88. package/dist/index.js +39 -36
  89. package/dist/interpolate-KD37IRF2.js +2 -0
  90. package/dist/interpolate-WP6OSJHN.cjs +11 -0
  91. package/dist/invoice-templates-2ESQ7K4N.cjs +19 -0
  92. package/dist/invoice-templates-3AXTXERZ.js +2 -0
  93. package/dist/middleware.cjs +4 -4
  94. package/dist/middleware.js +2 -2
  95. package/dist/{order-assignees-handlers-L3RVKUBS.js → order-assignees-handlers-F7WOZHOG.js} +1 -1
  96. package/dist/{order-assignees-handlers-KF7RMTV5.cjs → order-assignees-handlers-JEJ5IDID.cjs} +3 -3
  97. package/dist/{order-completion-otp-handlers-HFGCPC4O.js → order-completion-otp-handlers-FIW7PZ6W.js} +12 -9
  98. package/dist/{order-completion-otp-handlers-DZAXK4GQ.cjs → order-completion-otp-handlers-LNAZTMTS.cjs} +25 -22
  99. package/dist/{order-inventory-76V4XIGW.js → order-inventory-R3AU6N4V.js} +2 -2
  100. package/dist/{order-inventory-2MYRKEPC.cjs → order-inventory-UUFPWLBW.cjs} +10 -10
  101. package/dist/order-notification-dispatcher-FS54ANAV.js +13 -0
  102. package/dist/order-notification-dispatcher-GG5C4LKZ.cjs +38 -0
  103. package/dist/paid-order-erp-GRXR2OG6.js +3 -0
  104. package/dist/paid-order-erp-X5QHPI23.cjs +12 -0
  105. package/dist/pg-boss-service-CMW3KQJM.js +2 -0
  106. package/dist/pg-boss-service-GA6ZVD5G.cjs +15 -0
  107. package/dist/{razorpay-U23LGY72.cjs → razorpay-GP2DXVP2.cjs} +2 -2
  108. package/dist/{razorpay-KLO2KNCB.js → razorpay-I3G5LNYH.js} +1 -1
  109. package/dist/{rbac-debug-db-KWV7D5PQ.cjs → rbac-debug-db-2ZI3XKA4.cjs} +4 -4
  110. package/dist/{rbac-debug-db-DFZWZ6GV.js → rbac-debug-db-IRKT6G62.js} +2 -2
  111. package/dist/resolve-invoice-asset-url-64QQUVC3.js +2 -0
  112. package/dist/resolve-invoice-asset-url-J7WAMD26.cjs +11 -0
  113. package/dist/retire-soft-deleted-unique-DZALT537.cjs +15 -0
  114. package/dist/{retire-soft-deleted-unique-NXQIH4BC.js → retire-soft-deleted-unique-F25KZBZK.js} +2 -2
  115. package/dist/sms-defaults-DSO3M26Y.js +2 -0
  116. package/dist/{sms-defaults-KCOPKQBA.cjs → sms-defaults-GDFILHHR.cjs} +5 -5
  117. package/dist/{sms-notification-templates-handlers-SJLO7JGZ.js → sms-notification-templates-handlers-ZGDCVS5Z.js} +1 -1
  118. package/dist/{sms-notification-templates-handlers-YSB3L2PK.cjs → sms-notification-templates-handlers-ZKLKFRFZ.cjs} +3 -3
  119. package/dist/{stripe-VU6OEG2D.cjs → stripe-2APRZHKU.cjs} +2 -2
  120. package/dist/{stripe-4FD27QVJ.js → stripe-7CO2ETTN.js} +1 -1
  121. package/dist/theme.cjs +10 -10
  122. package/dist/theme.js +3 -3
  123. package/dist/vendor-invite-status-45ZCWKCX.js +2 -0
  124. package/dist/{vendor-invite-status-77O7ZQ3U.cjs → vendor-invite-status-AT2E4FUA.cjs} +5 -5
  125. package/package.json +2 -1
  126. package/dist/chunk-GLD263KW.cjs +0 -862
  127. package/dist/chunk-OPJEV44S.js +0 -847
  128. package/dist/chunk-SHUYVCID.js +0 -4
  129. package/dist/chunk-USNT2KNT.cjs +0 -6
  130. package/dist/email-queue-4OY45JIU.cjs +0 -26
  131. package/dist/email-queue-HGXB2FIS.js +0 -5
  132. package/dist/email-service-5O24BSFR.cjs +0 -28
  133. package/dist/email-service-ADDF52PJ.js +0 -3
  134. package/dist/emit-order-notification-trigger-EJJZ6XTS.js +0 -3
  135. package/dist/emit-order-notification-trigger-ZD5YN3JM.cjs +0 -16
  136. package/dist/erp-config-enabled-CUMQ6N2V.cjs +0 -11
  137. package/dist/erp-config-enabled-T37X7T34.js +0 -2
  138. package/dist/erp-order-invoice-H6HCJ7YS.js +0 -4
  139. package/dist/erp-order-invoice-YUSPZ7CE.cjs +0 -25
  140. package/dist/interpolate-WAKPN56R.cjs +0 -11
  141. package/dist/interpolate-WDUWDF3I.js +0 -2
  142. package/dist/order-notification-dispatcher-ECPFI7CD.js +0 -10
  143. package/dist/order-notification-dispatcher-LL7ETKLU.cjs +0 -35
  144. package/dist/paid-order-erp-3USEG6WL.js +0 -3
  145. package/dist/paid-order-erp-FSQ3GSXE.cjs +0 -12
  146. package/dist/pg-boss-service-BDGOKM2T.cjs +0 -15
  147. package/dist/pg-boss-service-WCBJD4JB.js +0 -2
  148. package/dist/retire-soft-deleted-unique-5VXBA5XX.cjs +0 -15
  149. package/dist/sms-defaults-2NL24H57.js +0 -2
  150. package/dist/vendor-invite-status-PWJ3DE76.js +0 -2
@@ -1,20 +1,20 @@
1
- import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, queueSms, verifyAndConsumeOtpChallenge } from './chunk-OVTOP42W.js';
2
- import { JOB_RUNNER_QUEUE } from './chunk-XJNNOSJR.js';
3
- import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-3K5AIEIZ.js';
4
- import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-NV5IRHI3.js';
5
- import { registerWhatsAppQueueProcessor } from './chunk-GWDI752Q.js';
6
- import { inviteStatusForActivation } from './chunk-JXF23MPG.js';
7
- import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-TU23GJPJ.js';
8
- import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-OPJEV44S.js';
9
- import { isErpIntegrationEnabled } from './chunk-JC6DLWTE.js';
10
- import { mergeEmailLayoutCompanyDetails } from './chunk-YRCKEGL2.js';
11
- import { getSmsTemplateDefault, SMS_MESSAGE_TEMPLATE_DEFAULTS } from './chunk-MQBT33IV.js';
12
- import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-AYERBA7I.js';
13
- import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-ZY64VJMS.js';
14
- import { retireSoftDeletedUniqueValue, activeUniqueValueExists } from './chunk-DBPSJYLZ.js';
15
- 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';
16
- import { queueErp } from './chunk-SYBOCAWB.js';
17
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { inviteStatusForActivation } from './chunk-ZMIMKNSQ.js';
2
+ import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, queueSms, verifyAndConsumeOtpChallenge } from './chunk-53AMBXMM.js';
3
+ import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-5NVGWJSY.js';
4
+ import { JOB_RUNNER_QUEUE } from './chunk-2BNVRFUQ.js';
5
+ import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-JYRFSFXH.js';
6
+ import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-RBKVMHBH.js';
7
+ import { registerWhatsAppQueueProcessor } from './chunk-3XCTGADT.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-D4LR3S77.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-DWNQTFJ5.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';
@@ -5313,7 +5313,7 @@ function createCrudHandler(dataSource, entityMap, options) {
5313
5313
  const orderIdForNotify = created.id;
5314
5314
  const finalCreatedStatus = String(created.status ?? createdStatus ?? "pending").toLowerCase();
5315
5315
  const initialPayStatus = String(persistBody.paymentStatus ?? body.paymentStatus ?? "unpaid").toLowerCase();
5316
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
5316
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
5317
5317
  if (finalCreatedStatus === "pending") {
5318
5318
  if (initialPayStatus === "failed") {
5319
5319
  fireOrderNotificationTrigger("payment_failed", orderIdForNotify, {
@@ -6516,7 +6516,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6516
6516
  const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
6517
6517
  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
6518
  if (assigneeUpdated) {
6519
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
6519
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
6520
6520
  fireOrderNotificationTrigger("order_assigned", updatedOrder.id, {
6521
6521
  dataSource,
6522
6522
  entityMap
@@ -6533,7 +6533,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6533
6533
  const payments = Array.isArray(updatedOrder.payments) ? updatedOrder.payments : [];
6534
6534
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
6535
6535
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
6536
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
6536
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
6537
6537
  if (newStatus === "pending") {
6538
6538
  if (curPayStatus === "failed") {
6539
6539
  fireOrderNotificationTrigger("payment_failed", updatedOrder.id, {
@@ -7241,7 +7241,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7241
7241
  });
7242
7242
  }
7243
7243
  if (ordStatus === "pending" || ordStatus === "confirmed") {
7244
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
7244
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
7245
7245
  fireOrderNotificationTrigger("order_placed", pOrder, {
7246
7246
  dataSource,
7247
7247
  entityMap
@@ -7255,7 +7255,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7255
7255
  }
7256
7256
  }
7257
7257
  } else if (newPayStatus === "failed") {
7258
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
7258
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
7259
7259
  fireOrderNotificationTrigger("payment_failed", pOrder, {
7260
7260
  dataSource,
7261
7261
  entityMap
@@ -7263,7 +7263,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7263
7263
  }).catch(() => {
7264
7264
  });
7265
7265
  } else if (newPayStatus === "refunded") {
7266
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
7266
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
7267
7267
  fireOrderNotificationTrigger("payment_refund_initiated", pOrder, {
7268
7268
  dataSource,
7269
7269
  entityMap
@@ -7390,7 +7390,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7390
7390
  const paymentUpdated = Boolean(rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null);
7391
7391
  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
7392
  if (assigneeUpdated) {
7393
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
7393
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
7394
7394
  fireOrderNotificationTrigger("order_assigned", ord.id, {
7395
7395
  dataSource,
7396
7396
  entityMap
@@ -7407,7 +7407,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7407
7407
  const payments = Array.isArray(ord.payments) ? ord.payments : [];
7408
7408
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
7409
7409
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
7410
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
7410
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
7411
7411
  if (newStatus === "pending") {
7412
7412
  if (curPayStatus === "failed") {
7413
7413
  fireOrderNotificationTrigger("payment_failed", ord.id, {
@@ -11061,7 +11061,7 @@ function createUsersApiHandlers(config) {
11061
11061
  if (token) {
11062
11062
  inviteLink = buildVendorInviteLink(baseUrl, token);
11063
11063
  }
11064
- const { markVendorInvitePendingForUser } = await import('./vendor-invite-status-PWJ3DE76.js');
11064
+ const { markVendorInvitePendingForUser } = await import('./vendor-invite-status-45ZCWKCX.js');
11065
11065
  await markVendorInvitePendingForUser(dataSource, entityMap.vendors, u.id);
11066
11066
  }
11067
11067
  }
@@ -15542,6 +15542,7 @@ function createVendorOnboardHandlers(config) {
15542
15542
  state: vp?.state ?? null,
15543
15543
  postalCode: vp?.postalCode ?? null,
15544
15544
  blocked: u?.blocked ?? false,
15545
+ inviteStatus: u?.inviteStatus ?? (u?.password ? "active" : "pending"),
15545
15546
  groupName: u?.group?.name ?? null
15546
15547
  };
15547
15548
  });
@@ -16015,14 +16016,24 @@ function createVendorOnboardHandlers(config) {
16015
16016
  });
16016
16017
  }
16017
16018
  }
16018
- const token = String(user.inviteToken ?? "").trim();
16019
- if (!token || user.inviteStatus !== "pending") {
16019
+ const hasPassword = !!(user.password && String(user.password).trim());
16020
+ const isPending = user.inviteStatus === "pending" || !hasPassword;
16021
+ if (!isPending) {
16020
16022
  return json({
16021
- error: "No pending invite for this user"
16023
+ error: "User has already accepted the invite"
16022
16024
  }, {
16023
16025
  status: 400
16024
16026
  });
16025
16027
  }
16028
+ let token = String(user.inviteToken ?? "").trim();
16029
+ if (!token) {
16030
+ token = newUserInviteToken();
16031
+ await dataSource.getRepository(entityMap.users).update(user.id, {
16032
+ inviteToken: token,
16033
+ inviteStatus: "pending",
16034
+ password: null
16035
+ });
16036
+ }
16026
16037
  const inviteLink = buildUserInviteLink(baseUrl, token);
16027
16038
  const emailSent = await trySendVendorOnboardEmails({
16028
16039
  vendorName,
@@ -27850,7 +27861,7 @@ async function queueJobScheduleNow(cms, scheduleId) {
27850
27861
  if (!boss) {
27851
27862
  throw new Error("pg-boss is not configured (DATABASE_URL required)");
27852
27863
  }
27853
- const { JOB_RUNNER_QUEUE: JOB_RUNNER_QUEUE2 } = await import('./pg-boss-service-WCBJD4JB.js');
27864
+ const { JOB_RUNNER_QUEUE: JOB_RUNNER_QUEUE2 } = await import('./pg-boss-service-CMW3KQJM.js');
27854
27865
  await boss.send(JOB_RUNNER_QUEUE2, {
27855
27866
  scheduleId,
27856
27867
  triggeredBy: "manual"
@@ -29427,7 +29438,7 @@ function createCmsApiHandler(config) {
29427
29438
  companyDetails
29428
29439
  };
29429
29440
  if (queue) {
29430
- const { queueEmail: queueEmail2 } = await import('./email-queue-HGXB2FIS.js');
29441
+ const { queueEmail: queueEmail2 } = await import('./email-queue-MWP4R67H.js');
29431
29442
  await queueEmail2(cms, {
29432
29443
  to: opts.to,
29433
29444
  templateName: "passwordReset",
@@ -29452,7 +29463,7 @@ function createCmsApiHandler(config) {
29452
29463
  const prevActivate = userAuth.beforeActivate;
29453
29464
  userAuth.beforeActivate = async (email, userId) => {
29454
29465
  if (prevActivate) await prevActivate(email, userId);
29455
- const { markVendorInviteAcceptedForUser } = await import('./vendor-invite-status-PWJ3DE76.js');
29466
+ const { markVendorInviteAcceptedForUser } = await import('./vendor-invite-status-45ZCWKCX.js');
29456
29467
  await markVendorInviteAcceptedForUser(ds, vendorEntity, userId);
29457
29468
  };
29458
29469
  }
@@ -30437,6 +30448,110 @@ function createCmsApiHandler(config) {
30437
30448
  return socialMediaHandlers.publishBlogToFacebook(req, id);
30438
30449
  }
30439
30450
  }
30451
+ if (path2[0] === "settings" && path2.length === 2 && path2[1] === "invoice-preview" && m === "GET") {
30452
+ const a = await config.requireAuth(req);
30453
+ if (a) return a;
30454
+ const pe = await requireEntityPermissionEffective(req, "settings", "read");
30455
+ if (pe) return pe;
30456
+ const url = new URL(req.url);
30457
+ const templateParam = url.searchParams.get("template") || "classic";
30458
+ const qrParam = url.searchParams.get("qr");
30459
+ const configRepo = dataSource.getRepository(entityMap.configs);
30460
+ const rows = await configRepo.find({
30461
+ where: {
30462
+ settings: "store",
30463
+ deleted: false
30464
+ }
30465
+ });
30466
+ const storeMap = {};
30467
+ for (const r of rows) {
30468
+ storeMap[r.key] = r.value;
30469
+ }
30470
+ const { normalizeInvoiceTemplateId } = await import('./invoice-templates-3AXTXERZ.js');
30471
+ const { generateLocalInvoicePdf } = await import('./generate-local-invoice-pdf-XUH6GYEJ.js');
30472
+ const { resolveInvoiceAssetUrl } = await import('./resolve-invoice-asset-url-64QQUVC3.js');
30473
+ const templateId = normalizeInvoiceTemplateId(templateParam);
30474
+ const includeQr = qrParam != null ? qrParam === "1" || qrParam === "true" : storeMap.invoice_include_qr === "true";
30475
+ const sampleInput = {
30476
+ templateId,
30477
+ orderNumber: "SAMPLE-10024",
30478
+ orderDate: (/* @__PURE__ */ new Date()).toISOString(),
30479
+ currency: storeMap.currency || "INR",
30480
+ company: {
30481
+ name: storeMap.companyName || storeMap.invoiceCompanyName || "ETOE Services",
30482
+ supportEmail: storeMap.companyEmail || storeMap.invoiceEmail || "support@example.com",
30483
+ supportPhone: storeMap.companyPhone || storeMap.invoicePhone || "+91 98765 43210",
30484
+ address: storeMap.companyAddress || storeMap.invoiceAddress || "65 Sanjay Nagar B, Kalwar Road, Jhotwara, Jaipur, Rajasthan, 302012, India",
30485
+ logoUrl: resolveInvoiceAssetUrl(storeMap.invoiceLogoUrl || storeMap.companyLogo || storeMap.logo)
30486
+ },
30487
+ customerName: "Sahil Sharma",
30488
+ customerEmail: "sahil@example.com",
30489
+ customerPhone: "+91 98875 51178",
30490
+ billingAddress: {
30491
+ line1: "65 Sanjay Nagar B, Kalwar Road",
30492
+ city: "Jaipur",
30493
+ state: "Rajasthan",
30494
+ postalCode: "302012",
30495
+ country: "India"
30496
+ },
30497
+ shippingAddress: {
30498
+ line1: "65 Sanjay Nagar B, Kalwar Road",
30499
+ city: "Jaipur",
30500
+ state: "Rajasthan",
30501
+ postalCode: "302012",
30502
+ country: "India"
30503
+ },
30504
+ serviceDate: (/* @__PURE__ */ new Date()).toISOString(),
30505
+ timeSlot: "6:00 PM",
30506
+ assignedTo: "Raaj Sharma",
30507
+ qrToken: "sample-track-token-12345",
30508
+ qrData: "https://etoe.in/track/sample-track-token-12345",
30509
+ includeQrCode: includeQr,
30510
+ lineItems: [
30511
+ {
30512
+ name: "Complete Home Deep Cleaning Service",
30513
+ sku: "ETOE-HDC-001",
30514
+ quantity: 1,
30515
+ unitPrice: 3499,
30516
+ tax: 0,
30517
+ total: 3499
30518
+ },
30519
+ {
30520
+ name: "Kitchen & Bathroom Sanitization Add-on",
30521
+ sku: "ETOE-SAN-002",
30522
+ quantity: 1,
30523
+ unitPrice: 999,
30524
+ tax: 0,
30525
+ total: 999
30526
+ }
30527
+ ],
30528
+ subtotal: 4498,
30529
+ discount: 499,
30530
+ tax: 0,
30531
+ total: 3999
30532
+ };
30533
+ try {
30534
+ const bytes = await generateLocalInvoicePdf(sampleInput);
30535
+ return new Response(Buffer.from(bytes), {
30536
+ status: 200,
30537
+ headers: {
30538
+ "Content-Type": "application/pdf",
30539
+ "Content-Disposition": `inline; filename="preview-invoice-${templateId}.pdf"`
30540
+ }
30541
+ });
30542
+ } catch (err) {
30543
+ const msg = err instanceof Error ? err.message : String(err);
30544
+ console.error("[invoice-preview] failed", {
30545
+ templateId,
30546
+ error: msg
30547
+ });
30548
+ return config.json({
30549
+ error: `Preview generation failed: ${msg}`
30550
+ }, {
30551
+ status: 500
30552
+ });
30553
+ }
30554
+ }
30440
30555
  if (path2[0] === "settings" && path2.length === 2 && settingsHandlers) {
30441
30556
  const group = path2[1];
30442
30557
  const isPublic = group === "multi_vendor" || group === "turnstile" || group === "auth_providers" || settingsConfig?.publicGetGroups?.includes(group);
@@ -30741,7 +30856,7 @@ function createCmsApiHandler(config) {
30741
30856
  const pe = await requireEntityPermissionEffective(req, "orders", "read");
30742
30857
  if (pe) return pe;
30743
30858
  const cms = await getCms();
30744
- const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-H6HCJ7YS.js');
30859
+ const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-JEQKFXG4.js');
30745
30860
  const oid = Number(path2[1]);
30746
30861
  if (!Number.isFinite(oid)) return config.json({
30747
30862
  error: "Invalid id"
@@ -30775,7 +30890,7 @@ function createCmsApiHandler(config) {
30775
30890
  status: 400
30776
30891
  });
30777
30892
  const cms = await getCms();
30778
- const { isErpIntegrationEnabled: isErpIntegrationEnabled3 } = await import('./erp-config-enabled-T37X7T34.js');
30893
+ const { isErpIntegrationEnabled: isErpIntegrationEnabled3 } = await import('./erp-config-enabled-CASE5YVI.js');
30779
30894
  const enabled = await isErpIntegrationEnabled3(cms, dataSource, entityMap);
30780
30895
  if (m === "GET") {
30781
30896
  return config.json({
@@ -30788,7 +30903,7 @@ function createCmsApiHandler(config) {
30788
30903
  }, {
30789
30904
  status: 409
30790
30905
  });
30791
- const { queueErpPaidOrderForOrderId } = await import('./paid-order-erp-3USEG6WL.js');
30906
+ const { queueErpPaidOrderForOrderId } = await import('./paid-order-erp-GRXR2OG6.js');
30792
30907
  await queueErpPaidOrderForOrderId(cms, dataSource, entityMap, oid);
30793
30908
  return config.json({
30794
30909
  ok: true
@@ -30891,7 +31006,7 @@ function createCmsApiHandler(config) {
30891
31006
  }
30892
31007
  }
30893
31008
  if (path2[0] === "sms-notification-templates" && path2.length === 1 && m === "GET") {
30894
- const { createSmsNotificationTemplatesHandlers } = await import('./sms-notification-templates-handlers-SJLO7JGZ.js');
31009
+ const { createSmsNotificationTemplatesHandlers } = await import('./sms-notification-templates-handlers-ZGDCVS5Z.js');
30895
31010
  const handlers = createSmsNotificationTemplatesHandlers(dataSource, entityMap);
30896
31011
  return handlers.GET(req);
30897
31012
  }
@@ -30966,7 +31081,7 @@ function createCmsApiHandler(config) {
30966
31081
  "Content-Type": "text/html; charset=utf-8"
30967
31082
  }
30968
31083
  });
30969
- const { renderOrderTrackingPage } = await import('./OrderTrackPage-W3J6WIG2.js');
31084
+ const { renderOrderTrackingPage } = await import('./OrderTrackPage-VBZUVZOU.js');
30970
31085
  const html = renderOrderTrackingPage(order);
30971
31086
  return new Response(html, {
30972
31087
  status: 200,
@@ -31123,7 +31238,7 @@ function createCmsApiHandler(config) {
31123
31238
  status: 400
31124
31239
  });
31125
31240
  }
31126
- const { resendOrderNotification } = await import('./order-notification-dispatcher-ECPFI7CD.js');
31241
+ const { resendOrderNotification } = await import('./order-notification-dispatcher-FS54ANAV.js');
31127
31242
  const result = await resendOrderNotification(triggerKey, orderId, {
31128
31243
  dataSource,
31129
31244
  entityMap,
@@ -31204,7 +31319,7 @@ function createCmsApiHandler(config) {
31204
31319
  ]
31205
31320
  });
31206
31321
  if (orderWithItems) {
31207
- const { reconcileOrderInventoryBetweenSnapshots: reconcileOrderInventoryBetweenSnapshots2, orderInventorySnapshotFromRow: orderInventorySnapshotFromRow2 } = await import('./order-inventory-76V4XIGW.js');
31322
+ const { reconcileOrderInventoryBetweenSnapshots: reconcileOrderInventoryBetweenSnapshots2, orderInventorySnapshotFromRow: orderInventorySnapshotFromRow2 } = await import('./order-inventory-R3AU6N4V.js');
31208
31323
  const prevSnap = orderInventorySnapshotFromRow2(orderWithItems);
31209
31324
  const invErr = await reconcileOrderInventoryBetweenSnapshots2(dataSource, entityMap, prevSnap, {
31210
31325
  status: "cancelled",
@@ -31222,7 +31337,7 @@ function createCmsApiHandler(config) {
31222
31337
  status: "cancelled"
31223
31338
  });
31224
31339
  const fireOrderCancelledNotification = /* @__PURE__ */ __name((refundAmount) => {
31225
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
31340
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
31226
31341
  fireOrderNotificationTrigger("order_cancelled", orderId, {
31227
31342
  dataSource,
31228
31343
  entityMap
@@ -31467,7 +31582,7 @@ function createCmsApiHandler(config) {
31467
31582
  }, {
31468
31583
  status: 400
31469
31584
  });
31470
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-HFGCPC4O.js');
31585
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-FIW7PZ6W.js');
31471
31586
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31472
31587
  return handlers.getChannels(req, orderId);
31473
31588
  }
@@ -31482,7 +31597,7 @@ function createCmsApiHandler(config) {
31482
31597
  }, {
31483
31598
  status: 400
31484
31599
  });
31485
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-HFGCPC4O.js');
31600
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-FIW7PZ6W.js');
31486
31601
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31487
31602
  return handlers.sendOtp(req, orderId);
31488
31603
  }
@@ -31497,7 +31612,7 @@ function createCmsApiHandler(config) {
31497
31612
  }, {
31498
31613
  status: 400
31499
31614
  });
31500
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-HFGCPC4O.js');
31615
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-FIW7PZ6W.js');
31501
31616
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydratedSessionUser);
31502
31617
  return handlers.verifyOtp(req, orderId);
31503
31618
  }
@@ -31512,7 +31627,7 @@ function createCmsApiHandler(config) {
31512
31627
  }, {
31513
31628
  status: 400
31514
31629
  });
31515
- const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-L3RVKUBS.js');
31630
+ const { createOrderAssigneesHandlers } = await import('./order-assignees-handlers-F7WOZHOG.js');
31516
31631
  const handlers = createOrderAssigneesHandlers(dataSource, entityMap, getHydratedSessionUser);
31517
31632
  return handlers.listEligibleAssignees(req, orderId);
31518
31633
  }
@@ -32129,7 +32244,7 @@ function createStorefrontApiHandler(config) {
32129
32244
  const otpPepper = config.otpPepper;
32130
32245
  const defaultPhoneCc = config.defaultPhoneCountryCode;
32131
32246
  function fireStorefrontCheckoutNotifications(orderId) {
32132
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
32247
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
32133
32248
  fireOrderNotificationTrigger("order_pending", orderId, {
32134
32249
  dataSource,
32135
32250
  entityMap
@@ -33980,7 +34095,7 @@ function createStorefrontApiHandler(config) {
33980
34095
  }, {
33981
34096
  status: 400
33982
34097
  });
33983
- const { retireSoftDeletedUniqueValue: retireSoftDeletedUniqueValue2 } = await import('./retire-soft-deleted-unique-NXQIH4BC.js');
34098
+ const { retireSoftDeletedUniqueValue: retireSoftDeletedUniqueValue2 } = await import('./retire-soft-deleted-unique-F25KZBZK.js');
33984
34099
  await retireSoftDeletedUniqueValue2(userRepo(), "email", email);
33985
34100
  const existing = await userRepo().findOne({
33986
34101
  where: {
@@ -34893,7 +35008,9 @@ function createStorefrontApiHandler(config) {
34893
35008
  },
34894
35009
  relations: [
34895
35010
  "items",
34896
- "items.product"
35011
+ "items.product",
35012
+ "assignedUser",
35013
+ "payments"
34897
35014
  ]
34898
35015
  });
34899
35016
  if (!order) return json({
@@ -34919,7 +35036,9 @@ function createStorefrontApiHandler(config) {
34919
35036
  },
34920
35037
  relations: [
34921
35038
  "items",
34922
- "items.product"
35039
+ "items.product",
35040
+ "assignedUser",
35041
+ "payments"
34923
35042
  ]
34924
35043
  });
34925
35044
  }
@@ -34985,6 +35104,17 @@ function createStorefrontApiHandler(config) {
34985
35104
  currency: o.currency,
34986
35105
  createdAt: o.createdAt,
34987
35106
  metadata: o.metadata ?? null,
35107
+ assignedUser: o.assignedUser ? {
35108
+ id: o.assignedUser.id,
35109
+ name: o.assignedUser.name,
35110
+ phone: o.assignedUser.phone
35111
+ } : null,
35112
+ payments: Array.isArray(o.payments) ? o.payments.map((pm) => ({
35113
+ id: pm.id,
35114
+ amount: pm.amount,
35115
+ method: pm.method,
35116
+ status: pm.status
35117
+ })) : [],
34988
35118
  items: lines
34989
35119
  },
34990
35120
  relatedOrders: relatedOrders.map((r) => ({
@@ -35059,7 +35189,7 @@ function createStorefrontApiHandler(config) {
35059
35189
  } catch {
35060
35190
  }
35061
35191
  try {
35062
- void import('./emit-order-notification-trigger-EJJZ6XTS.js').then(({ fireOrderNotificationTrigger }) => {
35192
+ void import('./emit-order-notification-trigger-XKN2TWVF.js').then(({ fireOrderNotificationTrigger }) => {
35063
35193
  fireOrderNotificationTrigger("order_cancelled", orderId, {
35064
35194
  dataSource,
35065
35195
  entityMap
@@ -1,4 +1,4 @@
1
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { __name } from './chunk-5BKT4CS5.js';
2
2
 
3
3
  // src/auth/permission-entities.ts
4
4
  var PERMISSION_ENTITY_INTERNAL_EXCLUDE = /* @__PURE__ */ new Set([
@@ -623,7 +623,7 @@ async function logEntityAccessDecision(dataSource, context, user, entity, action
623
623
  const id = Number(user.id);
624
624
  if (Number.isFinite(id)) {
625
625
  try {
626
- const { loadDbPermissionsForUser } = await import('./rbac-debug-db-DFZWZ6GV.js');
626
+ const { loadDbPermissionsForUser } = await import('./rbac-debug-db-IRKT6G62.js');
627
627
  dbPermissions = await loadDbPermissionsForUser(dataSource, id);
628
628
  } catch (e) {
629
629
  dbPermissions = {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
3
+ var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
4
4
  var React = require('react');
5
5
 
6
6
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -14,6 +14,6 @@ function ForceLightMode() {
14
14
  }
15
15
  });
16
16
  }
17
- chunkUSNT2KNT_cjs.__name(ForceLightMode, "ForceLightMode");
17
+ chunkXHPRD45G_cjs.__name(ForceLightMode, "ForceLightMode");
18
18
 
19
19
  exports.ForceLightMode = ForceLightMode;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
4
+
5
+ // src/lib/invoice/invoice-templates.ts
6
+ var INVOICE_TEMPLATE_IDS = [
7
+ "classic",
8
+ "modern",
9
+ "compact",
10
+ "bold",
11
+ "service_detailed"
12
+ ];
13
+ var INVOICE_TEMPLATE_OPTIONS = [
14
+ {
15
+ id: "classic",
16
+ label: "Classic",
17
+ description: "Traditional invoice with header, lined items, and totals footer."
18
+ },
19
+ {
20
+ id: "modern",
21
+ label: "Modern",
22
+ description: "Clean layout with accent bar and spacious typography."
23
+ },
24
+ {
25
+ id: "compact",
26
+ label: "Compact",
27
+ description: "Dense single-page layout for high line-item counts."
28
+ },
29
+ {
30
+ id: "bold",
31
+ label: "Bold",
32
+ description: "Strong header band and clear payment summary block."
33
+ },
34
+ {
35
+ id: "service_detailed",
36
+ label: "Service Detailed",
37
+ description: "Detailed service invoice with order date, service date, time slot, and assigned technician."
38
+ }
39
+ ];
40
+ function normalizeInvoiceTemplateId(raw) {
41
+ const v = String(raw ?? "").trim().toLowerCase();
42
+ if (v === "service_qr") return "service_detailed";
43
+ return INVOICE_TEMPLATE_IDS.includes(v) ? v : "classic";
44
+ }
45
+ chunkXHPRD45G_cjs.__name(normalizeInvoiceTemplateId, "normalizeInvoiceTemplateId");
46
+
47
+ exports.INVOICE_TEMPLATE_IDS = INVOICE_TEMPLATE_IDS;
48
+ exports.INVOICE_TEMPLATE_OPTIONS = INVOICE_TEMPLATE_OPTIONS;
49
+ exports.normalizeInvoiceTemplateId = normalizeInvoiceTemplateId;
@@ -1,4 +1,4 @@
1
- import { __name } from './chunk-SHUYVCID.js';
1
+ import { __name } from './chunk-5BKT4CS5.js';
2
2
 
3
3
  // src/message-templates/interpolate.ts
4
4
  function applyTemplateVars(template, variables) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
3
+ var chunkXHPRD45G_cjs = require('./chunk-XHPRD45G.cjs');
4
4
 
5
5
  // src/plugins/email/templates/types.ts
6
6
  function normalizeSocialLinkItem(o) {
@@ -19,7 +19,7 @@ function normalizeSocialLinkItem(o) {
19
19
  if (icon) item.icon = icon;
20
20
  return item;
21
21
  }
22
- chunkUSNT2KNT_cjs.__name(normalizeSocialLinkItem, "normalizeSocialLinkItem");
22
+ chunkXHPRD45G_cjs.__name(normalizeSocialLinkItem, "normalizeSocialLinkItem");
23
23
  function parseSocialLinksJson(raw) {
24
24
  if (raw == null || raw.trim() === "") return void 0;
25
25
  try {
@@ -37,7 +37,7 @@ function parseSocialLinksJson(raw) {
37
37
  return void 0;
38
38
  }
39
39
  }
40
- chunkUSNT2KNT_cjs.__name(parseSocialLinksJson, "parseSocialLinksJson");
40
+ chunkXHPRD45G_cjs.__name(parseSocialLinksJson, "parseSocialLinksJson");
41
41
  function absolutizeEmailAssetUrl(url) {
42
42
  const t = url?.trim();
43
43
  if (!t) return void 0;
@@ -46,10 +46,10 @@ function absolutizeEmailAssetUrl(url) {
46
46
  if (!base) return t;
47
47
  return `${base}${t.startsWith("/") ? t : `/${t}`}`;
48
48
  }
49
- chunkUSNT2KNT_cjs.__name(absolutizeEmailAssetUrl, "absolutizeEmailAssetUrl");
49
+ chunkXHPRD45G_cjs.__name(absolutizeEmailAssetUrl, "absolutizeEmailAssetUrl");
50
50
  function mergeEmailLayoutCompanyDetails(branding, emailSettings, storeSettings) {
51
51
  const fromBranding = getCompanyDetailsFromSettings(branding);
52
- const first = /* @__PURE__ */ chunkUSNT2KNT_cjs.__name((...vals) => {
52
+ const first = /* @__PURE__ */ chunkXHPRD45G_cjs.__name((...vals) => {
53
53
  for (const v of vals) {
54
54
  const t = v?.trim();
55
55
  if (t) return t;
@@ -81,7 +81,7 @@ function mergeEmailLayoutCompanyDetails(branding, emailSettings, storeSettings)
81
81
  followUsTitle
82
82
  };
83
83
  }
84
- chunkUSNT2KNT_cjs.__name(mergeEmailLayoutCompanyDetails, "mergeEmailLayoutCompanyDetails");
84
+ chunkXHPRD45G_cjs.__name(mergeEmailLayoutCompanyDetails, "mergeEmailLayoutCompanyDetails");
85
85
  function getCompanyDetailsFromSettings(settingsGroup) {
86
86
  const logoUrl = settingsGroup.logo ?? settingsGroup.logoUrl ?? "";
87
87
  const companyName = settingsGroup.companyName ?? settingsGroup.company_name ?? "";
@@ -109,7 +109,7 @@ function getCompanyDetailsFromSettings(settingsGroup) {
109
109
  socialLinks: socialLinks.length ? socialLinks : void 0
110
110
  };
111
111
  }
112
- chunkUSNT2KNT_cjs.__name(getCompanyDetailsFromSettings, "getCompanyDetailsFromSettings");
112
+ chunkXHPRD45G_cjs.__name(getCompanyDetailsFromSettings, "getCompanyDetailsFromSettings");
113
113
 
114
114
  exports.getCompanyDetailsFromSettings = getCompanyDetailsFromSettings;
115
115
  exports.mergeEmailLayoutCompanyDetails = mergeEmailLayoutCompanyDetails;