@dainamite/cpq 0.5.0 → 0.7.0

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 (368) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/MIGRATION.md +74 -0
  3. package/dist/modules/cpq/acl.js +1 -0
  4. package/dist/modules/cpq/acl.js.map +2 -2
  5. package/dist/modules/cpq/api/_helpers/adjustmentCommandRoute.js +45 -0
  6. package/dist/modules/cpq/api/_helpers/adjustmentCommandRoute.js.map +7 -0
  7. package/dist/modules/cpq/api/_helpers/quoteMutationGuard.js +23 -0
  8. package/dist/modules/cpq/api/_helpers/quoteMutationGuard.js.map +7 -0
  9. package/dist/modules/cpq/api/_helpers/quoteRouteOpenApi.js +19 -0
  10. package/dist/modules/cpq/api/_helpers/quoteRouteOpenApi.js.map +7 -0
  11. package/dist/modules/cpq/api/orders/[orderId]/route.js +17 -1
  12. package/dist/modules/cpq/api/orders/[orderId]/route.js.map +2 -2
  13. package/dist/modules/cpq/api/orders/route.js +47 -2
  14. package/dist/modules/cpq/api/orders/route.js.map +2 -2
  15. package/dist/modules/cpq/api/quotes/[quoteId]/items/[lineId]/restore/route.js +54 -0
  16. package/dist/modules/cpq/api/quotes/[quoteId]/items/[lineId]/restore/route.js.map +7 -0
  17. package/dist/modules/cpq/api/quotes/[quoteId]/items/[lineId]/route.js +42 -2
  18. package/dist/modules/cpq/api/quotes/[quoteId]/items/[lineId]/route.js.map +2 -2
  19. package/dist/modules/cpq/api/quotes/[quoteId]/items/route.js +27 -2
  20. package/dist/modules/cpq/api/quotes/[quoteId]/items/route.js.map +2 -2
  21. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/[adjustmentId]/route.js +47 -0
  22. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/[adjustmentId]/route.js.map +7 -0
  23. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/preview/route.js +30 -0
  24. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/preview/route.js.map +7 -0
  25. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/route.js +47 -0
  26. package/dist/modules/cpq/api/quotes/[quoteId]/price-adjustments/route.js.map +7 -0
  27. package/dist/modules/cpq/api/quotes/[quoteId]/recalculate/route.js +32 -2
  28. package/dist/modules/cpq/api/quotes/[quoteId]/recalculate/route.js.map +2 -2
  29. package/dist/modules/cpq/api/quotes/[quoteId]/status/route.js +33 -2
  30. package/dist/modules/cpq/api/quotes/[quoteId]/status/route.js.map +2 -2
  31. package/dist/modules/cpq/api/quotes/price/route.js +43 -3
  32. package/dist/modules/cpq/api/quotes/price/route.js.map +2 -2
  33. package/dist/modules/cpq/backend/cpq/inventory/AssetsTable.js +3 -9
  34. package/dist/modules/cpq/backend/cpq/inventory/AssetsTable.js.map +2 -2
  35. package/dist/modules/cpq/backend/cpq/inventory/SubscriptionsTable.js +21 -25
  36. package/dist/modules/cpq/backend/cpq/inventory/SubscriptionsTable.js.map +2 -2
  37. package/dist/modules/cpq/backend/cpq/inventory/assets/[id]/page.js +48 -47
  38. package/dist/modules/cpq/backend/cpq/inventory/assets/[id]/page.js.map +2 -2
  39. package/dist/modules/cpq/backend/cpq/inventory/assets/[id]/page.meta.js +1 -1
  40. package/dist/modules/cpq/backend/cpq/inventory/assets/[id]/page.meta.js.map +2 -2
  41. package/dist/modules/cpq/backend/cpq/inventory/page.meta.js +3 -3
  42. package/dist/modules/cpq/backend/cpq/inventory/page.meta.js.map +2 -2
  43. package/dist/modules/cpq/backend/cpq/inventory/shared.js +37 -2
  44. package/dist/modules/cpq/backend/cpq/inventory/shared.js.map +2 -2
  45. package/dist/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.js +174 -184
  46. package/dist/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.js.map +2 -2
  47. package/dist/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.meta.js +1 -1
  48. package/dist/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.meta.js.map +2 -2
  49. package/dist/modules/cpq/backend/cpq/offerings/[id]/page.js +168 -143
  50. package/dist/modules/cpq/backend/cpq/offerings/[id]/page.js.map +2 -2
  51. package/dist/modules/cpq/backend/cpq/offerings/page.js +36 -34
  52. package/dist/modules/cpq/backend/cpq/offerings/page.js.map +2 -2
  53. package/dist/modules/cpq/backend/cpq/orders/[id]/page.js +140 -280
  54. package/dist/modules/cpq/backend/cpq/orders/[id]/page.js.map +2 -2
  55. package/dist/modules/cpq/backend/cpq/orders/page.js +6 -6
  56. package/dist/modules/cpq/backend/cpq/orders/page.js.map +2 -2
  57. package/dist/modules/cpq/backend/cpq/orders/page.meta.js +1 -1
  58. package/dist/modules/cpq/backend/cpq/orders/page.meta.js.map +1 -1
  59. package/dist/modules/cpq/backend/cpq/price-rules/PriceRuleForm.js +41 -36
  60. package/dist/modules/cpq/backend/cpq/price-rules/PriceRuleForm.js.map +2 -2
  61. package/dist/modules/cpq/backend/cpq/price-rules/[id]/page.js +76 -72
  62. package/dist/modules/cpq/backend/cpq/price-rules/[id]/page.js.map +2 -2
  63. package/dist/modules/cpq/backend/cpq/price-rules/[id]/page.meta.js +1 -1
  64. package/dist/modules/cpq/backend/cpq/price-rules/[id]/page.meta.js.map +2 -2
  65. package/dist/modules/cpq/backend/cpq/price-rules/page.js +18 -15
  66. package/dist/modules/cpq/backend/cpq/price-rules/page.js.map +2 -2
  67. package/dist/modules/cpq/backend/cpq/pricing/[id]/EntriesEditor.js +23 -21
  68. package/dist/modules/cpq/backend/cpq/pricing/[id]/EntriesEditor.js.map +2 -2
  69. package/dist/modules/cpq/backend/cpq/pricing/[id]/ImportPreview.js +22 -50
  70. package/dist/modules/cpq/backend/cpq/pricing/[id]/ImportPreview.js.map +2 -2
  71. package/dist/modules/cpq/backend/cpq/pricing/[id]/page.js +74 -52
  72. package/dist/modules/cpq/backend/cpq/pricing/[id]/page.js.map +2 -2
  73. package/dist/modules/cpq/backend/cpq/pricing/[id]/xlsxImport.js +20 -17
  74. package/dist/modules/cpq/backend/cpq/pricing/[id]/xlsxImport.js.map +2 -2
  75. package/dist/modules/cpq/backend/cpq/pricing/page.js +1 -1
  76. package/dist/modules/cpq/backend/cpq/pricing/page.js.map +2 -2
  77. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/ArcQuoteConfigurator.js +115 -123
  78. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/ArcQuoteConfigurator.js.map +2 -2
  79. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentDialog.js +208 -0
  80. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentDialog.js.map +7 -0
  81. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentsPanel.js +79 -0
  82. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentsPanel.js.map +7 -0
  83. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/arcLineRemoval.js +53 -0
  84. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/arcLineRemoval.js.map +7 -0
  85. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/priceAdjustmentContext.js +107 -0
  86. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/priceAdjustmentContext.js.map +7 -0
  87. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/usePriceAdjustments.js +130 -0
  88. package/dist/modules/cpq/backend/cpq/quotes/[id]/_components/usePriceAdjustments.js.map +7 -0
  89. package/dist/modules/cpq/backend/cpq/quotes/[id]/page.js +269 -311
  90. package/dist/modules/cpq/backend/cpq/quotes/[id]/page.js.map +3 -3
  91. package/dist/modules/cpq/backend/cpq/quotes/page.js +23 -19
  92. package/dist/modules/cpq/backend/cpq/quotes/page.js.map +2 -2
  93. package/dist/modules/cpq/backend/cpq/quotes/page.meta.js +1 -1
  94. package/dist/modules/cpq/backend/cpq/quotes/page.meta.js.map +1 -1
  95. package/dist/modules/cpq/backend/cpq/specifications/[id]/DependsOnRulesEditor.js +19 -15
  96. package/dist/modules/cpq/backend/cpq/specifications/[id]/DependsOnRulesEditor.js.map +2 -2
  97. package/dist/modules/cpq/backend/cpq/specifications/[id]/page.js +171 -178
  98. package/dist/modules/cpq/backend/cpq/specifications/[id]/page.js.map +2 -2
  99. package/dist/modules/cpq/backend/cpq/specifications/page.js +2 -2
  100. package/dist/modules/cpq/backend/cpq/specifications/page.js.map +2 -2
  101. package/dist/modules/cpq/backend/cpq/wizards/[definitionCode]/detail/page.js +60 -50
  102. package/dist/modules/cpq/backend/cpq/wizards/[definitionCode]/detail/page.js.map +2 -2
  103. package/dist/modules/cpq/backend/cpq/wizards/[definitionCode]/page.js +22 -18
  104. package/dist/modules/cpq/backend/cpq/wizards/[definitionCode]/page.js.map +2 -2
  105. package/dist/modules/cpq/backend/cpq/wizards/page.js +1 -1
  106. package/dist/modules/cpq/backend/cpq/wizards/page.js.map +2 -2
  107. package/dist/modules/cpq/ce.js +8 -0
  108. package/dist/modules/cpq/ce.js.map +2 -2
  109. package/dist/modules/cpq/cli.js +34 -1
  110. package/dist/modules/cpq/cli.js.map +2 -2
  111. package/dist/modules/cpq/commands/price-adjustments.js +107 -0
  112. package/dist/modules/cpq/commands/price-adjustments.js.map +7 -0
  113. package/dist/modules/cpq/components/ArcLineDiff.js +53 -0
  114. package/dist/modules/cpq/components/ArcLineDiff.js.map +7 -0
  115. package/dist/modules/cpq/components/ChargeBreakdownTable.js +148 -0
  116. package/dist/modules/cpq/components/ChargeBreakdownTable.js.map +7 -0
  117. package/dist/modules/cpq/components/PriceWaterfall.js +68 -0
  118. package/dist/modules/cpq/components/PriceWaterfall.js.map +7 -0
  119. package/dist/modules/cpq/components/PricingSummaryCard.js +112 -0
  120. package/dist/modules/cpq/components/PricingSummaryCard.js.map +7 -0
  121. package/dist/modules/cpq/components/StatusPath.js +5 -3
  122. package/dist/modules/cpq/components/StatusPath.js.map +2 -2
  123. package/dist/modules/cpq/components/useCpqRowActions.js +10 -22
  124. package/dist/modules/cpq/components/useCpqRowActions.js.map +2 -2
  125. package/dist/modules/cpq/components/useGrantedFeatures.js +27 -0
  126. package/dist/modules/cpq/components/useGrantedFeatures.js.map +7 -0
  127. package/dist/modules/cpq/data/entities.js +97 -0
  128. package/dist/modules/cpq/data/entities.js.map +2 -2
  129. package/dist/modules/cpq/data/price-adjustments.js +70 -0
  130. package/dist/modules/cpq/data/price-adjustments.js.map +7 -0
  131. package/dist/modules/cpq/data/validators.js +4 -0
  132. package/dist/modules/cpq/data/validators.js.map +2 -2
  133. package/dist/modules/cpq/di.js +6 -0
  134. package/dist/modules/cpq/di.js.map +2 -2
  135. package/dist/modules/cpq/events.js +47 -0
  136. package/dist/modules/cpq/events.js.map +2 -2
  137. package/dist/modules/cpq/i18n/de.json +1220 -0
  138. package/dist/modules/cpq/i18n/en.json +1220 -0
  139. package/dist/modules/cpq/i18n/es.json +1220 -0
  140. package/dist/modules/cpq/i18n/pl.json +1220 -0
  141. package/dist/modules/cpq/index.js +1 -1
  142. package/dist/modules/cpq/index.js.map +2 -2
  143. package/dist/modules/cpq/lib/auditActor.js +10 -0
  144. package/dist/modules/cpq/lib/auditActor.js.map +7 -0
  145. package/dist/modules/cpq/lib/formatMoney.js +7 -0
  146. package/dist/modules/cpq/lib/formatMoney.js.map +7 -0
  147. package/dist/modules/cpq/lib/priceAdjustmentDefaults.js +60 -0
  148. package/dist/modules/cpq/lib/priceAdjustmentDefaults.js.map +7 -0
  149. package/dist/modules/cpq/lib/priceAdjustmentView.js +169 -0
  150. package/dist/modules/cpq/lib/priceAdjustmentView.js.map +7 -0
  151. package/dist/modules/cpq/lib/quotePermissions.js +13 -0
  152. package/dist/modules/cpq/lib/quotePermissions.js.map +7 -0
  153. package/dist/modules/cpq/lib/quoteSummaryView.js +28 -0
  154. package/dist/modules/cpq/lib/quoteSummaryView.js.map +7 -0
  155. package/dist/modules/cpq/migrations/Migration20261110213052.js +22 -0
  156. package/dist/modules/cpq/migrations/Migration20261110213052.js.map +7 -0
  157. package/dist/modules/cpq/services/arcLineRemoval.js +53 -0
  158. package/dist/modules/cpq/services/arcLineRemoval.js.map +7 -0
  159. package/dist/modules/cpq/services/arcPriceFreeze.js +79 -0
  160. package/dist/modules/cpq/services/arcPriceFreeze.js.map +7 -0
  161. package/dist/modules/cpq/services/cpqOrderService.js +25 -28
  162. package/dist/modules/cpq/services/cpqOrderService.js.map +2 -2
  163. package/dist/modules/cpq/services/cpqPricingService.js +7 -0
  164. package/dist/modules/cpq/services/cpqPricingService.js.map +2 -2
  165. package/dist/modules/cpq/services/cpqQuotingService.js +330 -109
  166. package/dist/modules/cpq/services/cpqQuotingService.js.map +2 -2
  167. package/dist/modules/cpq/services/orderPricingSummary.js +26 -0
  168. package/dist/modules/cpq/services/orderPricingSummary.js.map +7 -0
  169. package/dist/modules/cpq/services/priceAdjustments/adjustmentService.js +264 -0
  170. package/dist/modules/cpq/services/priceAdjustments/adjustmentService.js.map +7 -0
  171. package/dist/modules/cpq/services/priceAdjustments/chargeWaterfall.js +25 -0
  172. package/dist/modules/cpq/services/priceAdjustments/chargeWaterfall.js.map +7 -0
  173. package/dist/modules/cpq/services/priceAdjustments/loadQuoteAdjustments.js +38 -0
  174. package/dist/modules/cpq/services/priceAdjustments/loadQuoteAdjustments.js.map +7 -0
  175. package/dist/modules/cpq/services/priceAdjustments/pricingSnapshot.js +104 -0
  176. package/dist/modules/cpq/services/priceAdjustments/pricingSnapshot.js.map +7 -0
  177. package/dist/modules/cpq/services/priceAdjustments/quoteAdjustmentLifecycle.js +102 -0
  178. package/dist/modules/cpq/services/priceAdjustments/quoteAdjustmentLifecycle.js.map +7 -0
  179. package/dist/modules/cpq/services/priceAdjustments/quotePricingEvents.js +52 -0
  180. package/dist/modules/cpq/services/priceAdjustments/quotePricingEvents.js.map +7 -0
  181. package/dist/modules/cpq/services/priceAdjustments/quotePricingWrite.js +37 -0
  182. package/dist/modules/cpq/services/priceAdjustments/quotePricingWrite.js.map +7 -0
  183. package/dist/modules/cpq/services/priceAdjustments/resolveManualAdjustments.js +107 -0
  184. package/dist/modules/cpq/services/priceAdjustments/resolveManualAdjustments.js.map +7 -0
  185. package/dist/modules/cpq/services/priceAdjustments/storedAdjustmentFailure.js +30 -0
  186. package/dist/modules/cpq/services/priceAdjustments/storedAdjustmentFailure.js.map +7 -0
  187. package/dist/modules/cpq/services/types.js.map +2 -2
  188. package/dist/modules/cpq/setup.js +6 -0
  189. package/dist/modules/cpq/setup.js.map +2 -2
  190. package/dist/modules/cpq/widgets/injection/customer-inventory/widget.client.js +39 -31
  191. package/dist/modules/cpq/widgets/injection/customer-inventory/widget.client.js.map +2 -2
  192. package/dist/modules/cpq/widgets/injection/order-cpq-tab/widget.client.js +13 -5
  193. package/dist/modules/cpq/widgets/injection/order-cpq-tab/widget.client.js.map +2 -2
  194. package/dist/modules/cpq/widgets/injection/quote-configurator/widget.client.js +41 -21
  195. package/dist/modules/cpq/widgets/injection/quote-configurator/widget.client.js.map +2 -2
  196. package/dist/modules/cpq/widgets/injection-table.js +2 -2
  197. package/dist/modules/cpq/widgets/injection-table.js.map +2 -2
  198. package/dist/modules/cpq/workflows/WizardRunner.js +10 -8
  199. package/dist/modules/cpq/workflows/WizardRunner.js.map +2 -2
  200. package/dist/modules/cpq/workflows/WizardTrigger.js +15 -9
  201. package/dist/modules/cpq/workflows/WizardTrigger.js.map +2 -2
  202. package/dist/modules/cpq/workflows/steps/CustomerSelectStep.js +9 -7
  203. package/dist/modules/cpq/workflows/steps/CustomerSelectStep.js.map +2 -2
  204. package/dist/modules/cpq/workflows/steps/InventorySelectStep.js +9 -4
  205. package/dist/modules/cpq/workflows/steps/InventorySelectStep.js.map +2 -2
  206. package/dist/modules/cpq/workflows/steps/ItemListStep.js +16 -19
  207. package/dist/modules/cpq/workflows/steps/ItemListStep.js.map +2 -2
  208. package/dist/modules/cpq/workflows/steps/OfferingSelectStep.js +19 -32
  209. package/dist/modules/cpq/workflows/steps/OfferingSelectStep.js.map +2 -2
  210. package/dist/modules/cpq/workflows/steps/ProductConfigureStep.js +8 -6
  211. package/dist/modules/cpq/workflows/steps/ProductConfigureStep.js.map +2 -2
  212. package/dist/modules/cpq/workflows/steps/ReviewStep.js +32 -30
  213. package/dist/modules/cpq/workflows/steps/ReviewStep.js.map +2 -2
  214. package/dist/modules/cpq/workflows/steps/index.js +12 -0
  215. package/dist/modules/cpq/workflows/steps/index.js.map +2 -2
  216. package/package.json +1 -1
  217. package/src/modules/cpq/__integration__/TC-CPQ-ARC-012.spec.ts +134 -0
  218. package/src/modules/cpq/__tests__/i18n/dictionaries.test.ts +62 -0
  219. package/src/modules/cpq/__tests__/i18n/hardcodedStrings.test.ts +35 -0
  220. package/src/modules/cpq/__tests__/i18n/sourceScan.ts +109 -0
  221. package/src/modules/cpq/acl.ts +1 -0
  222. package/src/modules/cpq/api/__tests__/adjustmentRoutes.test.ts +79 -0
  223. package/src/modules/cpq/api/__tests__/quoteWriteGuards.test.ts +100 -0
  224. package/src/modules/cpq/api/_helpers/__tests__/quoteMutationGuard.test.ts +48 -0
  225. package/src/modules/cpq/api/_helpers/adjustmentCommandRoute.ts +45 -0
  226. package/src/modules/cpq/api/_helpers/quoteMutationGuard.ts +38 -0
  227. package/src/modules/cpq/api/_helpers/quoteRouteOpenApi.ts +19 -0
  228. package/src/modules/cpq/api/orders/[orderId]/route.ts +18 -0
  229. package/src/modules/cpq/api/orders/route.ts +51 -1
  230. package/src/modules/cpq/api/quotes/[quoteId]/items/[lineId]/restore/route.ts +56 -0
  231. package/src/modules/cpq/api/quotes/[quoteId]/items/[lineId]/route.ts +48 -1
  232. package/src/modules/cpq/api/quotes/[quoteId]/items/route.ts +31 -1
  233. package/src/modules/cpq/api/quotes/[quoteId]/price-adjustments/[adjustmentId]/route.ts +39 -0
  234. package/src/modules/cpq/api/quotes/[quoteId]/price-adjustments/preview/route.ts +24 -0
  235. package/src/modules/cpq/api/quotes/[quoteId]/price-adjustments/route.ts +40 -0
  236. package/src/modules/cpq/api/quotes/[quoteId]/recalculate/__tests__/route.test.ts +95 -0
  237. package/src/modules/cpq/api/quotes/[quoteId]/recalculate/route.ts +40 -1
  238. package/src/modules/cpq/api/quotes/[quoteId]/status/__tests__/route.test.ts +74 -0
  239. package/src/modules/cpq/api/quotes/[quoteId]/status/route.ts +37 -1
  240. package/src/modules/cpq/api/quotes/price/__tests__/route.test.ts +37 -0
  241. package/src/modules/cpq/api/quotes/price/route.ts +28 -2
  242. package/src/modules/cpq/backend/cpq/inventory/AssetsTable.tsx +3 -9
  243. package/src/modules/cpq/backend/cpq/inventory/SubscriptionsTable.tsx +22 -26
  244. package/src/modules/cpq/backend/cpq/inventory/assets/[id]/page.meta.ts +1 -1
  245. package/src/modules/cpq/backend/cpq/inventory/assets/[id]/page.tsx +43 -46
  246. package/src/modules/cpq/backend/cpq/inventory/page.meta.ts +3 -3
  247. package/src/modules/cpq/backend/cpq/inventory/shared.tsx +37 -1
  248. package/src/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.meta.ts +1 -1
  249. package/src/modules/cpq/backend/cpq/inventory/subscriptions/[id]/page.tsx +164 -120
  250. package/src/modules/cpq/backend/cpq/offerings/[id]/page.tsx +169 -130
  251. package/src/modules/cpq/backend/cpq/offerings/page.tsx +34 -24
  252. package/src/modules/cpq/backend/cpq/orders/[id]/page.tsx +122 -308
  253. package/src/modules/cpq/backend/cpq/orders/page.meta.ts +1 -1
  254. package/src/modules/cpq/backend/cpq/orders/page.tsx +6 -6
  255. package/src/modules/cpq/backend/cpq/price-rules/PriceRuleForm.tsx +48 -34
  256. package/src/modules/cpq/backend/cpq/price-rules/[id]/page.meta.ts +1 -1
  257. package/src/modules/cpq/backend/cpq/price-rules/[id]/page.tsx +76 -70
  258. package/src/modules/cpq/backend/cpq/price-rules/page.tsx +25 -16
  259. package/src/modules/cpq/backend/cpq/pricing/[id]/EntriesEditor.tsx +24 -18
  260. package/src/modules/cpq/backend/cpq/pricing/[id]/ImportPreview.tsx +29 -19
  261. package/src/modules/cpq/backend/cpq/pricing/[id]/page.tsx +95 -47
  262. package/src/modules/cpq/backend/cpq/pricing/[id]/xlsxImport.ts +23 -15
  263. package/src/modules/cpq/backend/cpq/pricing/page.tsx +1 -1
  264. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/ArcQuoteConfigurator.tsx +111 -88
  265. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentDialog.tsx +260 -0
  266. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/PriceAdjustmentsPanel.tsx +124 -0
  267. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/__tests__/PriceAdjustmentsPanel.test.tsx +76 -0
  268. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/arcLineRemoval.tsx +76 -0
  269. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/priceAdjustmentContext.tsx +133 -0
  270. package/src/modules/cpq/backend/cpq/quotes/[id]/_components/usePriceAdjustments.tsx +165 -0
  271. package/src/modules/cpq/backend/cpq/quotes/[id]/page.tsx +304 -348
  272. package/src/modules/cpq/backend/cpq/quotes/page.meta.ts +1 -1
  273. package/src/modules/cpq/backend/cpq/quotes/page.tsx +29 -21
  274. package/src/modules/cpq/backend/cpq/specifications/[id]/DependsOnRulesEditor.tsx +19 -15
  275. package/src/modules/cpq/backend/cpq/specifications/[id]/page.tsx +171 -171
  276. package/src/modules/cpq/backend/cpq/specifications/page.tsx +2 -2
  277. package/src/modules/cpq/backend/cpq/wizards/[definitionCode]/detail/page.tsx +51 -41
  278. package/src/modules/cpq/backend/cpq/wizards/[definitionCode]/page.tsx +17 -13
  279. package/src/modules/cpq/backend/cpq/wizards/page.tsx +1 -1
  280. package/src/modules/cpq/ce.ts +8 -0
  281. package/src/modules/cpq/cli.ts +48 -1
  282. package/src/modules/cpq/commands/__tests__/price-adjustments.test.ts +54 -0
  283. package/src/modules/cpq/commands/price-adjustments.ts +90 -0
  284. package/src/modules/cpq/components/ArcLineDiff.tsx +87 -0
  285. package/src/modules/cpq/components/ChargeBreakdownTable.tsx +203 -0
  286. package/src/modules/cpq/components/PriceWaterfall.tsx +96 -0
  287. package/src/modules/cpq/components/PricingSummaryCard.tsx +128 -0
  288. package/src/modules/cpq/components/StatusPath.tsx +7 -4
  289. package/src/modules/cpq/components/__tests__/PriceWaterfall.test.tsx +38 -0
  290. package/src/modules/cpq/components/useCpqRowActions.tsx +17 -25
  291. package/src/modules/cpq/components/useGrantedFeatures.ts +35 -0
  292. package/src/modules/cpq/data/__tests__/price-adjustment-migration.test.ts +11 -0
  293. package/src/modules/cpq/data/__tests__/price-adjustments.test.ts +26 -0
  294. package/src/modules/cpq/data/entities.ts +83 -0
  295. package/src/modules/cpq/data/price-adjustments.ts +67 -0
  296. package/src/modules/cpq/data/validators.ts +3 -0
  297. package/src/modules/cpq/di.ts +6 -0
  298. package/src/modules/cpq/events.ts +53 -2
  299. package/src/modules/cpq/i18n/de.json +1220 -0
  300. package/src/modules/cpq/i18n/en.json +1220 -0
  301. package/src/modules/cpq/i18n/es.json +1220 -0
  302. package/src/modules/cpq/i18n/pl.json +1220 -0
  303. package/src/modules/cpq/index.ts +1 -1
  304. package/src/modules/cpq/lib/__tests__/auditActor.test.ts +12 -0
  305. package/src/modules/cpq/lib/__tests__/priceAdjustmentDefaults.test.ts +37 -0
  306. package/src/modules/cpq/lib/__tests__/priceAdjustmentView.test.ts +152 -0
  307. package/src/modules/cpq/lib/__tests__/quotePermissions.test.ts +30 -0
  308. package/src/modules/cpq/lib/__tests__/quoteSummaryView.test.ts +56 -0
  309. package/src/modules/cpq/lib/auditActor.ts +13 -0
  310. package/src/modules/cpq/lib/formatMoney.ts +4 -0
  311. package/src/modules/cpq/lib/priceAdjustmentDefaults.ts +36 -0
  312. package/src/modules/cpq/lib/priceAdjustmentView.ts +259 -0
  313. package/src/modules/cpq/lib/quotePermissions.ts +22 -0
  314. package/src/modules/cpq/lib/quoteSummaryView.ts +51 -0
  315. package/src/modules/cpq/migrations/.snapshot-open-mercato.json +3298 -2423
  316. package/src/modules/cpq/migrations/Migration20261110213052.ts +22 -0
  317. package/src/modules/cpq/services/__tests__/_helpers/mockEm.ts +9 -2
  318. package/src/modules/cpq/services/__tests__/adjustmentService.test.ts +183 -0
  319. package/src/modules/cpq/services/__tests__/arcLineRemoval.test.ts +109 -0
  320. package/src/modules/cpq/services/__tests__/arcPriceFreeze.test.ts +141 -0
  321. package/src/modules/cpq/services/__tests__/chargeWaterfall.test.ts +28 -0
  322. package/src/modules/cpq/services/__tests__/cpqOrderService.test.ts +35 -2
  323. package/src/modules/cpq/services/__tests__/cpqPricingService.test.ts +57 -0
  324. package/src/modules/cpq/services/__tests__/cpqQuotingService.arc.test.ts +237 -0
  325. package/src/modules/cpq/services/__tests__/cpqQuotingService.test.ts +58 -3
  326. package/src/modules/cpq/services/__tests__/orderPricingSummary.test.ts +50 -0
  327. package/src/modules/cpq/services/__tests__/pricingSnapshot.test.ts +62 -0
  328. package/src/modules/cpq/services/__tests__/quoteAdjustmentLifecycle.test.ts +35 -0
  329. package/src/modules/cpq/services/__tests__/quoteAdjustmentPricing.test.ts +65 -0
  330. package/src/modules/cpq/services/__tests__/quoteCloneAdjustments.test.ts +45 -0
  331. package/src/modules/cpq/services/__tests__/quoteDetachTargetAdjustments.test.ts +54 -0
  332. package/src/modules/cpq/services/__tests__/quoteEventsService.test.ts +72 -0
  333. package/src/modules/cpq/services/__tests__/quotePricingEvents.test.ts +126 -0
  334. package/src/modules/cpq/services/__tests__/quotePricingIsolation.test.ts +52 -0
  335. package/src/modules/cpq/services/__tests__/quotePricingWrite.test.ts +74 -0
  336. package/src/modules/cpq/services/__tests__/resolveManualAdjustments.test.ts +90 -0
  337. package/src/modules/cpq/services/__tests__/storedAdjustmentFailure.test.ts +9 -0
  338. package/src/modules/cpq/services/arcLineRemoval.ts +87 -0
  339. package/src/modules/cpq/services/arcPriceFreeze.ts +165 -0
  340. package/src/modules/cpq/services/cpqOrderService.ts +22 -28
  341. package/src/modules/cpq/services/cpqPricingService.ts +8 -0
  342. package/src/modules/cpq/services/cpqQuotingService.ts +374 -125
  343. package/src/modules/cpq/services/orderPricingSummary.ts +47 -0
  344. package/src/modules/cpq/services/priceAdjustments/adjustmentService.ts +249 -0
  345. package/src/modules/cpq/services/priceAdjustments/chargeWaterfall.ts +28 -0
  346. package/src/modules/cpq/services/priceAdjustments/loadQuoteAdjustments.ts +25 -0
  347. package/src/modules/cpq/services/priceAdjustments/pricingSnapshot.ts +86 -0
  348. package/src/modules/cpq/services/priceAdjustments/quoteAdjustmentLifecycle.ts +68 -0
  349. package/src/modules/cpq/services/priceAdjustments/quotePricingEvents.ts +94 -0
  350. package/src/modules/cpq/services/priceAdjustments/quotePricingWrite.ts +51 -0
  351. package/src/modules/cpq/services/priceAdjustments/resolveManualAdjustments.ts +116 -0
  352. package/src/modules/cpq/services/priceAdjustments/storedAdjustmentFailure.ts +31 -0
  353. package/src/modules/cpq/services/types.ts +34 -1
  354. package/src/modules/cpq/setup.ts +7 -1
  355. package/src/modules/cpq/widgets/injection/customer-inventory/widget.client.tsx +38 -31
  356. package/src/modules/cpq/widgets/injection/order-cpq-tab/widget.client.tsx +7 -5
  357. package/src/modules/cpq/widgets/injection/quote-configurator/widget.client.tsx +36 -21
  358. package/src/modules/cpq/widgets/injection-table.ts +8 -2
  359. package/src/modules/cpq/workflows/WizardRunner.tsx +8 -5
  360. package/src/modules/cpq/workflows/WizardTrigger.tsx +15 -9
  361. package/src/modules/cpq/workflows/steps/CustomerSelectStep.tsx +11 -7
  362. package/src/modules/cpq/workflows/steps/InventorySelectStep.tsx +9 -5
  363. package/src/modules/cpq/workflows/steps/ItemListStep.tsx +18 -12
  364. package/src/modules/cpq/workflows/steps/OfferingSelectStep.tsx +20 -16
  365. package/src/modules/cpq/workflows/steps/ProductConfigureStep.tsx +8 -6
  366. package/src/modules/cpq/workflows/steps/ReviewStep.tsx +33 -18
  367. package/src/modules/cpq/workflows/steps/index.ts +12 -0
  368. package/src/modules/cpq/workflows/types.ts +4 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/cpq/data/entities.ts"],
