@acorex-platform/module-subscription-management-client 0.0.21

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.
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Subscription Management feature keys.
3
+ * ManageSubscriptions is Platform Console edition only (tenant apps use lookups, not menus).
4
+ */
5
+ const AXMSubscriptionManagementFeatureKeys = {
6
+ ManageSubscriptions: 'SubscriptionManagement:Feature:ManageSubscriptions',
7
+ };
8
+
9
+ const AXMSubscriptionManagementMenuKeys = {
10
+ Root: 'SubscriptionManagement:Menu',
11
+ Subscriptions: 'SubscriptionManagement:Menu:Subscriptions',
12
+ SubscriptionPlans: 'SubscriptionManagement:Menu:SubscriptionPlans',
13
+ };
14
+
15
+ /**
16
+ * Sales & Customers capabilities used by this module.
17
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
18
+ */
19
+ const AXPSalesCustomersPermissionKeys = {
20
+ Access: 'SalesCustomers:Permission:Access',
21
+ MaintainCustomers: 'SalesCustomers:Permission:MaintainCustomers',
22
+ MaintainSales: 'SalesCustomers:Permission:MaintainSales',
23
+ MaintainProducts: 'SalesCustomers:Permission:MaintainProducts',
24
+ MaintainOrders: 'SalesCustomers:Permission:MaintainOrders',
25
+ MaintainSubscriptions: 'SalesCustomers:Permission:MaintainSubscriptions',
26
+ Setup: 'SalesCustomers:Permission:Setup',
27
+ };
28
+ /**
29
+ * @deprecated Prefer {@link AXPSalesCustomersPermissionKeys}.
30
+ * Legacy nested shape kept so existing imports compile during migration.
31
+ */
32
+ const AXMPermissionsKeys = {
33
+ SubscriptionManagement: {
34
+ Management: AXPSalesCustomersPermissionKeys.Access,
35
+ Subscriptions: {
36
+ Management: AXPSalesCustomersPermissionKeys.MaintainSubscriptions,
37
+ },
38
+ SubscriptionPlans: {
39
+ Management: AXPSalesCustomersPermissionKeys.MaintainSubscriptions,
40
+ },
41
+ },
42
+ };
43
+
44
+ const config = {
45
+ i18n: 'subscription-management',
46
+ module: 'SubscriptionManagement',
47
+ };
48
+ const RootConfig = {
49
+ config,
50
+ module: {
51
+ route: 'subscription-management',
52
+ name: config.module,
53
+ title: `@${config.i18n}:module.title`,
54
+ icon: 'fa-light fa-credit-card',
55
+ },
56
+ entities: {
57
+ subscription: {
58
+ name: 'Subscription',
59
+ source: `${config.module}.Subscription`,
60
+ title: `@${config.i18n}:subscriptions.entities.subscription.title`,
61
+ titlePlural: `@${config.i18n}:subscriptions.entities.subscription.plural`,
62
+ icon: 'fa-light fa-credit-card',
63
+ },
64
+ subscriptionPlan: {
65
+ name: 'SubscriptionPlan',
66
+ source: `${config.module}.SubscriptionPlan`,
67
+ title: `@${config.i18n}:subscriptions.entities.subscription-plan.title`,
68
+ titlePlural: `@${config.i18n}:subscriptions.entities.subscription-plan.plural`,
69
+ icon: 'fa-light fa-box',
70
+ },
71
+ subscriptionPlanItem: {
72
+ name: 'SubscriptionPlanItem',
73
+ source: `${config.module}.SubscriptionPlanItem`,
74
+ title: `@${config.i18n}:subscriptions.entities.subscription-plan-item.title`,
75
+ titlePlural: `@${config.i18n}:subscriptions.entities.subscription-plan-item.plural`,
76
+ icon: 'fa-light fa-list-ul',
77
+ },
78
+ },
79
+ queries: {
80
+ dashboard: {
81
+ subscriptionKpi: `${config.module}:Dashboard:SubscriptionKpi`,
82
+ },
83
+ },
84
+ };
85
+
86
+ //#endregion
87
+
88
+ //#endregion
89
+
90
+ //#endregion
91
+
92
+ //#region ---- Contracts barrel ----
93
+
94
+ /**
95
+ * Generated bundle index. Do not edit.
96
+ */
97
+
98
+ export { AXMPermissionsKeys, AXMSubscriptionManagementFeatureKeys, AXMSubscriptionManagementMenuKeys, AXPSalesCustomersPermissionKeys, RootConfig };
99
+ //# sourceMappingURL=acorex-platform-module-subscription-management-client-contracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-subscription-management-client-contracts.mjs","sources":["../../../../libs/modules/subscription-management/contracts/src/features.keys.ts","../../../../libs/modules/subscription-management/contracts/src/menu.keys.ts","../../../../libs/modules/subscription-management/contracts/src/permission.keys.ts","../../../../libs/modules/subscription-management/contracts/src/root-config.ts","../../../../libs/modules/subscription-management/contracts/src/entities/subscription/subscription.types.ts","../../../../libs/modules/subscription-management/contracts/src/entities/subscription-plan/subscription-plan.types.ts","../../../../libs/modules/subscription-management/contracts/src/entities/subscription-plan-item/subscription-plan-item.types.ts","../../../../libs/modules/subscription-management/contracts/src/index.ts","../../../../libs/modules/subscription-management/contracts/src/acorex-platform-module-subscription-management-client-contracts.ts"],"sourcesContent":["/**\n * Subscription Management feature keys.\n * ManageSubscriptions is Platform Console edition only (tenant apps use lookups, not menus).\n */\nexport const AXMSubscriptionManagementFeatureKeys = {\n ManageSubscriptions: 'SubscriptionManagement:Feature:ManageSubscriptions',\n} as const;\n","export const AXMSubscriptionManagementMenuKeys = {\n Root: 'SubscriptionManagement:Menu',\n Subscriptions: 'SubscriptionManagement:Menu:Subscriptions',\n SubscriptionPlans: 'SubscriptionManagement:Menu:SubscriptionPlans',\n} as const;\n\n","/**\n * Sales & Customers capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPSalesCustomersPermissionKeys = {\n Access: 'SalesCustomers:Permission:Access',\n MaintainCustomers: 'SalesCustomers:Permission:MaintainCustomers',\n MaintainSales: 'SalesCustomers:Permission:MaintainSales',\n MaintainProducts: 'SalesCustomers:Permission:MaintainProducts',\n MaintainOrders: 'SalesCustomers:Permission:MaintainOrders',\n MaintainSubscriptions: 'SalesCustomers:Permission:MaintainSubscriptions',\n Setup: 'SalesCustomers:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPSalesCustomersPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n SubscriptionManagement: {\n Management: AXPSalesCustomersPermissionKeys.Access,\n Subscriptions: {\n Management: AXPSalesCustomersPermissionKeys.MaintainSubscriptions,\n },\n SubscriptionPlans: {\n Management: AXPSalesCustomersPermissionKeys.MaintainSubscriptions,\n },\n },\n} as const;\n","const config = {\n i18n: 'subscription-management',\n module: 'SubscriptionManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'subscription-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-credit-card',\n },\n entities: {\n subscription: {\n name: 'Subscription',\n source: `${config.module}.Subscription`,\n title: `@${config.i18n}:subscriptions.entities.subscription.title`,\n titlePlural: `@${config.i18n}:subscriptions.entities.subscription.plural`,\n icon: 'fa-light fa-credit-card',\n },\n subscriptionPlan: {\n name: 'SubscriptionPlan',\n source: `${config.module}.SubscriptionPlan`,\n title: `@${config.i18n}:subscriptions.entities.subscription-plan.title`,\n titlePlural: `@${config.i18n}:subscriptions.entities.subscription-plan.plural`,\n icon: 'fa-light fa-box',\n },\n subscriptionPlanItem: {\n name: 'SubscriptionPlanItem',\n source: `${config.module}.SubscriptionPlanItem`,\n title: `@${config.i18n}:subscriptions.entities.subscription-plan-item.title`,\n titlePlural: `@${config.i18n}:subscriptions.entities.subscription-plan-item.plural`,\n icon: 'fa-light fa-list-ul',\n },\n },\n queries: {\n dashboard: {\n subscriptionKpi: `${config.module}:Dashboard:SubscriptionKpi`,\n },\n },\n} as const;\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Subscription Model ----\n\nexport interface AXMSubscriptionManagementSubscriptionEntityModel extends AXPEntityModel<string> {\n // Reference to the subscriber (who is subscribing)\n subscriberType: string; // e.g., \"Tenant\", \"ApplicationEdition\"\n subscriberId: string;\n subscriber?: {\n id: string;\n title?: AXPMultiLanguageString;\n displayName?: string;\n };\n\n // Subscription Plan\n planId?: string;\n plan?: {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n subscribableType?: string; // Derived from plan - defines what this subscription is for\n };\n\n // Subscription Details\n title?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n\n // Status\n statusId?: string;\n status?: {\n id: string;\n title: string;\n };\n\n // Dates\n startDate: Date;\n endDate?: Date;\n\n // Metadata\n notes?: string;\n meta?: Record<string, any>;\n\n // Audit fields\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Subscription Plan Model ----\n\nexport interface AXMSubscriptionManagementSubscriptionPlanEntityModel extends AXPEntityModel<string> {\n // Basic Info\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n code?: string;\n\n // Pricing (for future use)\n price?: number;\n currencyId?: string;\n currency?: {\n id: string;\n code: string;\n symbol: string;\n };\n\n // Billing Cycle (for future use)\n billingCycle?: 'monthly' | 'quarterly' | 'yearly';\n\n // Status (added by disable plugin)\n isDisabled?: boolean;\n\n // Metadata\n meta?: Record<string, any>;\n\n // Audit fields\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Subscription Plan Item Model ----\n\nexport interface AXMSubscriptionManagementSubscriptionPlanItemEntityModel extends AXPEntityModel<string> {\n // Reference to Subscription Plan\n planId: string;\n plan?: {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n };\n\n // What this item is for\n subscribableType: string; // e.g., \"ApplicationEdition\" - defines what this item is for\n editionId: string; // Reference to Application Edition\n edition?: {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n };\n\n // Metadata\n meta?: Record<string, any>;\n\n // Audit fields\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n//#endregion\n\n","//#region ---- Contracts barrel ----\n\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;AAGG;AACI,MAAM,oCAAoC,GAAG;AAClD,IAAA,mBAAmB,EAAE,oDAAoD;;;ACLpE,MAAM,iCAAiC,GAAG;AAC7C,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,aAAa,EAAE,2CAA2C;AAC1D,IAAA,iBAAiB,EAAE,+CAA+C;;;ACHtE;;;AAGG;AACI,MAAM,+BAA+B,GAAG;AAC7C,IAAA,MAAM,EAAE,kCAAkC;AAC1C,IAAA,iBAAiB,EAAE,6CAA6C;AAChE,IAAA,aAAa,EAAE,yCAAyC;AACxD,IAAA,gBAAgB,EAAE,4CAA4C;AAC9D,IAAA,cAAc,EAAE,0CAA0C;AAC1D,IAAA,qBAAqB,EAAE,iDAAiD;AACxE,IAAA,KAAK,EAAE,iCAAiC;;AAG1C;;;AAGG;AACI,MAAM,kBAAkB,GAAG;AAChC,IAAA,sBAAsB,EAAE;QACtB,UAAU,EAAE,+BAA+B,CAAC,MAAM;AAClD,QAAA,aAAa,EAAE;YACb,UAAU,EAAE,+BAA+B,CAAC,qBAAqB;AAClE,SAAA;AACD,QAAA,iBAAiB,EAAE;YACjB,UAAU,EAAE,+BAA+B,CAAC,qBAAqB;AAClE,SAAA;AACF,KAAA;;;AC3BH,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,MAAM,EAAE,wBAAwB;CACjC;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,yBAAyB;AAChC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,aAAA,CAAe;AACvC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,0CAAA,CAA4C;AAClE,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2CAAA,CAA6C;AACzE,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,iBAAA,CAAmB;AAC3C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,+CAAA,CAAiD;AACvE,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,gDAAA,CAAkD;AAC9E,YAAA,IAAI,EAAE,iBAAiB;AACxB,SAAA;AACD,QAAA,oBAAoB,EAAE;AACpB,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,qBAAA,CAAuB;AAC/C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,oDAAA,CAAsD;AAC5E,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,qDAAA,CAAuD;AACnF,YAAA,IAAI,EAAE,qBAAqB;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE;AACT,YAAA,eAAe,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,0BAAA,CAA4B;AAC9D,SAAA;AACF,KAAA;;;ACOH;;ACdA;;ACHA;;AC9BA;;ACAA;;AAEG;;;;"}
@@ -0,0 +1,294 @@
1
+ import { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
2
+ import { RootConfig, AXMSubscriptionManagementFeatureKeys, AXPSalesCustomersPermissionKeys, AXMSubscriptionManagementMenuKeys } from '@acorex-platform/module-subscription-management-client/contracts';
3
+ import { AXPSearchCommandProvider, createEntitySearchCommand, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
4
+ import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
5
+ import * as i0 from '@angular/core';
6
+ import { Injectable, inject, NgModule } from '@angular/core';
7
+ import { AXPStatusProvider, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';
8
+ import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
9
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
10
+
11
+ //#region ---- Imports ----
12
+ //#endregion
13
+ //#region ---- Manifest Definition ----
14
+ /**
15
+ * Subscription Management Module Manifest.
16
+ * Defines module metadata, features, and provider references.
17
+ */
18
+ const SubscriptionManagementManifest = {
19
+ name: RootConfig.module.name,
20
+ version: '1.0.0',
21
+ title: RootConfig.module.title,
22
+ icon: RootConfig.module.icon,
23
+ i18n: RootConfig.config.i18n,
24
+ type: 'platform',
25
+ domain: 'platform',
26
+ required: true,
27
+ // Module dependencies (optional)
28
+ };
29
+ //#endregion
30
+
31
+ //#region ---- Imports ----
32
+ //#endregion
33
+ //#region ---- Subscription Status Provider ----
34
+ /**
35
+ * Subscription status provider defining lifecycle states: Active, Expired, Cancelled, Suspended.
36
+ * Used by the status plugin to manage subscription status transitions and metadata.
37
+ */
38
+ class AXMSubscriptionStatusProvider extends AXPStatusProvider {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.key = 'subscription-management.status.subscription';
42
+ this.defaultStatus = AXPSystemStatusType.Active;
43
+ this.statuses = [
44
+ systemStatusToDefinition(AXPSystemStatusType.Active, {
45
+ title: '@subscription-management:subscriptions.states.active',
46
+ generateView: true,
47
+ }),
48
+ systemStatusToDefinition(AXPSystemStatusType.Expired, {
49
+ title: '@subscription-management:subscriptions.states.expired',
50
+ generateView: true,
51
+ }),
52
+ systemStatusToDefinition(AXPSystemStatusType.Cancelled, {
53
+ title: '@subscription-management:subscriptions.states.cancelled',
54
+ generateView: true,
55
+ }),
56
+ systemStatusToDefinition(AXPSystemStatusType.Suspended, {
57
+ title: '@subscription-management:subscriptions.states.suspended',
58
+ generateView: true,
59
+ }),
60
+ ];
61
+ this.transitions = [
62
+ {
63
+ from: AXPSystemStatusType.Active,
64
+ to: AXPSystemStatusType.Expired,
65
+ title: '@subscription-management:subscriptions.transitions.expire',
66
+ },
67
+ {
68
+ from: AXPSystemStatusType.Active,
69
+ to: AXPSystemStatusType.Cancelled,
70
+ title: '@subscription-management:subscriptions.transitions.cancel',
71
+ },
72
+ {
73
+ from: AXPSystemStatusType.Active,
74
+ to: AXPSystemStatusType.Suspended,
75
+ title: '@subscription-management:subscriptions.transitions.suspend',
76
+ },
77
+ {
78
+ from: AXPSystemStatusType.Suspended,
79
+ to: AXPSystemStatusType.Active,
80
+ title: '@subscription-management:subscriptions.transitions.activate',
81
+ },
82
+ {
83
+ from: AXPSystemStatusType.Expired,
84
+ to: AXPSystemStatusType.Active,
85
+ title: '@subscription-management:subscriptions.transitions.renew',
86
+ },
87
+ ];
88
+ }
89
+ }
90
+ //#endregion
91
+
92
+ //#region ---- Imports ----
93
+ //#endregion
94
+ //#region ---- Feature Definition Provider ----
95
+ /**
96
+ * Subscription Management Feature Definition Provider.
97
+ * Provides feature definitions for the Subscription Management module.
98
+ */
99
+ class AXMSubscriptionManagementFeatureDefinitionProvider {
100
+ async provide(context) {
101
+ const i18n = RootConfig.config.i18n;
102
+ context.addFeature(AXMSubscriptionManagementFeatureKeys.ManageSubscriptions, {
103
+ title: `@${i18n}:features.manage-subscriptions.title`,
104
+ description: `@${i18n}:features.manage-subscriptions.description`,
105
+ defaultValue: false,
106
+ type: 'boolean',
107
+ });
108
+ }
109
+ }
110
+ //#endregion
111
+
112
+ //#endregion
113
+ //#region ---- Permission Definition Provider ----
114
+ /**
115
+ * Registers subscription capabilities under Sales & Customers → Subscriptions.
116
+ */
117
+ class AXMSubscriptionManagementPermissionProvider {
118
+ async define(context) {
119
+ const keys = AXPSalesCustomersPermissionKeys;
120
+ const groups = AXPCommonPermissionGroupKeys;
121
+ const P = '@common:sales-customers.permissions';
122
+ const G = '@common:permission-groups';
123
+ context.addGroup(groups.SalesCustomers.Root, `${G}.sales-and-customers.title`, `${G}.sales-and-customers.description`, { order: 50 });
124
+ context
125
+ .addGroup(groups.SalesCustomers.Subscriptions, `${G}.sales-and-customers-subscriptions.title`, `${G}.sales-and-customers-subscriptions.description`, { parent: groups.SalesCustomers.Root, order: 40 })
126
+ .addPermission(keys.MaintainSubscriptions, `${P}.maintain-subscriptions.title`, `${P}.maintain-subscriptions.description`)
127
+ .endPermission()
128
+ .endGroup();
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementPermissionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementPermissionProvider }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementPermissionProvider, decorators: [{
134
+ type: Injectable
135
+ }] });
136
+
137
+ //#region ---- Imports ----
138
+ //#endregion
139
+ //#region ---- Menu Provider ----
140
+ class AXMSubscriptionManagementMenuProvider {
141
+ constructor() {
142
+ this.entityService = inject(AXPEntityService);
143
+ }
144
+ async provide(context) {
145
+ const module = RootConfig.module;
146
+ const keys = AXPSalesCustomersPermissionKeys;
147
+ const features = AXMSubscriptionManagementFeatureKeys;
148
+ context.find(AXPCommonMenuKeys.Platform).addItems([
149
+ {
150
+ name: AXMSubscriptionManagementMenuKeys.Subscriptions,
151
+ text: `@${RootConfig.config.i18n}:subscriptions.entities.subscription.plural`,
152
+ path: this.entityService.createPath(module.name, RootConfig.entities.subscription.name),
153
+ icon: RootConfig.entities.subscription.icon,
154
+ priority: 6,
155
+ policy: {
156
+ // Platform Console edition only — tenants use lookups / joins, not this menu
157
+ features: [features.ManageSubscriptions],
158
+ permissions: [keys.MaintainSubscriptions],
159
+ },
160
+ },
161
+ {
162
+ name: AXMSubscriptionManagementMenuKeys.SubscriptionPlans,
163
+ text: `@${RootConfig.config.i18n}:subscriptions.entities.subscription-plan.plural`,
164
+ path: this.entityService.createPath(module.name, RootConfig.entities.subscriptionPlan.name),
165
+ icon: RootConfig.entities.subscriptionPlan.icon,
166
+ priority: 7,
167
+ policy: {
168
+ features: [features.ManageSubscriptions],
169
+ permissions: [keys.MaintainSubscriptions],
170
+ },
171
+ },
172
+ ]);
173
+ }
174
+ }
175
+ //#endregion
176
+
177
+ //#region ---- Imports ----
178
+ //#endregion
179
+ //#region ---- Search Command Provider ----
180
+ class AXMSubscriptionManagementSearchProvider extends AXPSearchCommandProvider {
181
+ constructor() {
182
+ super(...arguments);
183
+ this.commands = [
184
+ createEntitySearchCommand({
185
+ id: 'create-subscription',
186
+ entityKey: `${RootConfig.module.name}.${RootConfig.entities.subscription.name}`,
187
+ entityInfo: { name: RootConfig.entities.subscription.name, module: RootConfig.module.name, title: RootConfig.entities.subscription.title },
188
+ titleKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription.title`,
189
+ descriptionKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription.description`,
190
+ icon: RootConfig.entities.subscription.icon,
191
+ }),
192
+ createEntitySearchCommand({
193
+ id: 'create-subscription-plan',
194
+ entityKey: `${RootConfig.module.name}.${RootConfig.entities.subscriptionPlan.name}`,
195
+ entityInfo: { name: RootConfig.entities.subscriptionPlan.name, module: RootConfig.module.name, title: RootConfig.entities.subscriptionPlan.title },
196
+ titleKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription-plan.title`,
197
+ descriptionKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription-plan.description`,
198
+ icon: RootConfig.entities.subscriptionPlan.icon,
199
+ }),
200
+ ];
201
+ }
202
+ }
203
+ //#endregion
204
+
205
+ //#region ---- Imports ----
206
+ //#endregion
207
+ //#region ---- Subscription Management Module ----
208
+ class AXMSubscriptionManagementModule {
209
+ constructor() { }
210
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
211
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementModule }); }
212
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementModule, providers: [
213
+ // Module-specific providers (not part of manifest system)
214
+ {
215
+ provide: AXP_STATUS_PROVIDERS,
216
+ useClass: AXMSubscriptionStatusProvider,
217
+ multi: true,
218
+ },
219
+ // Module Manifest Provider
220
+ {
221
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
222
+ useValue: SubscriptionManagementManifest,
223
+ multi: true,
224
+ },
225
+ // Provider references (now using tokens)
226
+ {
227
+ provide: AXP_FEATURE_DEFINITION_PROVIDER,
228
+ useClass: AXMSubscriptionManagementFeatureDefinitionProvider,
229
+ multi: true,
230
+ },
231
+ {
232
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
233
+ useClass: AXMSubscriptionManagementPermissionProvider,
234
+ multi: true,
235
+ },
236
+ {
237
+ provide: AXP_MENU_PROVIDER,
238
+ useClass: AXMSubscriptionManagementMenuProvider,
239
+ multi: true,
240
+ },
241
+ {
242
+ provide: AXP_SEARCH_PROVIDER,
243
+ useClass: AXMSubscriptionManagementSearchProvider,
244
+ multi: true,
245
+ },
246
+ ] }); }
247
+ }
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSubscriptionManagementModule, decorators: [{
249
+ type: NgModule,
250
+ args: [{
251
+ providers: [
252
+ // Module-specific providers (not part of manifest system)
253
+ {
254
+ provide: AXP_STATUS_PROVIDERS,
255
+ useClass: AXMSubscriptionStatusProvider,
256
+ multi: true,
257
+ },
258
+ // Module Manifest Provider
259
+ {
260
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
261
+ useValue: SubscriptionManagementManifest,
262
+ multi: true,
263
+ },
264
+ // Provider references (now using tokens)
265
+ {
266
+ provide: AXP_FEATURE_DEFINITION_PROVIDER,
267
+ useClass: AXMSubscriptionManagementFeatureDefinitionProvider,
268
+ multi: true,
269
+ },
270
+ {
271
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
272
+ useClass: AXMSubscriptionManagementPermissionProvider,
273
+ multi: true,
274
+ },
275
+ {
276
+ provide: AXP_MENU_PROVIDER,
277
+ useClass: AXMSubscriptionManagementMenuProvider,
278
+ multi: true,
279
+ },
280
+ {
281
+ provide: AXP_SEARCH_PROVIDER,
282
+ useClass: AXMSubscriptionManagementSearchProvider,
283
+ multi: true,
284
+ },
285
+ ],
286
+ }]
287
+ }], ctorParameters: () => [] });
288
+
289
+ /**
290
+ * Generated bundle index. Do not edit.
291
+ */
292
+
293
+ export { AXMSubscriptionManagementFeatureDefinitionProvider, AXMSubscriptionManagementMenuProvider, AXMSubscriptionManagementModule, AXMSubscriptionManagementSearchProvider };
294
+ //# sourceMappingURL=acorex-platform-module-subscription-management-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-subscription-management-client.mjs","sources":["../../../../libs/modules/subscription-management/client/src/lib/manifest.ts","../../../../libs/modules/subscription-management/client/src/lib/features/subscription-status.provider.ts","../../../../libs/modules/subscription-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/subscription-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/subscription-management/client/src/lib/menu.provider.ts","../../../../libs/modules/subscription-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/subscription-management/client/src/lib/subscription-management.module.ts","../../../../libs/modules/subscription-management/client/src/acorex-platform-module-subscription-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-subscription-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Subscription Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const SubscriptionManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'platform',\n domain: 'platform',\n required: true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Subscription Status Provider ----\n\n/**\n * Subscription status provider defining lifecycle states: Active, Expired, Cancelled, Suspended.\n * Used by the status plugin to manage subscription status transitions and metadata.\n */\nexport class AXMSubscriptionStatusProvider extends AXPStatusProvider {\n readonly key = 'subscription-management.status.subscription';\n\n readonly defaultStatus = AXPSystemStatusType.Active;\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Active, {\n title: '@subscription-management:subscriptions.states.active',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Expired, {\n title: '@subscription-management:subscriptions.states.expired',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@subscription-management:subscriptions.states.cancelled',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Suspended, {\n title: '@subscription-management:subscriptions.states.suspended',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Expired,\n title: '@subscription-management:subscriptions.transitions.expire',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Cancelled,\n title: '@subscription-management:subscriptions.transitions.cancel',\n },\n {\n from: AXPSystemStatusType.Active,\n to: AXPSystemStatusType.Suspended,\n title: '@subscription-management:subscriptions.transitions.suspend',\n },\n {\n from: AXPSystemStatusType.Suspended,\n to: AXPSystemStatusType.Active,\n title: '@subscription-management:subscriptions.transitions.activate',\n },\n {\n from: AXPSystemStatusType.Expired,\n to: AXPSystemStatusType.Active,\n title: '@subscription-management:subscriptions.transitions.renew',\n },\n ];\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport {\n AXMSubscriptionManagementFeatureKeys,\n RootConfig,\n} from '@acorex-platform/module-subscription-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Subscription Management Feature Definition Provider.\n * Provides feature definitions for the Subscription Management module.\n */\nexport class AXMSubscriptionManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n const i18n = RootConfig.config.i18n;\n\n context.addFeature(AXMSubscriptionManagementFeatureKeys.ManageSubscriptions, {\n title: `@${i18n}:features.manage-subscriptions.title`,\n description: `@${i18n}:features.manage-subscriptions.description`,\n defaultValue: false,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPSalesCustomersPermissionKeys } from '@acorex-platform/module-subscription-management-client/contracts';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers subscription capabilities under Sales & Customers → Subscriptions.\n */\n@Injectable()\nexport class AXMSubscriptionManagementPermissionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPSalesCustomersPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:sales-customers.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(\n groups.SalesCustomers.Root,\n `${G}.sales-and-customers.title`,\n `${G}.sales-and-customers.description`,\n { order: 50 },\n );\n\n context\n .addGroup(\n groups.SalesCustomers.Subscriptions,\n `${G}.sales-and-customers-subscriptions.title`,\n `${G}.sales-and-customers-subscriptions.description`,\n { parent: groups.SalesCustomers.Root, order: 40 },\n )\n .addPermission(\n keys.MaintainSubscriptions,\n `${P}.maintain-subscriptions.title`,\n `${P}.maintain-subscriptions.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPSalesCustomersPermissionKeys,\n AXMSubscriptionManagementFeatureKeys,\n AXMSubscriptionManagementMenuKeys,\n} from '@acorex-platform/module-subscription-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nexport class AXMSubscriptionManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPSalesCustomersPermissionKeys;\n const features = AXMSubscriptionManagementFeatureKeys;\n\n context.find(AXPCommonMenuKeys.Platform).addItems([\n {\n name: AXMSubscriptionManagementMenuKeys.Subscriptions,\n text: `@${RootConfig.config.i18n}:subscriptions.entities.subscription.plural`,\n path: this.entityService.createPath(module.name, RootConfig.entities.subscription.name),\n icon: RootConfig.entities.subscription.icon,\n priority: 6,\n policy: {\n // Platform Console edition only — tenants use lookups / joins, not this menu\n features: [features.ManageSubscriptions],\n permissions: [keys.MaintainSubscriptions],\n },\n },\n {\n name: AXMSubscriptionManagementMenuKeys.SubscriptionPlans,\n text: `@${RootConfig.config.i18n}:subscriptions.entities.subscription-plan.plural`,\n path: this.entityService.createPath(module.name, RootConfig.entities.subscriptionPlan.name),\n icon: RootConfig.entities.subscriptionPlan.icon,\n priority: 7,\n policy: {\n features: [features.ManageSubscriptions],\n permissions: [keys.MaintainSubscriptions],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, createEntitySearchCommand } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-subscription-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMSubscriptionManagementSearchProvider extends AXPSearchCommandProvider {\n commands = [\n createEntitySearchCommand({\n id: 'create-subscription',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.subscription.name}`,\n entityInfo: { name: RootConfig.entities.subscription.name, module: RootConfig.module.name, title: RootConfig.entities.subscription.title },\n titleKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription.title`,\n descriptionKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription.description`,\n icon: RootConfig.entities.subscription.icon,\n }),\n createEntitySearchCommand({\n id: 'create-subscription-plan',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.subscriptionPlan.name}`,\n entityInfo: { name: RootConfig.entities.subscriptionPlan.name, module: RootConfig.module.name, title: RootConfig.entities.subscriptionPlan.title },\n titleKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription-plan.title`,\n descriptionKey: `@${RootConfig.config.i18n}:subscriptions.actions.create-subscription-plan.description`,\n icon: RootConfig.entities.subscriptionPlan.icon,\n }),\n ];\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { SubscriptionManagementManifest } from './manifest';\nimport { AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { NgModule } from '@angular/core';\nimport { AXMSubscriptionStatusProvider } from './features/subscription-status.provider';\nimport { AXMSubscriptionManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMSubscriptionManagementPermissionProvider } from './permission-definition.provider';\nimport { AXMSubscriptionManagementMenuProvider } from './menu.provider';\n\nimport { AXMSubscriptionManagementSearchProvider } from './search-command.provider';\n\n//#endregion\n\n//#region ---- Subscription Management Module ----\n\n@NgModule({\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMSubscriptionStatusProvider,\n multi: true,\n },\n\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: SubscriptionManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXMSubscriptionManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMSubscriptionManagementPermissionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMSubscriptionManagementMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSubscriptionManagementSearchProvider,\n multi: true,\n },\n ],\n})\nexport class AXMSubscriptionManagementModule {\n constructor() { }\n}\n\n//#endregion\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-subscription-management-client",
3
+ "version": "0.0.21",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-module-subscription-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-subscription-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-subscription-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-subscription-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-subscription-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-subscription-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,156 @@
1
+ import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';
2
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
3
+
4
+ /**
5
+ * Subscription Management feature keys.
6
+ * ManageSubscriptions is Platform Console edition only (tenant apps use lookups, not menus).
7
+ */
8
+ declare const AXMSubscriptionManagementFeatureKeys: {
9
+ readonly ManageSubscriptions: "SubscriptionManagement:Feature:ManageSubscriptions";
10
+ };
11
+
12
+ declare const AXMSubscriptionManagementMenuKeys: {
13
+ readonly Root: "SubscriptionManagement:Menu";
14
+ readonly Subscriptions: "SubscriptionManagement:Menu:Subscriptions";
15
+ readonly SubscriptionPlans: "SubscriptionManagement:Menu:SubscriptionPlans";
16
+ };
17
+
18
+ /**
19
+ * Sales & Customers capabilities used by this module.
20
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
21
+ */
22
+ declare const AXPSalesCustomersPermissionKeys: {
23
+ readonly Access: "SalesCustomers:Permission:Access";
24
+ readonly MaintainCustomers: "SalesCustomers:Permission:MaintainCustomers";
25
+ readonly MaintainSales: "SalesCustomers:Permission:MaintainSales";
26
+ readonly MaintainProducts: "SalesCustomers:Permission:MaintainProducts";
27
+ readonly MaintainOrders: "SalesCustomers:Permission:MaintainOrders";
28
+ readonly MaintainSubscriptions: "SalesCustomers:Permission:MaintainSubscriptions";
29
+ readonly Setup: "SalesCustomers:Permission:Setup";
30
+ };
31
+ /**
32
+ * @deprecated Prefer {@link AXPSalesCustomersPermissionKeys}.
33
+ * Legacy nested shape kept so existing imports compile during migration.
34
+ */
35
+ declare const AXMPermissionsKeys: {
36
+ readonly SubscriptionManagement: {
37
+ readonly Management: "SalesCustomers:Permission:Access";
38
+ readonly Subscriptions: {
39
+ readonly Management: "SalesCustomers:Permission:MaintainSubscriptions";
40
+ };
41
+ readonly SubscriptionPlans: {
42
+ readonly Management: "SalesCustomers:Permission:MaintainSubscriptions";
43
+ };
44
+ };
45
+ };
46
+
47
+ declare const RootConfig: {
48
+ readonly config: {
49
+ i18n: string;
50
+ module: string;
51
+ };
52
+ readonly module: {
53
+ readonly route: "subscription-management";
54
+ readonly name: string;
55
+ readonly title: `@${string}:module.title`;
56
+ readonly icon: "fa-light fa-credit-card";
57
+ };
58
+ readonly entities: {
59
+ readonly subscription: {
60
+ readonly name: "Subscription";
61
+ readonly source: `${string}.Subscription`;
62
+ readonly title: `@${string}:subscriptions.entities.subscription.title`;
63
+ readonly titlePlural: `@${string}:subscriptions.entities.subscription.plural`;
64
+ readonly icon: "fa-light fa-credit-card";
65
+ };
66
+ readonly subscriptionPlan: {
67
+ readonly name: "SubscriptionPlan";
68
+ readonly source: `${string}.SubscriptionPlan`;
69
+ readonly title: `@${string}:subscriptions.entities.subscription-plan.title`;
70
+ readonly titlePlural: `@${string}:subscriptions.entities.subscription-plan.plural`;
71
+ readonly icon: "fa-light fa-box";
72
+ };
73
+ readonly subscriptionPlanItem: {
74
+ readonly name: "SubscriptionPlanItem";
75
+ readonly source: `${string}.SubscriptionPlanItem`;
76
+ readonly title: `@${string}:subscriptions.entities.subscription-plan-item.title`;
77
+ readonly titlePlural: `@${string}:subscriptions.entities.subscription-plan-item.plural`;
78
+ readonly icon: "fa-light fa-list-ul";
79
+ };
80
+ };
81
+ readonly queries: {
82
+ readonly dashboard: {
83
+ readonly subscriptionKpi: `${string}:Dashboard:SubscriptionKpi`;
84
+ };
85
+ };
86
+ };
87
+
88
+ interface AXMSubscriptionManagementSubscriptionEntityModel extends AXPEntityModel<string> {
89
+ subscriberType: string;
90
+ subscriberId: string;
91
+ subscriber?: {
92
+ id: string;
93
+ title?: AXPMultiLanguageString;
94
+ displayName?: string;
95
+ };
96
+ planId?: string;
97
+ plan?: {
98
+ id: string;
99
+ title: AXPMultiLanguageString;
100
+ description?: AXPMultiLanguageString;
101
+ subscribableType?: string;
102
+ };
103
+ title?: AXPMultiLanguageString;
104
+ description?: AXPMultiLanguageString;
105
+ statusId?: string;
106
+ status?: {
107
+ id: string;
108
+ title: string;
109
+ };
110
+ startDate: Date;
111
+ endDate?: Date;
112
+ notes?: string;
113
+ meta?: Record<string, any>;
114
+ createdAt?: Date;
115
+ updatedAt?: Date;
116
+ }
117
+
118
+ interface AXMSubscriptionManagementSubscriptionPlanEntityModel extends AXPEntityModel<string> {
119
+ title: AXPMultiLanguageString;
120
+ description?: AXPMultiLanguageString;
121
+ code?: string;
122
+ price?: number;
123
+ currencyId?: string;
124
+ currency?: {
125
+ id: string;
126
+ code: string;
127
+ symbol: string;
128
+ };
129
+ billingCycle?: 'monthly' | 'quarterly' | 'yearly';
130
+ isDisabled?: boolean;
131
+ meta?: Record<string, any>;
132
+ createdAt?: Date;
133
+ updatedAt?: Date;
134
+ }
135
+
136
+ interface AXMSubscriptionManagementSubscriptionPlanItemEntityModel extends AXPEntityModel<string> {
137
+ planId: string;
138
+ plan?: {
139
+ id: string;
140
+ title: AXPMultiLanguageString;
141
+ description?: AXPMultiLanguageString;
142
+ };
143
+ subscribableType: string;
144
+ editionId: string;
145
+ edition?: {
146
+ id: string;
147
+ title: AXPMultiLanguageString;
148
+ description?: AXPMultiLanguageString;
149
+ };
150
+ meta?: Record<string, any>;
151
+ createdAt?: Date;
152
+ updatedAt?: Date;
153
+ }
154
+
155
+ export { AXMPermissionsKeys, AXMSubscriptionManagementFeatureKeys, AXMSubscriptionManagementMenuKeys, AXPSalesCustomersPermissionKeys, RootConfig };
156
+ export type { AXMSubscriptionManagementSubscriptionEntityModel, AXMSubscriptionManagementSubscriptionPlanEntityModel, AXMSubscriptionManagementSubscriptionPlanItemEntityModel };
@@ -0,0 +1,30 @@
1
+ import * as i0 from '@angular/core';
2
+ import { AXPFeatureDefinitionProvider, AXPFeatureDefinitionProviderContext } from '@acorex-platform/framework-client/core';
3
+ import * as _acorex_platform_framework_client_common from '@acorex-platform/framework-client/common';
4
+ import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider } from '@acorex-platform/framework-client/common';
5
+
6
+ declare class AXMSubscriptionManagementModule {
7
+ constructor();
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMSubscriptionManagementModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMSubscriptionManagementModule, never, never, never>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMSubscriptionManagementModule>;
11
+ }
12
+
13
+ /**
14
+ * Subscription Management Feature Definition Provider.
15
+ * Provides feature definitions for the Subscription Management module.
16
+ */
17
+ declare class AXMSubscriptionManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {
18
+ provide(context: AXPFeatureDefinitionProviderContext): Promise<void>;
19
+ }
20
+
21
+ declare class AXMSubscriptionManagementMenuProvider implements AXPMenuProvider {
22
+ private readonly entityService;
23
+ provide(context: AXPMenuProviderContext): Promise<void>;
24
+ }
25
+
26
+ declare class AXMSubscriptionManagementSearchProvider extends AXPSearchCommandProvider {
27
+ commands: _acorex_platform_framework_client_common.AXPSearchResult[];
28
+ }
29
+
30
+ export { AXMSubscriptionManagementFeatureDefinitionProvider, AXMSubscriptionManagementMenuProvider, AXMSubscriptionManagementModule, AXMSubscriptionManagementSearchProvider };