ofcoop-shared-core 0.1.0-alpha.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.
- package/README.md +18 -0
- package/dist/OfcoopCore.d.ts +60 -0
- package/dist/OfcoopCore.js +273 -0
- package/dist/contracts/MemberContract.d.ts +52 -0
- package/dist/contracts/MemberContract.js +2 -0
- package/dist/contracts/MemberNumberPolicyContract.d.ts +44 -0
- package/dist/contracts/MemberNumberPolicyContract.js +2 -0
- package/dist/contracts/SavingComplianceSnapshotContract.d.ts +34 -0
- package/dist/contracts/SavingComplianceSnapshotContract.js +2 -0
- package/dist/contracts/SavingLedgerContract.d.ts +49 -0
- package/dist/contracts/SavingLedgerContract.js +2 -0
- package/dist/contracts/SavingPolicyContract.d.ts +63 -0
- package/dist/contracts/SavingPolicyContract.js +2 -0
- package/dist/contracts/ShuConfigContract.d.ts +39 -0
- package/dist/contracts/ShuConfigContract.js +2 -0
- package/dist/contracts/ShuContract.d.ts +58 -0
- package/dist/contracts/ShuContract.js +2 -0
- package/dist/contracts/crossDomainPrimitives.d.ts +5 -0
- package/dist/contracts/crossDomainPrimitives.js +2 -0
- package/dist/data/applyPendingMigrations.d.ts +2 -0
- package/dist/data/applyPendingMigrations.js +30 -0
- package/dist/data/migrations.d.ts +2 -0
- package/dist/data/migrations.js +20 -0
- package/dist/data/repositories.d.ts +114 -0
- package/dist/data/repositories.js +324 -0
- package/dist/data/schemas.d.ts +14 -0
- package/dist/data/schemas.js +179 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +54 -0
- package/dist/services/AuditTrailQueryService.d.ts +35 -0
- package/dist/services/AuditTrailQueryService.js +62 -0
- package/dist/services/CoopOrchestrationService.d.ts +35 -0
- package/dist/services/CoopOrchestrationService.js +71 -0
- package/dist/services/DailyOpsService.d.ts +2 -0
- package/dist/services/DailyOpsService.js +7 -0
- package/dist/services/DashboardSummaryService.d.ts +180 -0
- package/dist/services/DashboardSummaryService.js +211 -0
- package/dist/services/DashboardViewModelService.d.ts +42 -0
- package/dist/services/DashboardViewModelService.js +193 -0
- package/dist/services/Member360Service.d.ts +75 -0
- package/dist/services/Member360Service.js +79 -0
- package/dist/services/Member360ViewModelService.d.ts +33 -0
- package/dist/services/Member360ViewModelService.js +66 -0
- package/dist/services/MemberNumberPolicyService.d.ts +4 -0
- package/dist/services/MemberNumberPolicyService.js +18 -0
- package/dist/services/MemberService.d.ts +4 -0
- package/dist/services/MemberService.js +18 -0
- package/dist/services/ReportSummaryService.d.ts +81 -0
- package/dist/services/ReportSummaryService.js +160 -0
- package/dist/services/ReportViewModelService.d.ts +24 -0
- package/dist/services/ReportViewModelService.js +90 -0
- package/dist/services/SavingComplianceSnapshotService.d.ts +4 -0
- package/dist/services/SavingComplianceSnapshotService.js +10 -0
- package/dist/services/SavingLedgerService.d.ts +4 -0
- package/dist/services/SavingLedgerService.js +13 -0
- package/dist/services/SavingPolicyService.d.ts +5 -0
- package/dist/services/SavingPolicyService.js +20 -0
- package/dist/services/ShuConfigService.d.ts +4 -0
- package/dist/services/ShuConfigService.js +16 -0
- package/dist/services/ShuService.d.ts +4 -0
- package/dist/services/ShuService.js +14 -0
- package/dist/services/createActivityAuditTrailProvider.d.ts +22 -0
- package/dist/services/createActivityAuditTrailProvider.js +73 -0
- package/dist/services/createAuditTrailCompositionProvider.d.ts +13 -0
- package/dist/services/createAuditTrailCompositionProvider.js +21 -0
- package/dist/services/createDbAdapterOfcoopServices.d.ts +20 -0
- package/dist/services/createDbAdapterOfcoopServices.js +23 -0
- package/dist/services/createMember360CompositionProviders.d.ts +6 -0
- package/dist/services/createMember360CompositionProviders.js +43 -0
- package/dist/services/createOfauthCompositionProviders.d.ts +39 -0
- package/dist/services/createOfauthCompositionProviders.js +80 -0
- package/dist/services/createOfcoopCreditCompositionProviders.d.ts +59 -0
- package/dist/services/createOfcoopCreditCompositionProviders.js +233 -0
- package/dist/services/createOfcoopDashboardCompositionProviders.d.ts +18 -0
- package/dist/services/createOfcoopDashboardCompositionProviders.js +228 -0
- package/dist/services/createOfcoopDomainAuditCompositionProviders.d.ts +36 -0
- package/dist/services/createOfcoopDomainAuditCompositionProviders.js +117 -0
- package/dist/services/createOfcoopReportCompositionProviders.d.ts +10 -0
- package/dist/services/createOfcoopReportCompositionProviders.js +30 -0
- package/dist/services/errors.d.ts +8 -0
- package/dist/services/errors.js +23 -0
- package/dist/services/impl/DbAdapterMemberNumberPolicyService.d.ts +9 -0
- package/dist/services/impl/DbAdapterMemberNumberPolicyService.js +37 -0
- package/dist/services/impl/DbAdapterMemberService.d.ts +21 -0
- package/dist/services/impl/DbAdapterMemberService.js +142 -0
- package/dist/services/impl/DbAdapterSavingComplianceSnapshotService.d.ts +9 -0
- package/dist/services/impl/DbAdapterSavingComplianceSnapshotService.js +74 -0
- package/dist/services/impl/DbAdapterSavingLedgerService.d.ts +18 -0
- package/dist/services/impl/DbAdapterSavingLedgerService.js +115 -0
- package/dist/services/impl/DbAdapterSavingPolicyService.d.ts +14 -0
- package/dist/services/impl/DbAdapterSavingPolicyService.js +139 -0
- package/dist/services/impl/DbAdapterShuConfigService.d.ts +12 -0
- package/dist/services/impl/DbAdapterShuConfigService.js +62 -0
- package/dist/services/impl/DbAdapterShuService.d.ts +26 -0
- package/dist/services/impl/DbAdapterShuService.js +376 -0
- package/dist/services/impl/runtimeSupport.d.ts +18 -0
- package/dist/services/impl/runtimeSupport.js +29 -0
- package/package.json +41 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ofcoopSchema = exports.OFCOOP_TABLES = void 0;
|
|
4
|
+
exports.getOfcoopTableSchemas = getOfcoopTableSchemas;
|
|
5
|
+
exports.OFCOOP_TABLES = {
|
|
6
|
+
members: 'ofcoop_members',
|
|
7
|
+
memberWaConsent: 'ofcoop_member_wa_consent',
|
|
8
|
+
memberExitState: 'ofcoop_member_exit_state',
|
|
9
|
+
memberNumberPolicies: 'ofcoop_member_number_policies',
|
|
10
|
+
savingPolicies: 'ofcoop_saving_policies',
|
|
11
|
+
savingEntries: 'ofcoop_saving_entries',
|
|
12
|
+
shuConfigs: 'ofcoop_shu_configs',
|
|
13
|
+
shuPeriods: 'ofcoop_shu_periods',
|
|
14
|
+
shuAllocations: 'ofcoop_shu_allocations',
|
|
15
|
+
};
|
|
16
|
+
const tableSchemas = [
|
|
17
|
+
{
|
|
18
|
+
name: exports.OFCOOP_TABLES.members,
|
|
19
|
+
columns: [
|
|
20
|
+
{ name: 'id', type: 'string' },
|
|
21
|
+
{ name: 'memberNumber', type: 'string', isIndexed: true },
|
|
22
|
+
{ name: 'fullName', type: 'string' },
|
|
23
|
+
{ name: 'status', type: 'string', enum: ['active', 'inactive', 'exited'] },
|
|
24
|
+
{ name: 'joinDate', type: 'string' },
|
|
25
|
+
{ name: 'exitDate', type: 'string', isOptional: true },
|
|
26
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
27
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
28
|
+
{ name: 'version', type: 'number' },
|
|
29
|
+
{ name: 'lastModified', type: 'string' },
|
|
30
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: exports.OFCOOP_TABLES.memberWaConsent,
|
|
35
|
+
columns: [
|
|
36
|
+
{ name: 'id', type: 'string' },
|
|
37
|
+
{ name: 'granted', type: 'boolean' },
|
|
38
|
+
{ name: 'source', type: 'string', isOptional: true },
|
|
39
|
+
{ name: 'note', type: 'string', isOptional: true },
|
|
40
|
+
{ name: 'version', type: 'number' },
|
|
41
|
+
{ name: 'lastModified', type: 'string' },
|
|
42
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: exports.OFCOOP_TABLES.memberExitState,
|
|
47
|
+
columns: [
|
|
48
|
+
{ name: 'id', type: 'string' },
|
|
49
|
+
{ name: 'stage', type: 'string', enum: ['requested', 'settled', 'canceled'] },
|
|
50
|
+
{ name: 'reason', type: 'string', isOptional: true },
|
|
51
|
+
{ name: 'requestedBy', type: 'string', isOptional: true },
|
|
52
|
+
{ name: 'referenceId', type: 'string', isOptional: true },
|
|
53
|
+
{ name: 'version', type: 'number' },
|
|
54
|
+
{ name: 'lastModified', type: 'string' },
|
|
55
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: exports.OFCOOP_TABLES.memberNumberPolicies,
|
|
60
|
+
columns: [
|
|
61
|
+
{ name: 'id', type: 'string' },
|
|
62
|
+
{ name: 'koperasiId', type: 'string', isIndexed: true },
|
|
63
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
64
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
65
|
+
{ name: 'prefix', type: 'string', isOptional: true },
|
|
66
|
+
{ name: 'includeYear', type: 'boolean' },
|
|
67
|
+
{ name: 'includeMonth', type: 'boolean', isOptional: true },
|
|
68
|
+
{ name: 'separator', type: 'string' },
|
|
69
|
+
{ name: 'paddingDigits', type: 'number' },
|
|
70
|
+
{ name: 'counterResetPolicy', type: 'string', enum: ['never', 'yearly'] },
|
|
71
|
+
{ name: 'counterStart', type: 'number' },
|
|
72
|
+
{ name: 'manualOverrideAllowed', type: 'boolean' },
|
|
73
|
+
{ name: 'effectiveDate', type: 'string' },
|
|
74
|
+
{ name: 'approvalRef', type: 'string', isOptional: true },
|
|
75
|
+
{ name: 'version', type: 'number' },
|
|
76
|
+
{ name: 'lastModified', type: 'string' },
|
|
77
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: exports.OFCOOP_TABLES.savingPolicies,
|
|
82
|
+
columns: [
|
|
83
|
+
{ name: 'id', type: 'string' },
|
|
84
|
+
{ name: 'koperasiId', type: 'string', isIndexed: true },
|
|
85
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
86
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
87
|
+
{ name: 'simpananPokokNominalIdr', type: 'number' },
|
|
88
|
+
{ name: 'monthlyWajibNominalIdr', type: 'number' },
|
|
89
|
+
{ name: 'gracePeriodMonth', type: 'number' },
|
|
90
|
+
{ name: 'dendaType', type: 'string', enum: ['fixed', 'percentage'] },
|
|
91
|
+
{ name: 'dendaAmountIdr', type: 'number' },
|
|
92
|
+
{ name: 'dendaPercentage', type: 'number' },
|
|
93
|
+
{ name: 'warningAtMonths', type: 'number' },
|
|
94
|
+
{ name: 'nonaktifAtMonths', type: 'number' },
|
|
95
|
+
{ name: 'autoSetAnggotaNonaktif', type: 'boolean' },
|
|
96
|
+
{ name: 'effectiveDate', type: 'string' },
|
|
97
|
+
{ name: 'changeReason', type: 'string', isOptional: true },
|
|
98
|
+
{ name: 'approvalRef', type: 'string', isOptional: true },
|
|
99
|
+
{ name: 'version', type: 'number' },
|
|
100
|
+
{ name: 'lastModified', type: 'string' },
|
|
101
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: exports.OFCOOP_TABLES.savingEntries,
|
|
106
|
+
columns: [
|
|
107
|
+
{ name: 'id', type: 'string' },
|
|
108
|
+
{ name: 'memberId', type: 'string', isIndexed: true },
|
|
109
|
+
{ name: 'savingType', type: 'string', enum: ['pokok', 'wajib', 'sukarela'] },
|
|
110
|
+
{ name: 'entryType', type: 'string', enum: ['credit', 'debit'] },
|
|
111
|
+
{ name: 'amount', type: 'number' },
|
|
112
|
+
{ name: 'transactionDate', type: 'string', isIndexed: true },
|
|
113
|
+
{ name: 'referenceType', type: 'string', isOptional: true },
|
|
114
|
+
{ name: 'referenceId', type: 'string', isOptional: true },
|
|
115
|
+
{ name: 'notes', type: 'string', isOptional: true },
|
|
116
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
117
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
118
|
+
{ name: 'version', type: 'number' },
|
|
119
|
+
{ name: 'lastModified', type: 'string' },
|
|
120
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: exports.OFCOOP_TABLES.shuConfigs,
|
|
125
|
+
columns: [
|
|
126
|
+
{ name: 'id', type: 'string' },
|
|
127
|
+
{ name: 'koperasiId', type: 'string', isIndexed: true },
|
|
128
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
129
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
130
|
+
{ name: 'effectiveDate', type: 'string' },
|
|
131
|
+
{ name: 'cadanganPercent', type: 'number' },
|
|
132
|
+
{ name: 'jasaUsahaPercent', type: 'number' },
|
|
133
|
+
{ name: 'jasaModalPercent', type: 'number' },
|
|
134
|
+
{ name: 'notes', type: 'string', isOptional: true },
|
|
135
|
+
{ name: 'approvalRef', type: 'string', isOptional: true },
|
|
136
|
+
{ name: 'version', type: 'number' },
|
|
137
|
+
{ name: 'lastModified', type: 'string' },
|
|
138
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: exports.OFCOOP_TABLES.shuPeriods,
|
|
143
|
+
columns: [
|
|
144
|
+
{ name: 'id', type: 'string' },
|
|
145
|
+
{ name: 'periodCode', type: 'string', isIndexed: true },
|
|
146
|
+
{ name: 'startDate', type: 'string' },
|
|
147
|
+
{ name: 'endDate', type: 'string' },
|
|
148
|
+
{ name: 'status', type: 'string', enum: ['draft', 'finalized'] },
|
|
149
|
+
{ name: 'formulaSnapshot', type: 'json' },
|
|
150
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
151
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
152
|
+
{ name: 'version', type: 'number' },
|
|
153
|
+
{ name: 'lastModified', type: 'string' },
|
|
154
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: exports.OFCOOP_TABLES.shuAllocations,
|
|
159
|
+
columns: [
|
|
160
|
+
{ name: 'id', type: 'string' },
|
|
161
|
+
{ name: 'shuPeriodId', type: 'string', isIndexed: true },
|
|
162
|
+
{ name: 'memberId', type: 'string', isIndexed: true },
|
|
163
|
+
{ name: 'allocationAmount', type: 'number' },
|
|
164
|
+
{ name: 'calculationBasis', type: 'json' },
|
|
165
|
+
{ name: 'branchId', type: 'string', isOptional: true, isIndexed: true },
|
|
166
|
+
{ name: 'tenantId', type: 'string', isOptional: true, isIndexed: true },
|
|
167
|
+
{ name: 'version', type: 'number' },
|
|
168
|
+
{ name: 'lastModified', type: 'string' },
|
|
169
|
+
{ name: 'deleted', type: 'boolean', isIndexed: true },
|
|
170
|
+
],
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
exports.ofcoopSchema = {
|
|
174
|
+
version: 1,
|
|
175
|
+
tables: tableSchemas,
|
|
176
|
+
};
|
|
177
|
+
function getOfcoopTableSchemas() {
|
|
178
|
+
return exports.ofcoopSchema.tables;
|
|
179
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export * from './contracts/crossDomainPrimitives';
|
|
2
|
+
export * from './contracts/MemberContract';
|
|
3
|
+
export * from './contracts/SavingLedgerContract';
|
|
4
|
+
export * from './contracts/ShuContract';
|
|
5
|
+
export * from './contracts/MemberNumberPolicyContract';
|
|
6
|
+
export * from './contracts/SavingPolicyContract';
|
|
7
|
+
export * from './contracts/SavingComplianceSnapshotContract';
|
|
8
|
+
export * from './contracts/ShuConfigContract';
|
|
9
|
+
export * from './OfcoopCore';
|
|
10
|
+
export * from './services/MemberService';
|
|
11
|
+
export * from './services/SavingLedgerService';
|
|
12
|
+
export * from './services/ShuService';
|
|
13
|
+
export * from './services/MemberNumberPolicyService';
|
|
14
|
+
export * from './services/SavingPolicyService';
|
|
15
|
+
export * from './services/SavingComplianceSnapshotService';
|
|
16
|
+
export * from './services/ShuConfigService';
|
|
17
|
+
export * from './services/CoopOrchestrationService';
|
|
18
|
+
export * from './services/Member360Service';
|
|
19
|
+
export * from './services/Member360ViewModelService';
|
|
20
|
+
export * from './services/createMember360CompositionProviders';
|
|
21
|
+
export * from './services/DashboardSummaryService';
|
|
22
|
+
export * from './services/DashboardViewModelService';
|
|
23
|
+
export * from './services/ReportSummaryService';
|
|
24
|
+
export * from './services/ReportViewModelService';
|
|
25
|
+
export * from './services/AuditTrailQueryService';
|
|
26
|
+
export * from './services/createAuditTrailCompositionProvider';
|
|
27
|
+
export * from './services/createActivityAuditTrailProvider';
|
|
28
|
+
export * from './services/createOfcoopCreditCompositionProviders';
|
|
29
|
+
export * from './services/createOfcoopDashboardCompositionProviders';
|
|
30
|
+
export * from './services/createOfcoopReportCompositionProviders';
|
|
31
|
+
export * from './services/createOfcoopDomainAuditCompositionProviders';
|
|
32
|
+
export * from './services/createOfauthCompositionProviders';
|
|
33
|
+
export * from './services/errors';
|
|
34
|
+
export * from './services/createDbAdapterOfcoopServices';
|
|
35
|
+
export * from './data/schemas';
|
|
36
|
+
export * from './data/migrations';
|
|
37
|
+
export * from './data/applyPendingMigrations';
|
|
38
|
+
export * from './data/repositories';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./contracts/crossDomainPrimitives"), exports);
|
|
18
|
+
__exportStar(require("./contracts/MemberContract"), exports);
|
|
19
|
+
__exportStar(require("./contracts/SavingLedgerContract"), exports);
|
|
20
|
+
__exportStar(require("./contracts/ShuContract"), exports);
|
|
21
|
+
__exportStar(require("./contracts/MemberNumberPolicyContract"), exports);
|
|
22
|
+
__exportStar(require("./contracts/SavingPolicyContract"), exports);
|
|
23
|
+
__exportStar(require("./contracts/SavingComplianceSnapshotContract"), exports);
|
|
24
|
+
__exportStar(require("./contracts/ShuConfigContract"), exports);
|
|
25
|
+
__exportStar(require("./OfcoopCore"), exports);
|
|
26
|
+
__exportStar(require("./services/MemberService"), exports);
|
|
27
|
+
__exportStar(require("./services/SavingLedgerService"), exports);
|
|
28
|
+
__exportStar(require("./services/ShuService"), exports);
|
|
29
|
+
__exportStar(require("./services/MemberNumberPolicyService"), exports);
|
|
30
|
+
__exportStar(require("./services/SavingPolicyService"), exports);
|
|
31
|
+
__exportStar(require("./services/SavingComplianceSnapshotService"), exports);
|
|
32
|
+
__exportStar(require("./services/ShuConfigService"), exports);
|
|
33
|
+
__exportStar(require("./services/CoopOrchestrationService"), exports);
|
|
34
|
+
__exportStar(require("./services/Member360Service"), exports);
|
|
35
|
+
__exportStar(require("./services/Member360ViewModelService"), exports);
|
|
36
|
+
__exportStar(require("./services/createMember360CompositionProviders"), exports);
|
|
37
|
+
__exportStar(require("./services/DashboardSummaryService"), exports);
|
|
38
|
+
__exportStar(require("./services/DashboardViewModelService"), exports);
|
|
39
|
+
__exportStar(require("./services/ReportSummaryService"), exports);
|
|
40
|
+
__exportStar(require("./services/ReportViewModelService"), exports);
|
|
41
|
+
__exportStar(require("./services/AuditTrailQueryService"), exports);
|
|
42
|
+
__exportStar(require("./services/createAuditTrailCompositionProvider"), exports);
|
|
43
|
+
__exportStar(require("./services/createActivityAuditTrailProvider"), exports);
|
|
44
|
+
__exportStar(require("./services/createOfcoopCreditCompositionProviders"), exports);
|
|
45
|
+
__exportStar(require("./services/createOfcoopDashboardCompositionProviders"), exports);
|
|
46
|
+
__exportStar(require("./services/createOfcoopReportCompositionProviders"), exports);
|
|
47
|
+
__exportStar(require("./services/createOfcoopDomainAuditCompositionProviders"), exports);
|
|
48
|
+
__exportStar(require("./services/createOfauthCompositionProviders"), exports);
|
|
49
|
+
__exportStar(require("./services/errors"), exports);
|
|
50
|
+
__exportStar(require("./services/createDbAdapterOfcoopServices"), exports);
|
|
51
|
+
__exportStar(require("./data/schemas"), exports);
|
|
52
|
+
__exportStar(require("./data/migrations"), exports);
|
|
53
|
+
__exportStar(require("./data/applyPendingMigrations"), exports);
|
|
54
|
+
__exportStar(require("./data/repositories"), exports);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface AuditTrailScopeRef {
|
|
2
|
+
tenantId?: string | null;
|
|
3
|
+
branchId?: string | null;
|
|
4
|
+
}
|
|
5
|
+
export type AuditTrailRole = 'pengurus' | 'pengawas' | 'anggota';
|
|
6
|
+
export interface AuditTrailAccessContext {
|
|
7
|
+
role: AuditTrailRole;
|
|
8
|
+
actorMemberId?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface AuditTrailEvent {
|
|
11
|
+
eventId: string;
|
|
12
|
+
sourceDomain: 'ofcoop' | 'ofcoop-credit' | 'ofauth' | 'external';
|
|
13
|
+
eventType: string;
|
|
14
|
+
occurredAt: string;
|
|
15
|
+
memberId?: string | null;
|
|
16
|
+
tenantId?: string | null;
|
|
17
|
+
branchId?: string | null;
|
|
18
|
+
summary?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AuditTrailQueryInput {
|
|
21
|
+
scope?: AuditTrailScopeRef;
|
|
22
|
+
memberId?: string | null;
|
|
23
|
+
eventTypes?: string[];
|
|
24
|
+
fromTimestamp?: string;
|
|
25
|
+
toTimestamp?: string;
|
|
26
|
+
limit?: number;
|
|
27
|
+
accessContext?: AuditTrailAccessContext;
|
|
28
|
+
}
|
|
29
|
+
export interface AuditTrailQueryDependencies {
|
|
30
|
+
providers: {
|
|
31
|
+
listEvents: (query: AuditTrailQueryInput) => Promise<AuditTrailEvent[]>;
|
|
32
|
+
};
|
|
33
|
+
eventCatalog?: string[];
|
|
34
|
+
}
|
|
35
|
+
export declare function queryAuditTrail(deps: AuditTrailQueryDependencies, input?: AuditTrailQueryInput): Promise<AuditTrailEvent[]>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryAuditTrail = queryAuditTrail;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
function normalizeQuery(input) {
|
|
6
|
+
const out = { ...input };
|
|
7
|
+
if (out.limit == null)
|
|
8
|
+
out.limit = 100;
|
|
9
|
+
if (out.limit < 1)
|
|
10
|
+
out.limit = 1;
|
|
11
|
+
if (out.limit > 1000)
|
|
12
|
+
out.limit = 1000;
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
function normalizeCatalog(catalog) {
|
|
16
|
+
if (!catalog || catalog.length === 0)
|
|
17
|
+
return null;
|
|
18
|
+
return new Set(catalog);
|
|
19
|
+
}
|
|
20
|
+
function enforceCatalogQuery(query, catalog) {
|
|
21
|
+
if (!catalog || !query.eventTypes?.length)
|
|
22
|
+
return;
|
|
23
|
+
const unknown = query.eventTypes.filter((eventType) => !catalog.has(eventType));
|
|
24
|
+
if (unknown.length > 0) {
|
|
25
|
+
throw (0, errors_1.invalidState)(`audit trail query contains unknown eventTypes: ${unknown.join(', ')}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function enforceAccessPolicy(input) {
|
|
29
|
+
const query = normalizeQuery(input);
|
|
30
|
+
const ctx = query.accessContext;
|
|
31
|
+
if (!ctx || ctx.role !== 'anggota')
|
|
32
|
+
return query;
|
|
33
|
+
if (!ctx.actorMemberId?.trim()) {
|
|
34
|
+
throw (0, errors_1.invalidState)('audit trail access denied: anggota context requires actorMemberId');
|
|
35
|
+
}
|
|
36
|
+
if (query.memberId && query.memberId !== ctx.actorMemberId) {
|
|
37
|
+
throw (0, errors_1.invalidState)('audit trail access denied: anggota can only query own memberId');
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
...query,
|
|
41
|
+
memberId: ctx.actorMemberId,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function applyQueryFilter(events, query) {
|
|
45
|
+
return events
|
|
46
|
+
.filter((e) => (query.memberId ? e.memberId === query.memberId : true))
|
|
47
|
+
.filter((e) => (query.scope?.tenantId ? e.tenantId === query.scope.tenantId : true))
|
|
48
|
+
.filter((e) => (query.scope?.branchId ? e.branchId === query.scope.branchId : true))
|
|
49
|
+
.filter((e) => (query.eventTypes?.length ? query.eventTypes.includes(e.eventType) : true))
|
|
50
|
+
.filter((e) => (query.fromTimestamp ? e.occurredAt >= query.fromTimestamp : true))
|
|
51
|
+
.filter((e) => (query.toTimestamp ? e.occurredAt <= query.toTimestamp : true))
|
|
52
|
+
.sort((a, b) => b.occurredAt.localeCompare(a.occurredAt))
|
|
53
|
+
.slice(0, query.limit ?? 100);
|
|
54
|
+
}
|
|
55
|
+
async function queryAuditTrail(deps, input = {}) {
|
|
56
|
+
const catalog = normalizeCatalog(deps.eventCatalog);
|
|
57
|
+
const query = enforceAccessPolicy(input);
|
|
58
|
+
enforceCatalogQuery(query, catalog);
|
|
59
|
+
const events = await deps.providers.listEvents(query);
|
|
60
|
+
const sanitizedEvents = catalog ? events.filter((event) => catalog.has(event.eventType)) : events;
|
|
61
|
+
return applyQueryFilter(sanitizedEvents, query);
|
|
62
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CreateMemberInput, MemberContract, MemberServiceContract } from '../contracts/MemberContract';
|
|
2
|
+
import type { SavingLedgerContract, SavingLedgerServiceContract } from '../contracts/SavingLedgerContract';
|
|
3
|
+
import type { SavingComplianceEvaluation, SavingComplianceWorklistItem, SavingPolicyContract, SavingPolicyServiceContract, UpsertSavingPolicyInput } from '../contracts/SavingPolicyContract';
|
|
4
|
+
import type { CreateShuPeriodInput, CsvExportPayload, ShuAllocationContract, ShuPeriodContract, ShuServiceContract } from '../contracts/ShuContract';
|
|
5
|
+
export interface CoopOrchestrationDependencies {
|
|
6
|
+
memberService: MemberServiceContract;
|
|
7
|
+
savingLedgerService: SavingLedgerServiceContract;
|
|
8
|
+
savingPolicyService: SavingPolicyServiceContract;
|
|
9
|
+
shuService: ShuServiceContract;
|
|
10
|
+
}
|
|
11
|
+
export interface OnboardMemberInput {
|
|
12
|
+
koperasiId?: string;
|
|
13
|
+
member: CreateMemberInput;
|
|
14
|
+
initialPokokDepositIdr?: number;
|
|
15
|
+
initialWajibDepositIdr?: number;
|
|
16
|
+
initialSukarelaDepositIdr?: number;
|
|
17
|
+
transactionDate: string;
|
|
18
|
+
}
|
|
19
|
+
export interface OnboardMemberResult {
|
|
20
|
+
member: MemberContract;
|
|
21
|
+
ledgerEntries: SavingLedgerContract[];
|
|
22
|
+
}
|
|
23
|
+
export declare function onboardMemberWithInitialSavings(deps: Pick<CoopOrchestrationDependencies, 'memberService' | 'savingLedgerService' | 'savingPolicyService'>, input: OnboardMemberInput): Promise<OnboardMemberResult>;
|
|
24
|
+
export interface UpsertPolicyAndEvaluateResult {
|
|
25
|
+
policy: SavingPolicyContract;
|
|
26
|
+
evaluation: SavingComplianceEvaluation;
|
|
27
|
+
worklist: SavingComplianceWorklistItem[];
|
|
28
|
+
}
|
|
29
|
+
export declare function upsertPolicyAndEvaluateCompliance(deps: Pick<CoopOrchestrationDependencies, 'savingPolicyService'>, input: UpsertSavingPolicyInput): Promise<UpsertPolicyAndEvaluateResult>;
|
|
30
|
+
export interface CreateGenerateExportShuResult {
|
|
31
|
+
period: ShuPeriodContract;
|
|
32
|
+
allocations: ShuAllocationContract[];
|
|
33
|
+
csv: CsvExportPayload;
|
|
34
|
+
}
|
|
35
|
+
export declare function createGenerateAndExportShu(deps: Pick<CoopOrchestrationDependencies, 'shuService'>, input: CreateShuPeriodInput): Promise<CreateGenerateExportShuResult>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onboardMemberWithInitialSavings = onboardMemberWithInitialSavings;
|
|
4
|
+
exports.upsertPolicyAndEvaluateCompliance = upsertPolicyAndEvaluateCompliance;
|
|
5
|
+
exports.createGenerateAndExportShu = createGenerateAndExportShu;
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
async function onboardMemberWithInitialSavings(deps, input) {
|
|
8
|
+
if (!input.transactionDate?.trim()) {
|
|
9
|
+
throw (0, errors_1.invalidState)('transactionDate is required');
|
|
10
|
+
}
|
|
11
|
+
const pokok = Math.max(0, input.initialPokokDepositIdr ?? 0);
|
|
12
|
+
const wajib = Math.max(0, input.initialWajibDepositIdr ?? 0);
|
|
13
|
+
const sukarela = Math.max(0, input.initialSukarelaDepositIdr ?? 0);
|
|
14
|
+
if (deps.savingPolicyService && input.koperasiId && input.member.tenantId) {
|
|
15
|
+
const activePolicy = await deps.savingPolicyService.getActiveSavingPolicy({
|
|
16
|
+
koperasiId: input.koperasiId,
|
|
17
|
+
tenantId: input.member.tenantId,
|
|
18
|
+
branchId: input.member.branchId ?? null,
|
|
19
|
+
});
|
|
20
|
+
if (activePolicy && pokok < activePolicy.simpananPokokNominalIdr) {
|
|
21
|
+
throw (0, errors_1.invalidState)(`initialPokokDepositIdr must be >= ${activePolicy.simpananPokokNominalIdr}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const member = await deps.memberService.createMember(input.member);
|
|
25
|
+
const ledgerEntries = [];
|
|
26
|
+
const baseEntry = {
|
|
27
|
+
memberId: member.id,
|
|
28
|
+
transactionDate: input.transactionDate,
|
|
29
|
+
tenantId: member.tenantId ?? null,
|
|
30
|
+
branchId: member.branchId ?? null,
|
|
31
|
+
};
|
|
32
|
+
if (pokok > 0) {
|
|
33
|
+
ledgerEntries.push(await deps.savingLedgerService.recordSavingCredit({
|
|
34
|
+
...baseEntry,
|
|
35
|
+
savingType: 'pokok',
|
|
36
|
+
amount: pokok,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
if (wajib > 0) {
|
|
40
|
+
ledgerEntries.push(await deps.savingLedgerService.recordSavingCredit({
|
|
41
|
+
...baseEntry,
|
|
42
|
+
savingType: 'wajib',
|
|
43
|
+
amount: wajib,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
if (sukarela > 0) {
|
|
47
|
+
ledgerEntries.push(await deps.savingLedgerService.recordSavingCredit({
|
|
48
|
+
...baseEntry,
|
|
49
|
+
savingType: 'sukarela',
|
|
50
|
+
amount: sukarela,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
return { member, ledgerEntries };
|
|
54
|
+
}
|
|
55
|
+
async function upsertPolicyAndEvaluateCompliance(deps, input) {
|
|
56
|
+
const policy = await deps.savingPolicyService.upsertSavingPolicy(input);
|
|
57
|
+
const scope = {
|
|
58
|
+
koperasiId: input.koperasiId,
|
|
59
|
+
tenantId: input.tenantId,
|
|
60
|
+
branchId: input.branchId ?? null,
|
|
61
|
+
};
|
|
62
|
+
const evaluation = await deps.savingPolicyService.evaluateWajibCompliance(scope);
|
|
63
|
+
const worklist = await deps.savingPolicyService.getComplianceWorklist(scope);
|
|
64
|
+
return { policy, evaluation, worklist };
|
|
65
|
+
}
|
|
66
|
+
async function createGenerateAndExportShu(deps, input) {
|
|
67
|
+
const period = await deps.shuService.createShuPeriod(input);
|
|
68
|
+
const allocations = await deps.shuService.generateShuAllocations(period.id);
|
|
69
|
+
const csv = await deps.shuService.exportShuAllocationsCsv(period.id);
|
|
70
|
+
return { period, allocations, csv };
|
|
71
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export type { CoopOrchestrationDependencies as DailyOpsDependencies, OnboardMemberInput, OnboardMemberResult, UpsertPolicyAndEvaluateResult, CreateGenerateExportShuResult, } from './CoopOrchestrationService';
|
|
2
|
+
export { onboardMemberWithInitialSavings, upsertPolicyAndEvaluateCompliance, createGenerateAndExportShu, } from './CoopOrchestrationService';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGenerateAndExportShu = exports.upsertPolicyAndEvaluateCompliance = exports.onboardMemberWithInitialSavings = void 0;
|
|
4
|
+
var CoopOrchestrationService_1 = require("./CoopOrchestrationService");
|
|
5
|
+
Object.defineProperty(exports, "onboardMemberWithInitialSavings", { enumerable: true, get: function () { return CoopOrchestrationService_1.onboardMemberWithInitialSavings; } });
|
|
6
|
+
Object.defineProperty(exports, "upsertPolicyAndEvaluateCompliance", { enumerable: true, get: function () { return CoopOrchestrationService_1.upsertPolicyAndEvaluateCompliance; } });
|
|
7
|
+
Object.defineProperty(exports, "createGenerateAndExportShu", { enumerable: true, get: function () { return CoopOrchestrationService_1.createGenerateAndExportShu; } });
|