4
- "sourcesContent": ["import { OptionalProps } from '@mikro-orm/core'\nimport { Entity, Index, PrimaryKey, Property, Unique } from '@mikro-orm/decorators/legacy'\n\n// \u2500\u2500\u2500 CpqProductSpecification \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// Additional indexes added in `Migration20260514110000_cpq_list_search_indexes`\n// (hand-written because MikroORM cannot express `gin_trgm_ops` / partial predicates):\n// - GIN trigram on code/name/description (powers list `$ilike` search)\n// - composite (org, tenant, deleted_at, created_at DESC) for default sort path\n@Entity({ tableName: 'cpq_product_specifications' })\n@Unique({ name: 'cpq_product_specifications_product_unique', properties: ['organizationId', 'tenantId', 'productId'] })\n@Unique({ name: 'cpq_product_specifications_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_product_specifications_lifecycle_idx', properties: ['organizationId', 'tenantId', 'lifecycleStatus'] })\nexport class CpqProductSpecification {\n [OptionalProps]?: 'specType' | 'isAssetizable' | 'lifecycleStatus' | 'version' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'spec_type', type: 'text', default: 'simple' })\n specType: string = 'simple'\n\n @Property({ name: 'is_assetizable', type: 'boolean', default: false })\n isAssetizable: boolean = false\n\n @Property({ name: 'lifecycle_status', type: 'text', default: 'draft' })\n lifecycleStatus: string = 'draft'\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductOffering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// Additional indexes added in `Migration20260514110000_cpq_list_search_indexes`\n// (hand-written because MikroORM cannot express `gin_trgm_ops` / partial predicates):\n// - GIN trigram on code/name/description (powers list `$ilike` search)\n// - composite (org, tenant, deleted_at, created_at DESC) for default sort path\n@Entity({ tableName: 'cpq_product_offerings' })\n@Unique({ name: 'cpq_product_offerings_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_product_offerings_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_product_offerings_lifecycle_idx', properties: ['organizationId', 'tenantId', 'lifecycleStatus'] })\nexport class CpqProductOffering {\n [OptionalProps]?: 'offeringType' | 'designTimeValues' | 'lifecycleStatus' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'spec_id', type: 'uuid' })\n specId!: string\n\n @Property({ name: 'catalog_offer_id', type: 'uuid', nullable: true })\n catalogOfferId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'offering_type', type: 'text', default: 'simple' })\n offeringType: string = 'simple'\n\n @Property({ name: 'design_time_values', type: 'jsonb', default: '{}' })\n designTimeValues: Record<string, unknown> = {}\n\n @Property({ name: 'lifecycle_status', type: 'text', default: 'draft' })\n lifecycleStatus: string = 'draft'\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductRelationship \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_relationships' })\n@Unique({\n name: 'cpq_product_relationships_unique',\n properties: ['organizationId', 'tenantId', 'sourceSpecId', 'targetSpecId', 'relationshipType'],\n})\n@Index({ name: 'cpq_product_relationships_source_idx', properties: ['organizationId', 'tenantId', 'sourceSpecId'] })\n@Index({ name: 'cpq_product_relationships_target_idx', properties: ['organizationId', 'tenantId', 'targetSpecId'] })\nexport class CpqProductRelationship {\n [OptionalProps]?: 'cardinalityMin' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'source_spec_id', type: 'uuid' })\n sourceSpecId!: string\n\n @Property({ name: 'target_spec_id', type: 'uuid' })\n targetSpecId!: string\n\n @Property({ name: 'relationship_type', type: 'text' })\n relationshipType!: string\n\n @Property({ name: 'cardinality_min', type: 'integer', default: 0 })\n cardinalityMin: number = 0\n\n @Property({ name: 'cardinality_max', type: 'integer', nullable: true })\n cardinalityMax?: number | null\n\n @Property({ type: 'jsonb', nullable: true })\n condition?: Record<string, unknown> | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqBundleSlot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_bundle_slots' })\n@Index({ name: 'cpq_bundle_slot_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_bundle_slot_target_idx', properties: ['organizationId', 'tenantId', 'targetSpecId'] })\n@Index({ name: 'cpq_bundle_slot_group_idx', properties: ['organizationId', 'tenantId', 'specId', 'componentGroup'] })\nexport class CpqBundleSlot {\n [OptionalProps]?: 'cardinalityMin' | 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'spec_id', type: 'uuid' })\n specId!: string\n\n @Property({ name: 'target_spec_id', type: 'uuid' })\n targetSpecId!: string\n\n @Property({ name: 'component_group', type: 'text' })\n componentGroup!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'cardinality_min', type: 'integer', default: 0 })\n cardinalityMin: number = 0\n\n @Property({ name: 'cardinality_max', type: 'integer', nullable: true })\n cardinalityMax?: number | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOfferingComponent \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_offering_components' })\n@Index({ name: 'cpq_off_comp_offering_idx', properties: ['organizationId', 'tenantId', 'offeringId'] })\n@Index({ name: 'cpq_off_comp_slot_idx', properties: ['organizationId', 'tenantId', 'offeringId', 'slotId'] })\n@Index({ name: 'cpq_off_comp_child_idx', properties: ['organizationId', 'tenantId', 'childOfferingId'] })\n@Unique({ name: 'cpq_off_comp_unique', properties: ['organizationId', 'tenantId', 'offeringId', 'childOfferingId'] })\nexport class CpqOfferingComponent {\n [OptionalProps]?: 'isDefault' | 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'offering_id', type: 'uuid' })\n offeringId!: string\n\n @Property({ name: 'slot_id', type: 'uuid' })\n slotId!: string\n\n @Property({ name: 'child_offering_id', type: 'uuid' })\n childOfferingId!: string\n\n @Property({ name: 'is_default', type: 'boolean', default: false })\n isDefault: boolean = false\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductAttribute \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_attributes' })\n@Index({ name: 'cpq_product_attributes_scope_idx', properties: ['organizationId', 'tenantId', 'productId'] })\n@Index({ name: 'cpq_product_attributes_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_product_attributes_spec_resolution_idx', properties: ['organizationId', 'tenantId', 'specId', 'resolutionTime'] })\n@Unique({\n name: 'cpq_product_attributes_code_unique',\n properties: ['organizationId', 'tenantId', 'productId', 'code'],\n})\nexport class CpqProductAttribute {\n [OptionalProps]?: 'resolutionTime' | 'isRequired' | 'isActive' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ name: 'attribute_type', type: 'text' })\n attributeType!: string\n\n @Property({ name: 'resolution_time', type: 'text', default: 'run_time' })\n resolutionTime: string = 'run_time'\n\n @Property({ type: 'jsonb', nullable: true })\n options?: Array<{ value: string; label: string }> | null\n\n @Property({ type: 'jsonb', nullable: true })\n constraints?: Record<string, unknown> | null\n\n @Property({ name: 'reference_entity', type: 'text', nullable: true })\n referenceEntity?: string | null\n\n @Property({ name: 'reference_filter', type: 'jsonb', nullable: true })\n referenceFilter?: Record<string, unknown> | null\n\n @Property({ name: 'depends_on', type: 'jsonb', nullable: true })\n dependsOn?: Record<string, unknown> | null\n\n @Property({ name: 'default_value', type: 'jsonb', nullable: true })\n defaultValue?: unknown | null\n\n @Property({ name: 'help_text', type: 'text', nullable: true })\n helpText?: string | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_required', type: 'boolean', default: true })\n isRequired: boolean = true\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPricingTable \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_pricing_tables' })\n@Index({ name: 'cpq_pricing_tables_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_pricing_tables_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\nexport class CpqPricingTable {\n [OptionalProps]?: 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'jsonb' })\n dimensions!: Array<{ key: string; label: string }>\n\n @Property({ name: 'price_columns', type: 'jsonb' })\n priceColumns!: Array<{ key: string; label: string }>\n\n @Property({ name: 'currency_code_list', type: 'jsonb' })\n currencyCodeList!: string[]\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPricingTableEntry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_pricing_table_entries' })\n@Index({ name: 'cpq_pricing_table_entries_scope_idx', properties: ['organizationId', 'tenantId', 'pricingTableId'] })\n@Index({ name: 'cpq_pricing_table_entries_dim_gin_idx', properties: ['dimensionValues'], type: 'GIN' })\nexport class CpqPricingTableEntry {\n [OptionalProps]?: 'isActive' | 'currencyCode' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'pricing_table_id', type: 'uuid' })\n pricingTableId!: string\n\n @Property({ name: 'dimension_values', type: 'jsonb' })\n dimensionValues!: Record<string, string>\n\n @Property({ name: 'tier_number', type: 'integer', nullable: true })\n tierNumber?: number | null\n\n @Property({ name: 'range_from', type: 'numeric', nullable: true })\n rangeFrom?: string | null\n\n @Property({ name: 'range_to', type: 'numeric', nullable: true })\n rangeTo?: string | null\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ type: 'jsonb' })\n prices!: Record<string, number>\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductCharge \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_charges' })\n@Index({ name: 'cpq_product_charges_scope_idx', properties: ['organizationId', 'tenantId', 'productId'] })\n@Index({ name: 'cpq_product_charges_offering_idx', properties: ['organizationId', 'tenantId', 'offeringId'] })\n@Unique({\n name: 'cpq_product_charges_offering_code_unique',\n properties: ['organizationId', 'tenantId', 'offeringId', 'code'],\n})\nexport class CpqProductCharge {\n [OptionalProps]?: 'isActive' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'charge_type', type: 'text' })\n chargeType!: string\n\n // XD-297: charge \"shape\" split into two orthogonal axes.\n // chargeModel \u2014 how quantity drives the charge: flat | per_unit | volume | tiered\n // pricingMethod \u2014 where the unit price comes from: fixed | table\n // Legacy rows (pre-split) carry the old combined pricingMethod values\n // (flat | per_unit | tiered); the migration backfills both columns and the\n // pricing service normalises any that slip through. chargeModel is nullable\n // so the additive migration is default-safe.\n @Property({ name: 'charge_model', type: 'text', nullable: true })\n chargeModel?: string | null\n\n @Property({ name: 'pricing_method', type: 'text' })\n pricingMethod!: string\n\n @Property({ name: 'pricing_table_id', type: 'uuid', nullable: true })\n pricingTableId?: string | null\n\n @Property({ name: 'price_column_key', type: 'text', nullable: true })\n priceColumnKey?: string | null\n\n @Property({ name: 'fixed_price', type: 'numeric', nullable: true })\n fixedPrice?: string | null\n\n @Property({ name: 'currency_code', type: 'text', nullable: true })\n currencyCode?: string | null\n\n @Property({ name: 'quantity_attribute_code', type: 'text', nullable: true })\n quantityAttributeCode?: string | null\n\n @Property({ name: 'applicability_condition', type: 'jsonb', nullable: true })\n applicabilityCondition?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPriceRule \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_price_rules' })\n@Index({ name: 'cpq_price_rules_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_price_rules_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_price_rules_product_idx', properties: ['organizationId', 'tenantId', 'productOfferingId'] })\nexport class CpqPriceRule {\n [OptionalProps]?: 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'product_offering_id', type: 'uuid', nullable: true })\n productOfferingId?: string | null\n\n @Property({ name: 'rule_type', type: 'text' })\n ruleType!: string\n\n @Property({ type: 'numeric' })\n value!: string\n\n @Property({ name: 'charge_code_filter', type: 'text', nullable: true })\n chargeCodeFilter?: string | null\n\n @Property({ name: 'charge_type_filter', type: 'text', nullable: true })\n chargeTypeFilter?: string | null\n\n @Property({ name: 'applicability_condition', type: 'jsonb', nullable: true })\n applicabilityCondition?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_quote_configurations' })\n@Unique({ name: 'cpq_quote_configurations_quote_unique', properties: ['organizationId', 'tenantId', 'quoteId'] })\n@Index({ name: 'cpq_quote_configurations_quote_type_idx', properties: ['organizationId', 'tenantId', 'quoteType'] })\nexport class CpqQuoteConfiguration {\n [OptionalProps]?:\n | 'cpqStatus'\n | 'version'\n | 'currencyCode'\n | 'quoteType'\n | 'createdAt'\n | 'updatedAt'\n | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'quote_id', type: 'uuid' })\n quoteId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'cpq_status', type: 'text', default: 'new' })\n cpqStatus: string = 'new'\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'parent_quote_id', type: 'uuid', nullable: true })\n parentQuoteId?: string | null\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'quote_context', type: 'jsonb', nullable: true })\n quoteContext?: Record<string, string | number | boolean> | null\n\n @Property({ name: 'validation_result', type: 'jsonb', nullable: true })\n validationResult?: Record<string, unknown> | null\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n @Property({ name: 'quote_type', type: 'text', default: 'new' })\n quoteType: string = 'new'\n\n // Cancel meta \u2014 only meaningful for quoteType='cancel'.\n @Property({ name: 'arc_reason_code', type: 'text', nullable: true })\n arcReasonCode?: string | null\n\n @Property({ name: 'arc_reason_text', type: 'text', nullable: true })\n arcReasonText?: string | null\n\n @Property({ name: 'arc_etf_amount', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n arcEtfAmount?: string | null\n\n @Property({ name: 'arc_etf_currency', type: 'text', nullable: true })\n arcEtfCurrency?: string | null\n\n // Merge meta \u2014 only meaningful for quoteType='renew' with \u22652 absorb targets.\n @Property({ name: 'arc_merge_new_term_start', type: 'date', nullable: true })\n arcMergeNewTermStart?: Date | null\n\n @Property({ name: 'arc_merge_new_term_end', type: 'date', nullable: true })\n arcMergeNewTermEnd?: Date | null\n\n @Property({ name: 'arc_merge_new_term_months', type: 'integer', nullable: true })\n arcMergeNewTermMonths?: number | null\n\n @Property({ name: 'arc_merge_new_sub_code', type: 'text', nullable: true })\n arcMergeNewSubCode?: string | null\n\n @Property({ name: 'arc_merge_new_sub_name', type: 'text', nullable: true })\n arcMergeNewSubName?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqWizardDefinition \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_wizard_definitions' })\n@Unique({ name: 'cpq_wizard_definitions_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_wizard_definitions_active_idx', properties: ['organizationId', 'tenantId', 'isActive'] })\n@Index({ name: 'cpq_wizard_definitions_surface_idx', properties: ['organizationId', 'tenantId', 'surface'] })\nexport class CpqWizardDefinition {\n [OptionalProps]?: 'version' | 'surface' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ type: 'jsonb', default: '[]' })\n steps!: Array<Record<string, unknown>>\n\n @Property({ type: 'jsonb', nullable: true })\n applicability?: Record<string, unknown> | null\n\n @Property({ name: 'params_schema', type: 'jsonb', nullable: true })\n paramsSchema?: Record<string, unknown> | null\n\n @Property({ type: 'text', default: 'backend' })\n surface: string = 'backend'\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteLineConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_quote_line_configurations' })\n@Unique({ name: 'cpq_qlc_quote_line_unique', properties: ['organizationId', 'tenantId', 'quoteLineId'] })\n@Index({ name: 'cpq_qlc_quote_config_idx', properties: ['organizationId', 'tenantId', 'quoteConfigurationId'] })\n@Index({ name: 'cpq_qlc_parent_line_idx', properties: ['organizationId', 'tenantId', 'parentLineId'] })\n@Index({ name: 'cpq_qlc_target_sub_idx', properties: ['organizationId', 'tenantId', 'targetSubscriptionId'] })\nexport class CpqQuoteLineConfiguration {\n [OptionalProps]?: 'action' | 'configuration' | 'quantity' | 'nrcTotal' | 'mrcTotal' | 'isConfigured' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'quote_line_id', type: 'uuid' })\n quoteLineId!: string\n\n @Property({ name: 'quote_configuration_id', type: 'uuid' })\n quoteConfigurationId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text', default: 'add' })\n action: string = 'add'\n\n @Property({ name: 'parent_line_id', type: 'uuid', nullable: true })\n parentLineId?: string | null\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'end_date', type: 'date', nullable: true })\n endDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'nrc_total', columnType: 'numeric(18, 4)', default: 0 })\n nrcTotal: string = '0'\n\n @Property({ name: 'mrc_total', columnType: 'numeric(18, 4)', default: 0 })\n mrcTotal: string = '0'\n\n @Property({ name: 'usage_estimates', type: 'jsonb', nullable: true })\n usageEstimates?: Array<{ chargeCode: string; estimatedQuantity: number; estimatedTotal: number }> | null\n\n @Property({ name: 'usage_total_estimated', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n usageTotalEstimated?: string | null\n\n @Property({ name: 'validation_errors', type: 'jsonb', nullable: true })\n validationErrors?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'is_configured', type: 'boolean', default: false })\n isConfigured: boolean = false\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // For quote_type='amend'/'cancel'/'renew' standalone: identifies which\n // target subscription the line affects. Null for type='new' and merge\n // mode (M doesn't exist at quote time).\n @Property({ name: 'target_subscription_id', type: 'uuid', nullable: true })\n targetSubscriptionId?: string | null\n\n // Required when action \u2208 {cancel, modify} on amend/renew quotes.\n // Identifies the existing subscription item the line is changing.\n @Property({ name: 'source_subscription_item_id', type: 'uuid', nullable: true })\n sourceSubscriptionItemId?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventorySubscription \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_subscriptions' })\n@Index({ name: 'cpq_inventory_subscriptions_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_inventory_subscriptions_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_inventory_subscriptions_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_subscriptions_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\n@Index({ name: 'cpq_inventory_subscriptions_source_quote_idx', properties: ['organizationId', 'tenantId', 'sourceQuoteId'] })\n@Index({ name: 'cpq_inventory_subscriptions_term_end_idx', properties: ['organizationId', 'tenantId', 'currentTermEnd'] })\n@Index({ name: 'cpq_inventory_subscriptions_merged_into_idx', properties: ['organizationId', 'tenantId', 'mergedIntoSubscriptionId'] })\nexport class CpqInventorySubscription {\n [OptionalProps]?:\n | 'status'\n | 'billingCycle'\n | 'currencyCode'\n | 'mrcAmount'\n | 'nrcAmount'\n | 'autoRenew'\n | 'version'\n | 'createdAt'\n | 'updatedAt'\n | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ name: 'billing_cycle', type: 'text', default: 'monthly' })\n billingCycle: string = 'monthly'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'mrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n mrcAmount: string = '0'\n\n @Property({ name: 'nrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n nrcAmount: string = '0'\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'current_term_start', type: 'date', nullable: true })\n currentTermStart?: Date | null\n\n @Property({ name: 'current_term_end', type: 'date', nullable: true })\n currentTermEnd?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'auto_renew', type: 'boolean', default: true })\n autoRenew: boolean = true\n\n @Property({ name: 'activated_at', type: Date, nullable: true })\n activatedAt?: Date | null\n\n @Property({ name: 'suspended_at', type: Date, nullable: true })\n suspendedAt?: Date | null\n\n @Property({ name: 'terminated_at', type: Date, nullable: true })\n terminatedAt?: Date | null\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Set when this row is a merge source (terminal status='superseded').\n // Points at the new merge sub M that absorbed this one.\n @Property({ name: 'merged_into_subscription_id', type: 'uuid', nullable: true })\n mergedIntoSubscriptionId?: string | null\n\n // Convenience pointer to most recent CpqSubscriptionChangeLog for fast UI.\n @Property({ name: 'last_change_log_id', type: 'uuid', nullable: true })\n lastChangeLogId?: string | null\n\n // MikroORM optimistic lock \u2014 auto-increments on every UPDATE.\n @Property({ type: 'integer', version: true })\n version: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventorySubscriptionItem \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_subscription_items' })\n@Index({ name: 'cpq_inventory_subscription_items_scope_idx', properties: ['organizationId', 'tenantId', 'subscriptionId'] })\n@Index({ name: 'cpq_inventory_subscription_items_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_subscription_items_parent_idx', properties: ['organizationId', 'tenantId', 'parentItemId'] })\n@Index({ name: 'cpq_inventory_subscription_items_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\nexport class CpqInventorySubscriptionItem {\n [OptionalProps]?: 'status' | 'configuration' | 'mrcAmount' | 'nrcAmount' | 'currencyCode' | 'quantity' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'parent_item_id', type: 'uuid', nullable: true })\n parentItemId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'mrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n mrcAmount: string = '0'\n\n @Property({ name: 'nrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n nrcAmount: string = '0'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ name: 'capacity_total', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n capacityTotal?: string | null\n\n @Property({ name: 'capacity_used', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n capacityUsed?: string | null\n\n @Property({ name: 'capacity_unit', type: 'text', nullable: true })\n capacityUnit?: string | null\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventoryAsset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_assets' })\n@Index({ name: 'cpq_inventory_assets_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_inventory_assets_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_inventory_assets_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_assets_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\n@Index({ name: 'cpq_inventory_assets_subscription_idx', properties: ['organizationId', 'tenantId', 'subscriptionId'] })\n@Index({ name: 'cpq_inventory_assets_item_idx', properties: ['organizationId', 'tenantId', 'subscriptionItemId'] })\nexport class CpqInventoryAsset {\n [OptionalProps]?: 'status' | 'assetType' | 'currencyCode' | 'purchasePrice' | 'quantity' | 'configuration' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'subscription_id', type: 'uuid', nullable: true })\n subscriptionId?: string | null\n\n @Property({ name: 'subscription_item_id', type: 'uuid', nullable: true })\n subscriptionItemId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ name: 'asset_type', type: 'text', default: 'one_time' })\n assetType: string = 'one_time'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'purchase_price', columnType: 'numeric(18, 4)', default: 0 })\n purchasePrice: string = '0'\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ name: 'purchase_date', type: 'date', nullable: true })\n purchaseDate?: Date | null\n\n @Property({ name: 'delivery_date', type: 'date', nullable: true })\n deliveryDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOrderConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_order_configurations' })\n@Unique({ name: 'cpq_order_configurations_order_unique', properties: ['organizationId', 'tenantId', 'orderId'] })\n@Index({ name: 'cpq_order_configurations_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'cpq_order_configurations_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_order_configurations_source_quote_idx', properties: ['organizationId', 'tenantId', 'sourceQuoteId'] })\n@Index({ name: 'cpq_order_configurations_status_idx', properties: ['organizationId', 'tenantId', 'cpqStatus'] })\nexport class CpqOrderConfiguration {\n [OptionalProps]?: 'cpqStatus' | 'currencyCode' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'order_id', type: 'uuid' })\n orderId!: string\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'cpq_status', type: 'text', default: 'draft' })\n cpqStatus: string = 'draft'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'activated_at', type: Date, nullable: true })\n activatedAt?: Date | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOrderLineConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_order_line_configurations' })\n@Unique({ name: 'cpq_olc_order_line_unique', properties: ['organizationId', 'tenantId', 'orderLineId'] })\n@Index({ name: 'cpq_olc_order_config_idx', properties: ['organizationId', 'tenantId', 'orderConfigurationId'] })\n@Index({ name: 'cpq_olc_parent_line_idx', properties: ['organizationId', 'tenantId', 'parentLineId'] })\nexport class CpqOrderLineConfiguration {\n [OptionalProps]?: 'action' | 'configuration' | 'quantity' | 'nrcTotal' | 'mrcTotal' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'order_line_id', type: 'uuid' })\n orderLineId!: string\n\n @Property({ name: 'order_configuration_id', type: 'uuid' })\n orderConfigurationId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text', default: 'add' })\n action: string = 'add'\n\n @Property({ name: 'parent_line_id', type: 'uuid', nullable: true })\n parentLineId?: string | null\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'end_date', type: 'date', nullable: true })\n endDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'nrc_total', columnType: 'numeric(18, 4)', default: 0 })\n nrcTotal: string = '0'\n\n @Property({ name: 'mrc_total', columnType: 'numeric(18, 4)', default: 0 })\n mrcTotal: string = '0'\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteTargetSubscription (XD-250 ARC) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Junction between an ARC quote and the subscription(s) it targets.\n// One row per (quote, subscription) pair.\n\n@Entity({ tableName: 'cpq_quote_target_subscriptions' })\n@Unique({\n name: 'cpq_qts_quote_sub_unique',\n properties: ['organizationId', 'tenantId', 'quoteId', 'subscriptionId'],\n})\n@Index({ name: 'cpq_qts_quote_idx', properties: ['organizationId', 'tenantId', 'quoteId'] })\n@Index({\n name: 'cpq_qts_sub_type_idx',\n properties: ['organizationId', 'tenantId', 'subscriptionId', 'quoteType'],\n})\nexport class CpqQuoteTargetSubscription {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n // FK to CpqQuoteConfiguration.id (intra-module \u2014 could be ORM relation,\n // kept as string id for consistency with the rest of the CPQ schema).\n @Property({ name: 'quote_id', type: 'uuid' })\n quoteId!: string\n\n // FK to CpqInventorySubscription.id (intra-module).\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n // MUST mirror parent CpqQuoteConfiguration.quoteType \u2208 {amend, renew, cancel}.\n @Property({ name: 'quote_type', type: 'text' })\n quoteType!: string\n\n // Renew-only: standalone (single target, in-place mutation) or absorb\n // (merge source \u2014 items migrate to a new sub at activation). Null for\n // amend / cancel.\n @Property({ name: 'merge_action', type: 'text', nullable: true })\n mergeAction?: string | null\n\n // Renew-only, populated only when merge_action='standalone'.\n @Property({ name: 'new_term_start', type: 'date', nullable: true })\n newTermStart?: Date | null\n\n @Property({ name: 'new_term_end', type: 'date', nullable: true })\n newTermEnd?: Date | null\n\n @Property({ name: 'new_term_months', type: 'integer', nullable: true })\n newTermMonths?: number | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqSubscriptionChangeLog (XD-250 ARC) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Append-only audit record. One row per ARC operation per affected\n// subscription. Drives the \"Change History\" UI tab and downstream\n// billing / notification consumers.\n\n@Entity({ tableName: 'cpq_subscription_change_logs' })\n@Index({\n name: 'cpq_scl_sub_history_idx',\n properties: ['organizationId', 'tenantId', 'subscriptionId', 'createdAt'],\n})\n@Index({ name: 'cpq_scl_source_order_idx', properties: ['sourceOrderId'] })\n@Index({ name: 'cpq_scl_merged_into_idx', properties: ['mergedIntoSubscriptionId'] })\n// Idempotency: re-running activation for the same (order, sub) pair is a no-op.\n// PostgreSQL treats NULLs as distinct in UNIQUE indexes by default, so multiple\n// rows with NULL source_order_id can coexist for the same subscription\n// (hypothetical future non-order-driven entries \u2014 manual reconciliation, etc.).\n@Unique({\n name: 'cpq_scl_order_sub_unique',\n properties: ['sourceOrderId', 'subscriptionId'],\n})\nexport class CpqSubscriptionChangeLog {\n [OptionalProps]?: 'createdAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n // FK to CpqInventorySubscription.id (intra-module).\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n // 'amend' | 'renew' | 'cancel' | 'merge-result' | 'merge-source'.\n // Validated in service layer (see CHANGE_LOG_TYPES in services/types.ts).\n @Property({ name: 'change_type', type: 'text' })\n changeType!: string\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n @Property({ name: 'performed_by_user_id', type: 'uuid', nullable: true })\n performedByUserId?: string | null\n\n @Property({ name: 'effective_at', type: Date })\n effectiveAt: Date = new Date()\n\n // Full state snapshot (subscription + items + assets) before mutation.\n // Null on change_type='merge-result' (M is brand new \u2014 no \"before\").\n @Property({ name: 'before_snapshot', type: 'jsonb', nullable: true })\n beforeSnapshot?: Record<string, unknown> | null\n\n // Full state snapshot after mutation. Null on change_type='merge-source'\n // (source's terminal state is the meaningful \"after\").\n @Property({ name: 'after_snapshot', type: 'jsonb', nullable: true })\n afterSnapshot?: Record<string, unknown> | null\n\n // Summary array: [{ action, lineId, productCode, qty, mrcDelta, ... }]\n @Property({ name: 'line_changes', type: 'jsonb', nullable: true })\n lineChanges?: Array<Record<string, unknown>> | null\n\n // { oldTermStart, newTermStart, oldTermEnd, newTermEnd, oldTermMonths, newTermMonths }\n // Populated for change_type='renew' (standalone) and 'merge-result'.\n @Property({ name: 'term_change', type: 'jsonb', nullable: true })\n termChange?: Record<string, unknown> | null\n\n // Set on change_type='merge-source' rows; points at the new merge sub M.\n @Property({ name: 'merged_into_subscription_id', type: 'uuid', nullable: true })\n mergedIntoSubscriptionId?: string | null\n\n // Set on change_type='merge-result' rows; array of source ids absorbed into M.\n @Property({ name: 'merged_from_subscription_ids', type: 'jsonb', nullable: true })\n mergedFromSubscriptionIds?: string[] | null\n\n // Cancel-only.\n @Property({ name: 'reason_code', type: 'text', nullable: true })\n reasonCode?: string | null\n\n @Property({ name: 'reason_text', type: 'text', nullable: true })\n reasonText?: string | null\n\n @Property({ name: 'etf_amount', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n etfAmount?: string | null\n\n @Property({ name: 'etf_currency', type: 'text', nullable: true })\n etfCurrency?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n // Soft-delete reserved for compliance erasure; runtime ignores deleted rows.\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { OptionalProps } from '@mikro-orm/core'\nimport { Entity, Index, PrimaryKey, Property, Unique } from '@mikro-orm/decorators/legacy'\n\n// \u2500\u2500\u2500 CpqProductSpecification \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// Additional indexes added in `Migration20260514110000_cpq_list_search_indexes`\n// (hand-written because MikroORM cannot express `gin_trgm_ops` / partial predicates):\n// - GIN trigram on code/name/description (powers list `$ilike` search)\n// - composite (org, tenant, deleted_at, created_at DESC) for default sort path\n@Entity({ tableName: 'cpq_product_specifications' })\n@Unique({ name: 'cpq_product_specifications_product_unique', properties: ['organizationId', 'tenantId', 'productId'] })\n@Unique({ name: 'cpq_product_specifications_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_product_specifications_lifecycle_idx', properties: ['organizationId', 'tenantId', 'lifecycleStatus'] })\nexport class CpqProductSpecification {\n [OptionalProps]?: 'specType' | 'isAssetizable' | 'lifecycleStatus' | 'version' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'spec_type', type: 'text', default: 'simple' })\n specType: string = 'simple'\n\n @Property({ name: 'is_assetizable', type: 'boolean', default: false })\n isAssetizable: boolean = false\n\n @Property({ name: 'lifecycle_status', type: 'text', default: 'draft' })\n lifecycleStatus: string = 'draft'\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductOffering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// Additional indexes added in `Migration20260514110000_cpq_list_search_indexes`\n// (hand-written because MikroORM cannot express `gin_trgm_ops` / partial predicates):\n// - GIN trigram on code/name/description (powers list `$ilike` search)\n// - composite (org, tenant, deleted_at, created_at DESC) for default sort path\n@Entity({ tableName: 'cpq_product_offerings' })\n@Unique({ name: 'cpq_product_offerings_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_product_offerings_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_product_offerings_lifecycle_idx', properties: ['organizationId', 'tenantId', 'lifecycleStatus'] })\nexport class CpqProductOffering {\n [OptionalProps]?: 'offeringType' | 'designTimeValues' | 'lifecycleStatus' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'spec_id', type: 'uuid' })\n specId!: string\n\n @Property({ name: 'catalog_offer_id', type: 'uuid', nullable: true })\n catalogOfferId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'offering_type', type: 'text', default: 'simple' })\n offeringType: string = 'simple'\n\n @Property({ name: 'design_time_values', type: 'jsonb', default: '{}' })\n designTimeValues: Record<string, unknown> = {}\n\n @Property({ name: 'lifecycle_status', type: 'text', default: 'draft' })\n lifecycleStatus: string = 'draft'\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductRelationship \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_relationships' })\n@Unique({\n name: 'cpq_product_relationships_unique',\n properties: ['organizationId', 'tenantId', 'sourceSpecId', 'targetSpecId', 'relationshipType'],\n})\n@Index({ name: 'cpq_product_relationships_source_idx', properties: ['organizationId', 'tenantId', 'sourceSpecId'] })\n@Index({ name: 'cpq_product_relationships_target_idx', properties: ['organizationId', 'tenantId', 'targetSpecId'] })\nexport class CpqProductRelationship {\n [OptionalProps]?: 'cardinalityMin' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'source_spec_id', type: 'uuid' })\n sourceSpecId!: string\n\n @Property({ name: 'target_spec_id', type: 'uuid' })\n targetSpecId!: string\n\n @Property({ name: 'relationship_type', type: 'text' })\n relationshipType!: string\n\n @Property({ name: 'cardinality_min', type: 'integer', default: 0 })\n cardinalityMin: number = 0\n\n @Property({ name: 'cardinality_max', type: 'integer', nullable: true })\n cardinalityMax?: number | null\n\n @Property({ type: 'jsonb', nullable: true })\n condition?: Record<string, unknown> | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqBundleSlot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_bundle_slots' })\n@Index({ name: 'cpq_bundle_slot_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_bundle_slot_target_idx', properties: ['organizationId', 'tenantId', 'targetSpecId'] })\n@Index({ name: 'cpq_bundle_slot_group_idx', properties: ['organizationId', 'tenantId', 'specId', 'componentGroup'] })\nexport class CpqBundleSlot {\n [OptionalProps]?: 'cardinalityMin' | 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'spec_id', type: 'uuid' })\n specId!: string\n\n @Property({ name: 'target_spec_id', type: 'uuid' })\n targetSpecId!: string\n\n @Property({ name: 'component_group', type: 'text' })\n componentGroup!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'cardinality_min', type: 'integer', default: 0 })\n cardinalityMin: number = 0\n\n @Property({ name: 'cardinality_max', type: 'integer', nullable: true })\n cardinalityMax?: number | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOfferingComponent \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_offering_components' })\n@Index({ name: 'cpq_off_comp_offering_idx', properties: ['organizationId', 'tenantId', 'offeringId'] })\n@Index({ name: 'cpq_off_comp_slot_idx', properties: ['organizationId', 'tenantId', 'offeringId', 'slotId'] })\n@Index({ name: 'cpq_off_comp_child_idx', properties: ['organizationId', 'tenantId', 'childOfferingId'] })\n@Unique({ name: 'cpq_off_comp_unique', properties: ['organizationId', 'tenantId', 'offeringId', 'childOfferingId'] })\nexport class CpqOfferingComponent {\n [OptionalProps]?: 'isDefault' | 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'offering_id', type: 'uuid' })\n offeringId!: string\n\n @Property({ name: 'slot_id', type: 'uuid' })\n slotId!: string\n\n @Property({ name: 'child_offering_id', type: 'uuid' })\n childOfferingId!: string\n\n @Property({ name: 'is_default', type: 'boolean', default: false })\n isDefault: boolean = false\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductAttribute \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_attributes' })\n@Index({ name: 'cpq_product_attributes_scope_idx', properties: ['organizationId', 'tenantId', 'productId'] })\n@Index({ name: 'cpq_product_attributes_spec_idx', properties: ['organizationId', 'tenantId', 'specId'] })\n@Index({ name: 'cpq_product_attributes_spec_resolution_idx', properties: ['organizationId', 'tenantId', 'specId', 'resolutionTime'] })\n@Unique({\n name: 'cpq_product_attributes_code_unique',\n properties: ['organizationId', 'tenantId', 'productId', 'code'],\n})\nexport class CpqProductAttribute {\n [OptionalProps]?: 'resolutionTime' | 'isRequired' | 'isActive' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ name: 'attribute_type', type: 'text' })\n attributeType!: string\n\n @Property({ name: 'resolution_time', type: 'text', default: 'run_time' })\n resolutionTime: string = 'run_time'\n\n @Property({ type: 'jsonb', nullable: true })\n options?: Array<{ value: string; label: string }> | null\n\n @Property({ type: 'jsonb', nullable: true })\n constraints?: Record<string, unknown> | null\n\n @Property({ name: 'reference_entity', type: 'text', nullable: true })\n referenceEntity?: string | null\n\n @Property({ name: 'reference_filter', type: 'jsonb', nullable: true })\n referenceFilter?: Record<string, unknown> | null\n\n @Property({ name: 'depends_on', type: 'jsonb', nullable: true })\n dependsOn?: Record<string, unknown> | null\n\n @Property({ name: 'default_value', type: 'jsonb', nullable: true })\n defaultValue?: unknown | null\n\n @Property({ name: 'help_text', type: 'text', nullable: true })\n helpText?: string | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_required', type: 'boolean', default: true })\n isRequired: boolean = true\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPricingTable \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_pricing_tables' })\n@Index({ name: 'cpq_pricing_tables_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_pricing_tables_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\nexport class CpqPricingTable {\n [OptionalProps]?: 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'jsonb' })\n dimensions!: Array<{ key: string; label: string }>\n\n @Property({ name: 'price_columns', type: 'jsonb' })\n priceColumns!: Array<{ key: string; label: string }>\n\n @Property({ name: 'currency_code_list', type: 'jsonb' })\n currencyCodeList!: string[]\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPricingTableEntry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_pricing_table_entries' })\n@Index({ name: 'cpq_pricing_table_entries_scope_idx', properties: ['organizationId', 'tenantId', 'pricingTableId'] })\n@Index({ name: 'cpq_pricing_table_entries_dim_gin_idx', properties: ['dimensionValues'], type: 'GIN' })\nexport class CpqPricingTableEntry {\n [OptionalProps]?: 'isActive' | 'currencyCode' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'pricing_table_id', type: 'uuid' })\n pricingTableId!: string\n\n @Property({ name: 'dimension_values', type: 'jsonb' })\n dimensionValues!: Record<string, string>\n\n @Property({ name: 'tier_number', type: 'integer', nullable: true })\n tierNumber?: number | null\n\n @Property({ name: 'range_from', type: 'numeric', nullable: true })\n rangeFrom?: string | null\n\n @Property({ name: 'range_to', type: 'numeric', nullable: true })\n rangeTo?: string | null\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ type: 'jsonb' })\n prices!: Record<string, number>\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqProductCharge \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_product_charges' })\n@Index({ name: 'cpq_product_charges_scope_idx', properties: ['organizationId', 'tenantId', 'productId'] })\n@Index({ name: 'cpq_product_charges_offering_idx', properties: ['organizationId', 'tenantId', 'offeringId'] })\n@Unique({\n name: 'cpq_product_charges_offering_code_unique',\n properties: ['organizationId', 'tenantId', 'offeringId', 'code'],\n})\nexport class CpqProductCharge {\n [OptionalProps]?: 'isActive' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'product_id', type: 'uuid' })\n productId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'charge_type', type: 'text' })\n chargeType!: string\n\n // XD-297: charge \"shape\" split into two orthogonal axes.\n // chargeModel \u2014 how quantity drives the charge: flat | per_unit | volume | tiered\n // pricingMethod \u2014 where the unit price comes from: fixed | table\n // Legacy rows (pre-split) carry the old combined pricingMethod values\n // (flat | per_unit | tiered); the migration backfills both columns and the\n // pricing service normalises any that slip through. chargeModel is nullable\n // so the additive migration is default-safe.\n @Property({ name: 'charge_model', type: 'text', nullable: true })\n chargeModel?: string | null\n\n @Property({ name: 'pricing_method', type: 'text' })\n pricingMethod!: string\n\n @Property({ name: 'pricing_table_id', type: 'uuid', nullable: true })\n pricingTableId?: string | null\n\n @Property({ name: 'price_column_key', type: 'text', nullable: true })\n priceColumnKey?: string | null\n\n @Property({ name: 'fixed_price', type: 'numeric', nullable: true })\n fixedPrice?: string | null\n\n @Property({ name: 'currency_code', type: 'text', nullable: true })\n currencyCode?: string | null\n\n @Property({ name: 'quantity_attribute_code', type: 'text', nullable: true })\n quantityAttributeCode?: string | null\n\n @Property({ name: 'applicability_condition', type: 'jsonb', nullable: true })\n applicabilityCondition?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqPriceRule \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_price_rules' })\n@Index({ name: 'cpq_price_rules_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_price_rules_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_price_rules_product_idx', properties: ['organizationId', 'tenantId', 'productOfferingId'] })\nexport class CpqPriceRule {\n [OptionalProps]?: 'sortOrder' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'product_offering_id', type: 'uuid', nullable: true })\n productOfferingId?: string | null\n\n @Property({ name: 'rule_type', type: 'text' })\n ruleType!: string\n\n @Property({ type: 'numeric' })\n value!: string\n\n @Property({ name: 'charge_code_filter', type: 'text', nullable: true })\n chargeCodeFilter?: string | null\n\n @Property({ name: 'charge_type_filter', type: 'text', nullable: true })\n chargeTypeFilter?: string | null\n\n @Property({ name: 'applicability_condition', type: 'jsonb', nullable: true })\n applicabilityCondition?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_quote_configurations' })\n@Unique({ name: 'cpq_quote_configurations_quote_unique', properties: ['organizationId', 'tenantId', 'quoteId'] })\n@Index({ name: 'cpq_quote_configurations_quote_type_idx', properties: ['organizationId', 'tenantId', 'quoteType'] })\nexport class CpqQuoteConfiguration {\n [OptionalProps]?:\n | 'cpqStatus'\n | 'pricingRevision'\n | 'version'\n | 'currencyCode'\n | 'quoteType'\n | 'createdAt'\n | 'updatedAt'\n | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'quote_id', type: 'uuid' })\n quoteId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'pricing_revision', type: 'integer', default: 0 })\n pricingRevision: number = 0\n\n @Property({ name: 'cpq_status', type: 'text', default: 'new' })\n cpqStatus: string = 'new'\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'parent_quote_id', type: 'uuid', nullable: true })\n parentQuoteId?: string | null\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'quote_context', type: 'jsonb', nullable: true })\n quoteContext?: Record<string, string | number | boolean> | null\n\n @Property({ name: 'validation_result', type: 'jsonb', nullable: true })\n validationResult?: Record<string, unknown> | null\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n @Property({ name: 'quote_type', type: 'text', default: 'new' })\n quoteType: string = 'new'\n\n // Cancel meta \u2014 only meaningful for quoteType='cancel'.\n @Property({ name: 'arc_reason_code', type: 'text', nullable: true })\n arcReasonCode?: string | null\n\n @Property({ name: 'arc_reason_text', type: 'text', nullable: true })\n arcReasonText?: string | null\n\n @Property({ name: 'arc_etf_amount', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n arcEtfAmount?: string | null\n\n @Property({ name: 'arc_etf_currency', type: 'text', nullable: true })\n arcEtfCurrency?: string | null\n\n // Merge meta \u2014 only meaningful for quoteType='renew' with \u22652 absorb targets.\n @Property({ name: 'arc_merge_new_term_start', type: 'date', nullable: true })\n arcMergeNewTermStart?: Date | null\n\n @Property({ name: 'arc_merge_new_term_end', type: 'date', nullable: true })\n arcMergeNewTermEnd?: Date | null\n\n @Property({ name: 'arc_merge_new_term_months', type: 'integer', nullable: true })\n arcMergeNewTermMonths?: number | null\n\n @Property({ name: 'arc_merge_new_sub_code', type: 'text', nullable: true })\n arcMergeNewSubCode?: string | null\n\n @Property({ name: 'arc_merge_new_sub_name', type: 'text', nullable: true })\n arcMergeNewSubName?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqWizardDefinition \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_wizard_definitions' })\n@Unique({ name: 'cpq_wizard_definitions_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_wizard_definitions_active_idx', properties: ['organizationId', 'tenantId', 'isActive'] })\n@Index({ name: 'cpq_wizard_definitions_surface_idx', properties: ['organizationId', 'tenantId', 'surface'] })\nexport class CpqWizardDefinition {\n [OptionalProps]?: 'version' | 'surface' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ type: 'jsonb', default: '[]' })\n steps!: Array<Record<string, unknown>>\n\n @Property({ type: 'jsonb', nullable: true })\n applicability?: Record<string, unknown> | null\n\n @Property({ name: 'params_schema', type: 'jsonb', nullable: true })\n paramsSchema?: Record<string, unknown> | null\n\n @Property({ type: 'text', default: 'backend' })\n surface: string = 'backend'\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteLineConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_quote_line_configurations' })\n@Unique({ name: 'cpq_qlc_quote_line_unique', properties: ['organizationId', 'tenantId', 'quoteLineId'] })\n@Index({ name: 'cpq_qlc_quote_config_idx', properties: ['organizationId', 'tenantId', 'quoteConfigurationId'] })\n@Index({ name: 'cpq_qlc_parent_line_idx', properties: ['organizationId', 'tenantId', 'parentLineId'] })\n@Index({ name: 'cpq_qlc_target_sub_idx', properties: ['organizationId', 'tenantId', 'targetSubscriptionId'] })\nexport class CpqQuoteLineConfiguration {\n [OptionalProps]?: 'action' | 'configuration' | 'quantity' | 'nrcTotal' | 'mrcTotal' | 'isConfigured' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'quote_line_id', type: 'uuid' })\n quoteLineId!: string\n\n @Property({ name: 'quote_configuration_id', type: 'uuid' })\n quoteConfigurationId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text', default: 'add' })\n action: string = 'add'\n\n @Property({ name: 'parent_line_id', type: 'uuid', nullable: true })\n parentLineId?: string | null\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'end_date', type: 'date', nullable: true })\n endDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'nrc_total', columnType: 'numeric(18, 4)', default: 0 })\n nrcTotal: string = '0'\n\n @Property({ name: 'mrc_total', columnType: 'numeric(18, 4)', default: 0 })\n mrcTotal: string = '0'\n\n @Property({ name: 'usage_estimates', type: 'jsonb', nullable: true })\n usageEstimates?: Array<{ chargeCode: string; estimatedQuantity: number; estimatedTotal: number }> | null\n\n @Property({ name: 'usage_total_estimated', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n usageTotalEstimated?: string | null\n\n @Property({ name: 'validation_errors', type: 'jsonb', nullable: true })\n validationErrors?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'is_configured', type: 'boolean', default: false })\n isConfigured: boolean = false\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // For quote_type='amend'/'cancel'/'renew' standalone: identifies which\n // target subscription the line affects. Null for type='new' and merge\n // mode (M doesn't exist at quote time).\n @Property({ name: 'target_subscription_id', type: 'uuid', nullable: true })\n targetSubscriptionId?: string | null\n\n // Required when action \u2208 {cancel, modify} on amend/renew quotes.\n // Identifies the existing subscription item the line is changing.\n @Property({ name: 'source_subscription_item_id', type: 'uuid', nullable: true })\n sourceSubscriptionItemId?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventorySubscription \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_subscriptions' })\n@Index({ name: 'cpq_inventory_subscriptions_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_inventory_subscriptions_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_inventory_subscriptions_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_subscriptions_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\n@Index({ name: 'cpq_inventory_subscriptions_source_quote_idx', properties: ['organizationId', 'tenantId', 'sourceQuoteId'] })\n@Index({ name: 'cpq_inventory_subscriptions_term_end_idx', properties: ['organizationId', 'tenantId', 'currentTermEnd'] })\n@Index({ name: 'cpq_inventory_subscriptions_merged_into_idx', properties: ['organizationId', 'tenantId', 'mergedIntoSubscriptionId'] })\nexport class CpqInventorySubscription {\n [OptionalProps]?:\n | 'status'\n | 'billingCycle'\n | 'currencyCode'\n | 'mrcAmount'\n | 'nrcAmount'\n | 'autoRenew'\n | 'version'\n | 'createdAt'\n | 'updatedAt'\n | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ name: 'billing_cycle', type: 'text', default: 'monthly' })\n billingCycle: string = 'monthly'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'mrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n mrcAmount: string = '0'\n\n @Property({ name: 'nrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n nrcAmount: string = '0'\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'current_term_start', type: 'date', nullable: true })\n currentTermStart?: Date | null\n\n @Property({ name: 'current_term_end', type: 'date', nullable: true })\n currentTermEnd?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'auto_renew', type: 'boolean', default: true })\n autoRenew: boolean = true\n\n @Property({ name: 'activated_at', type: Date, nullable: true })\n activatedAt?: Date | null\n\n @Property({ name: 'suspended_at', type: Date, nullable: true })\n suspendedAt?: Date | null\n\n @Property({ name: 'terminated_at', type: Date, nullable: true })\n terminatedAt?: Date | null\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n // \u2500\u2500 ARC (Amend / Renew / Cancel) \u2014 XD-250 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Set when this row is a merge source (terminal status='superseded').\n // Points at the new merge sub M that absorbed this one.\n @Property({ name: 'merged_into_subscription_id', type: 'uuid', nullable: true })\n mergedIntoSubscriptionId?: string | null\n\n // Convenience pointer to most recent CpqSubscriptionChangeLog for fast UI.\n @Property({ name: 'last_change_log_id', type: 'uuid', nullable: true })\n lastChangeLogId?: string | null\n\n // MikroORM optimistic lock \u2014 auto-increments on every UPDATE.\n @Property({ type: 'integer', version: true })\n version: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventorySubscriptionItem \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_subscription_items' })\n@Index({ name: 'cpq_inventory_subscription_items_scope_idx', properties: ['organizationId', 'tenantId', 'subscriptionId'] })\n@Index({ name: 'cpq_inventory_subscription_items_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_subscription_items_parent_idx', properties: ['organizationId', 'tenantId', 'parentItemId'] })\n@Index({ name: 'cpq_inventory_subscription_items_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\nexport class CpqInventorySubscriptionItem {\n [OptionalProps]?: 'status' | 'configuration' | 'mrcAmount' | 'nrcAmount' | 'currencyCode' | 'quantity' | 'sortOrder' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'parent_item_id', type: 'uuid', nullable: true })\n parentItemId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'mrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n mrcAmount: string = '0'\n\n @Property({ name: 'nrc_amount', columnType: 'numeric(18, 4)', default: 0 })\n nrcAmount: string = '0'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ name: 'capacity_total', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n capacityTotal?: string | null\n\n @Property({ name: 'capacity_used', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n capacityUsed?: string | null\n\n @Property({ name: 'capacity_unit', type: 'text', nullable: true })\n capacityUnit?: string | null\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'sort_order', type: 'integer', default: 0 })\n sortOrder: number = 0\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqInventoryAsset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_inventory_assets' })\n@Index({ name: 'cpq_inventory_assets_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Unique({ name: 'cpq_inventory_assets_code_unique', properties: ['organizationId', 'tenantId', 'code'] })\n@Index({ name: 'cpq_inventory_assets_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_inventory_assets_status_idx', properties: ['organizationId', 'tenantId', 'status'] })\n@Index({ name: 'cpq_inventory_assets_subscription_idx', properties: ['organizationId', 'tenantId', 'subscriptionId'] })\n@Index({ name: 'cpq_inventory_assets_item_idx', properties: ['organizationId', 'tenantId', 'subscriptionItemId'] })\nexport class CpqInventoryAsset {\n [OptionalProps]?: 'status' | 'assetType' | 'currencyCode' | 'purchasePrice' | 'quantity' | 'configuration' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'subscription_id', type: 'uuid', nullable: true })\n subscriptionId?: string | null\n\n @Property({ name: 'subscription_item_id', type: 'uuid', nullable: true })\n subscriptionItemId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text', nullable: true })\n description?: string | null\n\n @Property({ type: 'text', default: 'pending' })\n status: string = 'pending'\n\n @Property({ name: 'asset_type', type: 'text', default: 'one_time' })\n assetType: string = 'one_time'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'purchase_price', columnType: 'numeric(18, 4)', default: 0 })\n purchasePrice: string = '0'\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ name: 'purchase_date', type: 'date', nullable: true })\n purchaseDate?: Date | null\n\n @Property({ name: 'delivery_date', type: 'date', nullable: true })\n deliveryDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOrderConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_order_configurations' })\n@Unique({ name: 'cpq_order_configurations_order_unique', properties: ['organizationId', 'tenantId', 'orderId'] })\n@Index({ name: 'cpq_order_configurations_scope_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'cpq_order_configurations_customer_idx', properties: ['organizationId', 'tenantId', 'customerId'] })\n@Index({ name: 'cpq_order_configurations_source_quote_idx', properties: ['organizationId', 'tenantId', 'sourceQuoteId'] })\n@Index({ name: 'cpq_order_configurations_status_idx', properties: ['organizationId', 'tenantId', 'cpqStatus'] })\nexport class CpqOrderConfiguration {\n [OptionalProps]?: 'cpqStatus' | 'currencyCode' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'order_id', type: 'uuid' })\n orderId!: string\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'customer_id', type: 'uuid' })\n customerId!: string\n\n @Property({ name: 'cpq_status', type: 'text', default: 'draft' })\n cpqStatus: string = 'draft'\n\n @Property({ name: 'currency_code', type: 'text', default: 'USD' })\n currencyCode: string = 'USD'\n\n @Property({ name: 'pricing_summary', type: 'jsonb', nullable: true })\n pricingSummary?: Record<string, unknown> | null\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: Record<string, unknown> | null\n\n @Property({ name: 'activated_at', type: Date, nullable: true })\n activatedAt?: Date | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqOrderLineConfiguration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n@Entity({ tableName: 'cpq_order_line_configurations' })\n@Unique({ name: 'cpq_olc_order_line_unique', properties: ['organizationId', 'tenantId', 'orderLineId'] })\n@Index({ name: 'cpq_olc_order_config_idx', properties: ['organizationId', 'tenantId', 'orderConfigurationId'] })\n@Index({ name: 'cpq_olc_parent_line_idx', properties: ['organizationId', 'tenantId', 'parentLineId'] })\nexport class CpqOrderLineConfiguration {\n [OptionalProps]?: 'action' | 'configuration' | 'quantity' | 'nrcTotal' | 'mrcTotal' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'order_line_id', type: 'uuid' })\n orderLineId!: string\n\n @Property({ name: 'order_configuration_id', type: 'uuid' })\n orderConfigurationId!: string\n\n @Property({ name: 'offering_id', type: 'uuid', nullable: true })\n offeringId?: string | null\n\n @Property({ name: 'product_id', type: 'uuid', nullable: true })\n productId?: string | null\n\n @Property({ name: 'spec_id', type: 'uuid', nullable: true })\n specId?: string | null\n\n @Property({ type: 'text', default: 'add' })\n action: string = 'add'\n\n @Property({ name: 'parent_line_id', type: 'uuid', nullable: true })\n parentLineId?: string | null\n\n @Property({ name: 'start_date', type: 'date', nullable: true })\n startDate?: Date | null\n\n @Property({ name: 'term_months', type: 'integer', nullable: true })\n termMonths?: number | null\n\n @Property({ name: 'end_date', type: 'date', nullable: true })\n endDate?: Date | null\n\n @Property({ type: 'jsonb', default: '{}' })\n configuration: Record<string, unknown> = {}\n\n @Property({ type: 'integer', default: 1 })\n quantity: number = 1\n\n @Property({ type: 'jsonb', nullable: true })\n charges?: Array<Record<string, unknown>> | null\n\n @Property({ name: 'nrc_total', columnType: 'numeric(18, 4)', default: 0 })\n nrcTotal: string = '0'\n\n @Property({ name: 'mrc_total', columnType: 'numeric(18, 4)', default: 0 })\n mrcTotal: string = '0'\n\n @Property({ name: 'source_quote_line_id', type: 'uuid', nullable: true })\n sourceQuoteLineId?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqQuoteTargetSubscription (XD-250 ARC) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Junction between an ARC quote and the subscription(s) it targets.\n// One row per (quote, subscription) pair.\n\n@Entity({ tableName: 'cpq_quote_target_subscriptions' })\n@Unique({\n name: 'cpq_qts_quote_sub_unique',\n properties: ['organizationId', 'tenantId', 'quoteId', 'subscriptionId'],\n})\n@Index({ name: 'cpq_qts_quote_idx', properties: ['organizationId', 'tenantId', 'quoteId'] })\n@Index({\n name: 'cpq_qts_sub_type_idx',\n properties: ['organizationId', 'tenantId', 'subscriptionId', 'quoteType'],\n})\nexport class CpqQuoteTargetSubscription {\n [OptionalProps]?: 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n // FK to CpqQuoteConfiguration.id (intra-module \u2014 could be ORM relation,\n // kept as string id for consistency with the rest of the CPQ schema).\n @Property({ name: 'quote_id', type: 'uuid' })\n quoteId!: string\n\n // FK to CpqInventorySubscription.id (intra-module).\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n // MUST mirror parent CpqQuoteConfiguration.quoteType \u2208 {amend, renew, cancel}.\n @Property({ name: 'quote_type', type: 'text' })\n quoteType!: string\n\n // Renew-only: standalone (single target, in-place mutation) or absorb\n // (merge source \u2014 items migrate to a new sub at activation). Null for\n // amend / cancel.\n @Property({ name: 'merge_action', type: 'text', nullable: true })\n mergeAction?: string | null\n\n // Renew-only, populated only when merge_action='standalone'.\n @Property({ name: 'new_term_start', type: 'date', nullable: true })\n newTermStart?: Date | null\n\n @Property({ name: 'new_term_end', type: 'date', nullable: true })\n newTermEnd?: Date | null\n\n @Property({ name: 'new_term_months', type: 'integer', nullable: true })\n newTermMonths?: number | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// \u2500\u2500\u2500 CpqSubscriptionChangeLog (XD-250 ARC) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// Append-only audit record. One row per ARC operation per affected\n// subscription. Drives the \"Change History\" UI tab and downstream\n// billing / notification consumers.\n\n@Entity({ tableName: 'cpq_subscription_change_logs' })\n@Index({\n name: 'cpq_scl_sub_history_idx',\n properties: ['organizationId', 'tenantId', 'subscriptionId', 'createdAt'],\n})\n@Index({ name: 'cpq_scl_source_order_idx', properties: ['sourceOrderId'] })\n@Index({ name: 'cpq_scl_merged_into_idx', properties: ['mergedIntoSubscriptionId'] })\n// Idempotency: re-running activation for the same (order, sub) pair is a no-op.\n// PostgreSQL treats NULLs as distinct in UNIQUE indexes by default, so multiple\n// rows with NULL source_order_id can coexist for the same subscription\n// (hypothetical future non-order-driven entries \u2014 manual reconciliation, etc.).\n@Unique({\n name: 'cpq_scl_order_sub_unique',\n properties: ['sourceOrderId', 'subscriptionId'],\n})\nexport class CpqSubscriptionChangeLog {\n [OptionalProps]?: 'createdAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n // FK to CpqInventorySubscription.id (intra-module).\n @Property({ name: 'subscription_id', type: 'uuid' })\n subscriptionId!: string\n\n // 'amend' | 'renew' | 'cancel' | 'merge-result' | 'merge-source'.\n // Validated in service layer (see CHANGE_LOG_TYPES in services/types.ts).\n @Property({ name: 'change_type', type: 'text' })\n changeType!: string\n\n @Property({ name: 'source_quote_id', type: 'uuid', nullable: true })\n sourceQuoteId?: string | null\n\n @Property({ name: 'source_order_id', type: 'uuid', nullable: true })\n sourceOrderId?: string | null\n\n @Property({ name: 'performed_by_user_id', type: 'uuid', nullable: true })\n performedByUserId?: string | null\n\n @Property({ name: 'effective_at', type: Date })\n effectiveAt: Date = new Date()\n\n // Full state snapshot (subscription + items + assets) before mutation.\n // Null on change_type='merge-result' (M is brand new \u2014 no \"before\").\n @Property({ name: 'before_snapshot', type: 'jsonb', nullable: true })\n beforeSnapshot?: Record<string, unknown> | null\n\n // Full state snapshot after mutation. Null on change_type='merge-source'\n // (source's terminal state is the meaningful \"after\").\n @Property({ name: 'after_snapshot', type: 'jsonb', nullable: true })\n afterSnapshot?: Record<string, unknown> | null\n\n // Summary array: [{ action, lineId, productCode, qty, mrcDelta, ... }]\n @Property({ name: 'line_changes', type: 'jsonb', nullable: true })\n lineChanges?: Array<Record<string, unknown>> | null\n\n // { oldTermStart, newTermStart, oldTermEnd, newTermEnd, oldTermMonths, newTermMonths }\n // Populated for change_type='renew' (standalone) and 'merge-result'.\n @Property({ name: 'term_change', type: 'jsonb', nullable: true })\n termChange?: Record<string, unknown> | null\n\n // Set on change_type='merge-source' rows; points at the new merge sub M.\n @Property({ name: 'merged_into_subscription_id', type: 'uuid', nullable: true })\n mergedIntoSubscriptionId?: string | null\n\n // Set on change_type='merge-result' rows; array of source ids absorbed into M.\n @Property({ name: 'merged_from_subscription_ids', type: 'jsonb', nullable: true })\n mergedFromSubscriptionIds?: string[] | null\n\n // Cancel-only.\n @Property({ name: 'reason_code', type: 'text', nullable: true })\n reasonCode?: string | null\n\n @Property({ name: 'reason_text', type: 'text', nullable: true })\n reasonText?: string | null\n\n @Property({ name: 'etf_amount', type: 'numeric', columnType: 'numeric(18, 4)', nullable: true })\n etfAmount?: string | null\n\n @Property({ name: 'etf_currency', type: 'text', nullable: true })\n etfCurrency?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n // Soft-delete reserved for compliance erasure; runtime ignores deleted rows.\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n\n// \u2500\u2500\u2500 Deal-specific adjustments, separate from catalog price rules \u2500\u2500\u2500\n@Entity({ tableName: 'cpq_quote_price_adjustments' })\n@Index({ name: 'cpq_qpa_quote_config_idx', properties: ['organizationId', 'tenantId', 'quoteConfigurationId'] })\n@Index({ name: 'cpq_qpa_quote_line_idx', properties: ['organizationId', 'tenantId', 'quoteLineId'] })\n@Index({ name: 'cpq_qpa_quote_idx', properties: ['organizationId', 'tenantId', 'quoteId'] })\nexport class CpqQuotePriceAdjustment {\n [OptionalProps]?: 'windowKind' | 'fromMonth' | 'toMonth' | 'isActive' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'quote_configuration_id', type: 'uuid' })\n quoteConfigurationId!: string\n\n @Property({ name: 'quote_id', type: 'uuid' })\n quoteId!: string\n\n @Property({ name: 'quote_line_id', type: 'uuid' })\n quoteLineId!: string\n\n @Property({ type: 'text' })\n level!: 'charge' | 'line'\n\n @Property({ name: 'charge_code', type: 'text', nullable: true })\n chargeCode: string | null = null\n\n @Property({ name: 'charge_type_filter', type: 'text', nullable: true })\n chargeTypeFilter: 'nrc' | 'mrc' | null = null\n\n @Property({ name: 'adjustment_type', type: 'text' })\n adjustmentType!: 'discount_percent' | 'discount_absolute' | 'price_override'\n\n @Property({ type: 'numeric', columnType: 'numeric(18, 4)' })\n value!: string\n\n @Property({ name: 'currency_code', type: 'text', nullable: true })\n currencyCode: string | null = null\n\n @Property({ name: 'window_kind', type: 'text', default: 'relative' })\n windowKind: string = 'relative'\n\n @Property({ name: 'from_month', type: 'integer', default: 1 })\n fromMonth: number = 1\n\n @Property({ name: 'to_month', type: 'integer', nullable: true })\n toMonth: number | null = null\n\n @Property({ name: 'reason_code', type: 'text' })\n reasonCode!: string\n\n @Property({ name: 'reason_note', type: 'text', nullable: true })\n reasonNote: string | null = null\n\n @Property({ name: 'created_by_user_id', type: 'uuid' })\n createdByUserId!: string\n\n @Property({ name: 'updated_by_user_id', type: 'uuid', nullable: true })\n updatedByUserId: string | null = null\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt: Date | null = null\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,70 @@
1
+ import { z } from "zod";
2
+ const adjustmentTypeSchema = z.enum(["discount_percent", "discount_absolute", "price_override"]);
3
+ const adjustmentFields = {
4
+ adjustmentType: adjustmentTypeSchema,
5
+ // Match numeric(18,4), so saving never silently rounds the previewed input.
6
+ value: z.number().finite().min(0).max(99999999999999).multipleOf(1e-4),
7
+ currencyCode: z.string().regex(/^[A-Z]{3}$/).nullish(),
8
+ chargeTypeFilter: z.enum(["nrc", "mrc"]).nullish(),
9
+ reasonCode: z.string().trim().min(1).max(100),
10
+ reasonNote: z.string().trim().max(500).nullish(),
11
+ expectedRevision: z.number().int().min(0).optional()
12
+ };
13
+ const cpqPriceAdjustmentInputSchema = z.object({
14
+ ...adjustmentFields,
15
+ level: z.enum(["charge", "line"]),
16
+ quoteLineId: z.string().uuid(),
17
+ chargeCode: z.string().trim().min(1).max(255).nullish(),
18
+ windowKind: z.literal("relative").optional(),
19
+ fromMonth: z.literal(1).optional(),
20
+ toMonth: z.null().optional()
21
+ }).strict().superRefine((input, ctx) => {
22
+ const error = (path, message) => ctx.addIssue({ code: "custom", path: [path], message });
23
+ if (input.level === "charge" && !input.chargeCode) error("chargeCode", "TARGET_NOT_FOUND");
24
+ if (input.level === "charge" && input.chargeTypeFilter) error("chargeTypeFilter", "TYPE_NOT_ALLOWED");
25
+ if (input.level === "line" && input.chargeCode) error("chargeCode", "TYPE_NOT_ALLOWED");
26
+ if (input.level === "line" && input.adjustmentType !== "discount_percent") error("adjustmentType", "TYPE_NOT_ALLOWED");
27
+ if (input.adjustmentType === "discount_percent" && (input.value <= 0 || input.value > 100)) error("value", "INVALID_PERCENT");
28
+ if (input.adjustmentType === "discount_absolute" && input.value <= 0) error("value", "INVALID_AMOUNT");
29
+ if (input.adjustmentType !== "discount_percent" && !input.currencyCode) error("currencyCode", "CURRENCY_REQUIRED");
30
+ if (input.reasonCode === "other" && !input.reasonNote) error("reasonNote", "REASON_NOTE_REQUIRED");
31
+ });
32
+ const cpqPriceAdjustmentPatchSchema = z.object(adjustmentFields).partial().strict();
33
+ const resolvedPriceAdjustmentSchema = z.object({
34
+ ...cpqPriceAdjustmentInputSchema.shape,
35
+ id: z.string().uuid(),
36
+ createdByUserId: z.string().uuid().optional()
37
+ });
38
+ const adjustmentErrorSchema = z.object({
39
+ adjustmentId: z.string(),
40
+ quoteLineId: z.string(),
41
+ chargeCode: z.string().optional(),
42
+ code: z.enum(["ADJUSTMENT_TARGET_MISSING", "TARGET_AMBIGUOUS", "ABOVE_STANDARD", "CURRENCY_MISMATCH", "TYPE_NOT_ALLOWED", "LINE_NOT_ELIGIBLE", "ADJUSTMENT_OVERLAP"])
43
+ });
44
+ const cpqPriceAdjustmentPreviewSchema = z.object({
45
+ draft: cpqPriceAdjustmentInputSchema,
46
+ replaceAdjustmentId: z.string().uuid().optional()
47
+ }).strict();
48
+ const ADJUSTMENT_TOGGLE = "cpq.manual_price_adjustments";
49
+ const REASON_DICTIONARY = "cpq.price_adjustment_reason";
50
+ const DEFAULT_ADJUSTMENT_REASONS = [
51
+ { value: "competitive_match", label: "Competitive match" },
52
+ { value: "volume_commitment", label: "Volume commitment" },
53
+ { value: "loyalty", label: "Loyalty" },
54
+ { value: "promotion", label: "Promotion" },
55
+ { value: "strategic_deal", label: "Strategic deal" },
56
+ { value: "price_correction", label: "Price correction" },
57
+ { value: "other", label: "Other" }
58
+ ];
59
+ export {
60
+ ADJUSTMENT_TOGGLE,
61
+ DEFAULT_ADJUSTMENT_REASONS,
62
+ REASON_DICTIONARY,
63
+ adjustmentErrorSchema,
64
+ adjustmentTypeSchema,
65
+ cpqPriceAdjustmentInputSchema,
66
+ cpqPriceAdjustmentPatchSchema,
67
+ cpqPriceAdjustmentPreviewSchema,
68
+ resolvedPriceAdjustmentSchema
69
+ };
70
+ //# sourceMappingURL=price-adjustments.js.map