@lyxa.ai/core 1.4.253-alpha.9 → 1.4.253
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/dist/libraries/cash-settlement/providers/bob.d.ts +0 -1
- package/dist/libraries/cash-settlement/providers/bob.js +90 -120
- package/dist/libraries/cash-settlement/providers/bob.js.map +1 -1
- package/dist/libraries/event/events/rider/cash/index.d.ts +0 -1
- package/dist/libraries/event/events/rider/cash/index.js +1 -3
- package/dist/libraries/event/events/rider/cash/index.js.map +1 -1
- package/dist/libraries/mongo/models/bob-finance.model.d.ts +2 -4
- package/dist/libraries/mongo/models/bob-finance.model.js +2 -8
- package/dist/libraries/mongo/models/bob-finance.model.js.map +1 -1
- package/dist/libraries/mongo/models/embedded/price-breakdown.model.d.ts +1 -1
- package/dist/libraries/mongo/models/embedded/price-breakdown.model.js +1 -1
- package/dist/libraries/mongo/models/embedded/price-breakdown.model.js.map +1 -1
- package/dist/libraries/mongo/models/embedded/rider-setting.model.d.ts +0 -1
- package/dist/libraries/mongo/models/embedded/rider-setting.model.js +0 -5
- package/dist/libraries/mongo/models/embedded/rider-setting.model.js.map +1 -1
- package/dist/libraries/mongo/models/rider.model.d.ts +0 -1
- package/dist/libraries/mongo/models/rider.model.js +0 -5
- package/dist/libraries/mongo/models/rider.model.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/types/utilities/enum.d.ts +4 -8
- package/dist/types/utilities/enum.js +0 -4
- package/dist/types/utilities/enum.js.map +1 -1
- package/dist/utilities/enum.d.ts +4 -8
- package/dist/utilities/enum.js +0 -4
- package/dist/utilities/enum.js.map +1 -1
- package/package.json +1 -1
- package/dist/libraries/event/events/rider/cash/rider-max-cash-balance-for-bob-payout-updated.event.d.ts +0 -10
- package/dist/libraries/event/events/rider/cash/rider-max-cash-balance-for-bob-payout-updated.event.js +0 -17
- package/dist/libraries/event/events/rider/cash/rider-max-cash-balance-for-bob-payout-updated.event.js.map +0 -1
|
@@ -16,7 +16,6 @@ export declare class BOBService implements ICashSettlementService {
|
|
|
16
16
|
private BOB_USER_NAME;
|
|
17
17
|
private BOB_PASSWORD;
|
|
18
18
|
private BOB_URL;
|
|
19
|
-
private logger;
|
|
20
19
|
constructor(secrets: BOBSecrets);
|
|
21
20
|
initiateSettlement(amount: number, currency: string, reference: string, firstName: string, lastName: string, riderId: mongoose.Types.ObjectId, location?: string): Promise<boolean>;
|
|
22
21
|
markSettlementAsPaid(settlementId: mongoose.Types.ObjectId): Promise<boolean>;
|
|
@@ -18,6 +18,7 @@ const models_1 = require("../../mongo/models");
|
|
|
18
18
|
const typedi_1 = require("typedi");
|
|
19
19
|
const https_1 = __importDefault(require("https"));
|
|
20
20
|
const zlib_1 = __importDefault(require("zlib"));
|
|
21
|
+
const server_1 = require("@trpc/server");
|
|
21
22
|
const enum_1 = require("../../../utilities/enum");
|
|
22
23
|
const __1 = require("../../..");
|
|
23
24
|
const error_common_1 = require("../../../utilities/error-common");
|
|
@@ -37,18 +38,17 @@ let BOBService = class BOBService {
|
|
|
37
38
|
BOB_USER_NAME;
|
|
38
39
|
BOB_PASSWORD;
|
|
39
40
|
BOB_URL;
|
|
40
|
-
logger;
|
|
41
41
|
constructor(secrets) {
|
|
42
42
|
this.BOB_USER_NAME = secrets.BOB_USER_NAME;
|
|
43
43
|
this.BOB_PASSWORD = secrets.BOB_PASSWORD;
|
|
44
44
|
this.BOB_URL = secrets.BOB_URL;
|
|
45
|
-
this.logger = (0, __1.getLibraries)().getLoggerKit();
|
|
46
45
|
this.model = models_1.BOBFinanceModel;
|
|
47
46
|
this.riderModel = models_1.RiderModel;
|
|
48
47
|
this.financeSettlementModel = models_1.FinanceSettlementModel;
|
|
49
48
|
}
|
|
50
49
|
async initiateSettlement(amount, currency, reference, firstName, lastName, riderId, location) {
|
|
51
|
-
|
|
50
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
51
|
+
logger.info('Initiating BOB settlement', {
|
|
52
52
|
tag: enum_1.LogTag.BOB_TRANSACTION_INITIATE,
|
|
53
53
|
data: {
|
|
54
54
|
amount,
|
|
@@ -77,41 +77,23 @@ let BOBService = class BOBService {
|
|
|
77
77
|
Amount: String(amount),
|
|
78
78
|
Currency: currency,
|
|
79
79
|
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
httpsAgent: new https_1.default.Agent({ rejectUnauthorized: false }),
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
this.logger.error('Error posting to BOB API:', error, {
|
|
88
|
-
tag: enum_1.LogTag.BOB_TRANSACTION_INITIATE,
|
|
89
|
-
data: {
|
|
90
|
-
crmNumber,
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
throw (0, error_common_1.internalServerError)('Failed to post data to BOB API.');
|
|
94
|
-
}
|
|
80
|
+
const { data } = await axios_1.default.post(`${this.BOB_URL}InsertTransferData`, bobData, {
|
|
81
|
+
httpsAgent: new https_1.default.Agent({ rejectUnauthorized: false }),
|
|
82
|
+
});
|
|
95
83
|
if (data.ErrorCode != 100) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
errorCode: data.ErrorCode,
|
|
101
|
-
errorDescription: data.ErrorDescription,
|
|
102
|
-
},
|
|
84
|
+
console.error(`Error in BOB initiateSettlement: ${data.ErrorDescription}`);
|
|
85
|
+
throw new server_1.TRPCError({
|
|
86
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
87
|
+
message: 'Failed to post data to BOB API.',
|
|
103
88
|
});
|
|
104
|
-
throw (0, error_common_1.internalServerError)('Failed to post data to BOB API.');
|
|
105
89
|
}
|
|
106
90
|
const responseObject = await this.decompressResponse(data.Response);
|
|
107
91
|
if (!responseObject || !responseObject.isSuccess) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
},
|
|
92
|
+
console.error('Failed to initiate settlement in BOB');
|
|
93
|
+
throw new server_1.TRPCError({
|
|
94
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
95
|
+
message: 'Failed to initiate settlement in BOB.',
|
|
113
96
|
});
|
|
114
|
-
throw (0, error_common_1.internalServerError)('Failed to initiate settlement in BOB.');
|
|
115
97
|
}
|
|
116
98
|
const bobSettlement = await this.model.create({
|
|
117
99
|
amount: currency === 'USD' ? amount : 0,
|
|
@@ -124,7 +106,7 @@ let BOBService = class BOBService {
|
|
|
124
106
|
bobModel: enum_1.BobModel.C2B,
|
|
125
107
|
bobType: enum_1.BobType.INWARD,
|
|
126
108
|
});
|
|
127
|
-
|
|
109
|
+
logger.info('Created BOB settlement in database', {
|
|
128
110
|
tag: enum_1.LogTag.BOB_TRANSACTION_INITIATE,
|
|
129
111
|
data: {
|
|
130
112
|
bobSettlementId: bobSettlement._id.toString(),
|
|
@@ -134,7 +116,8 @@ let BOBService = class BOBService {
|
|
|
134
116
|
return true;
|
|
135
117
|
}
|
|
136
118
|
async markSettlementAsPaid(settlementId) {
|
|
137
|
-
|
|
119
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
120
|
+
logger.info('Marking BOB settlement as paid', {
|
|
138
121
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
139
122
|
data: {
|
|
140
123
|
settlementId: settlementId.toString(),
|
|
@@ -142,28 +125,31 @@ let BOBService = class BOBService {
|
|
|
142
125
|
});
|
|
143
126
|
const settlement = await this.model.findById(settlementId);
|
|
144
127
|
if (!settlement) {
|
|
145
|
-
|
|
128
|
+
logger.info('Settlement not found', {
|
|
146
129
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
147
130
|
data: {
|
|
148
131
|
settlementId: settlementId.toString(),
|
|
149
132
|
},
|
|
150
133
|
});
|
|
151
|
-
throw
|
|
134
|
+
throw new server_1.TRPCError({
|
|
135
|
+
code: 'NOT_FOUND',
|
|
136
|
+
message: 'Settlement not found.',
|
|
137
|
+
});
|
|
152
138
|
}
|
|
153
139
|
if (settlement.status === enum_1.BobSettlementStatus.PAID) {
|
|
154
|
-
|
|
140
|
+
logger.info('Settlement is already marked as paid', {
|
|
155
141
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
156
142
|
data: {
|
|
157
143
|
settlementId: settlementId.toString(),
|
|
158
144
|
},
|
|
159
145
|
});
|
|
160
|
-
|
|
146
|
+
(0, error_common_1.badRequestError)('Settlement is already marked as paid.');
|
|
161
147
|
}
|
|
162
148
|
await this.settlePayment(settlement);
|
|
163
149
|
if (settlement.status === enum_1.BobSettlementStatus.NOT_PAID) {
|
|
164
150
|
await this.removeTransfer(settlement.crmNumber);
|
|
165
151
|
}
|
|
166
|
-
|
|
152
|
+
logger.info('BOB settlement marked as paid', {
|
|
167
153
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
168
154
|
data: {
|
|
169
155
|
settlementId: settlementId.toString(),
|
|
@@ -172,7 +158,8 @@ let BOBService = class BOBService {
|
|
|
172
158
|
return true;
|
|
173
159
|
}
|
|
174
160
|
async settlePayment(settlement) {
|
|
175
|
-
|
|
161
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
162
|
+
logger.info('Settling BOB payment', {
|
|
176
163
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
177
164
|
data: {
|
|
178
165
|
settlementId: settlement._id.toString(),
|
|
@@ -189,13 +176,11 @@ let BOBService = class BOBService {
|
|
|
189
176
|
});
|
|
190
177
|
const rider = await this.riderModel.findById(settlement.rider);
|
|
191
178
|
if (!rider) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
},
|
|
179
|
+
console.error(`Rider with ID ${settlement.rider} not found.`);
|
|
180
|
+
throw new server_1.TRPCError({
|
|
181
|
+
code: 'NOT_FOUND',
|
|
182
|
+
message: 'Rider not found.',
|
|
197
183
|
});
|
|
198
|
-
throw (0, error_common_1.notFoundError)('Rider not found.');
|
|
199
184
|
}
|
|
200
185
|
const settings = (await (0, __1.getLibraries)().getCachedSettingsService().getSettings());
|
|
201
186
|
const exchangeRate = settings?.currencySetting?.exchangeRate || 1;
|
|
@@ -224,7 +209,7 @@ let BOBService = class BOBService {
|
|
|
224
209
|
},
|
|
225
210
|
$unset: unsetUpdate,
|
|
226
211
|
}, { new: true, runValidators: true });
|
|
227
|
-
|
|
212
|
+
logger.info('Settled BOB payment and updated rider cash in hand', {
|
|
228
213
|
tag: enum_1.LogTag.BOB_TRANSACTION_SETTLE,
|
|
229
214
|
data: {
|
|
230
215
|
settlementId: settlement._id.toString(),
|
|
@@ -269,7 +254,8 @@ let BOBService = class BOBService {
|
|
|
269
254
|
return { deltaPrimary, deltaSecondary };
|
|
270
255
|
}
|
|
271
256
|
async revokeSettlement(reference) {
|
|
272
|
-
|
|
257
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
258
|
+
logger.info('Revoking BOB settlement', {
|
|
273
259
|
tag: enum_1.LogTag.BOB_TRANSACTION_REVOKE,
|
|
274
260
|
data: {
|
|
275
261
|
reference,
|
|
@@ -280,13 +266,11 @@ let BOBService = class BOBService {
|
|
|
280
266
|
status: enum_1.BobSettlementStatus.NOT_PAID,
|
|
281
267
|
});
|
|
282
268
|
if (!settlement) {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
},
|
|
269
|
+
console.error(`Settlement with reference ${reference} not found.`);
|
|
270
|
+
throw new server_1.TRPCError({
|
|
271
|
+
code: 'NOT_FOUND',
|
|
272
|
+
message: 'Settlement not found.',
|
|
288
273
|
});
|
|
289
|
-
throw (0, error_common_1.notFoundError)('Settlement not found.');
|
|
290
274
|
}
|
|
291
275
|
await this.removeTransfer(reference);
|
|
292
276
|
const result = await this.model.findOneAndUpdate({
|
|
@@ -295,7 +279,7 @@ let BOBService = class BOBService {
|
|
|
295
279
|
}, {
|
|
296
280
|
status: enum_1.BobSettlementStatus.REVOKED,
|
|
297
281
|
}, { new: true, runValidators: true });
|
|
298
|
-
|
|
282
|
+
logger.info('BOB settlement revoked', {
|
|
299
283
|
tag: enum_1.LogTag.BOB_TRANSACTION_REVOKE,
|
|
300
284
|
data: {
|
|
301
285
|
reference,
|
|
@@ -306,7 +290,8 @@ let BOBService = class BOBService {
|
|
|
306
290
|
return true;
|
|
307
291
|
}
|
|
308
292
|
async revokeRiderSettlements(rider) {
|
|
309
|
-
|
|
293
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
294
|
+
logger.info('Revoking BOB settlements for rider', {
|
|
310
295
|
tag: enum_1.LogTag.BOB_TRANSACTION_REVOKE,
|
|
311
296
|
data: {
|
|
312
297
|
riderId: rider.toString(),
|
|
@@ -317,7 +302,7 @@ let BOBService = class BOBService {
|
|
|
317
302
|
status: enum_1.BobSettlementStatus.NOT_PAID,
|
|
318
303
|
});
|
|
319
304
|
if (!settlements.length) {
|
|
320
|
-
|
|
305
|
+
logger.info('No unpaid BOB settlements found for rider', {
|
|
321
306
|
tag: enum_1.LogTag.BOB_TRANSACTION_REVOKE,
|
|
322
307
|
data: {
|
|
323
308
|
riderId: rider.toString(),
|
|
@@ -331,7 +316,7 @@ let BOBService = class BOBService {
|
|
|
331
316
|
status: enum_1.BobSettlementStatus.REVOKED,
|
|
332
317
|
});
|
|
333
318
|
}
|
|
334
|
-
|
|
319
|
+
logger.info('BOB settlements revoked for rider', {
|
|
335
320
|
tag: enum_1.LogTag.BOB_TRANSACTION_REVOKE,
|
|
336
321
|
data: {
|
|
337
322
|
riderId: rider.toString(),
|
|
@@ -341,7 +326,8 @@ let BOBService = class BOBService {
|
|
|
341
326
|
return true;
|
|
342
327
|
}
|
|
343
328
|
async removeTransfer(crmNumber) {
|
|
344
|
-
|
|
329
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
330
|
+
logger.info('Removing transfer from BOB', {
|
|
345
331
|
tag: enum_1.LogTag.BOB_TRANSACTION_REMOVE,
|
|
346
332
|
data: {
|
|
347
333
|
crmNumber,
|
|
@@ -349,7 +335,7 @@ let BOBService = class BOBService {
|
|
|
349
335
|
});
|
|
350
336
|
const transferExists = await this.hasUnpaidTransfer(crmNumber);
|
|
351
337
|
if (!transferExists) {
|
|
352
|
-
|
|
338
|
+
logger.info('No transfer exists for this crm number in bob', {
|
|
353
339
|
tag: enum_1.LogTag.BOB_TRANSACTION_CHECK,
|
|
354
340
|
data: {
|
|
355
341
|
crmNumber,
|
|
@@ -373,26 +359,21 @@ let BOBService = class BOBService {
|
|
|
373
359
|
return;
|
|
374
360
|
}
|
|
375
361
|
if (data.ErrorCode != 100) {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
errorDescription: data.ErrorDescription,
|
|
381
|
-
},
|
|
362
|
+
console.error(`Error in BOB removeTransfer: ${data.ErrorDescription}`);
|
|
363
|
+
throw new server_1.TRPCError({
|
|
364
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
365
|
+
message: 'Failed to post data to BOB API.',
|
|
382
366
|
});
|
|
383
|
-
throw (0, error_common_1.internalServerError)('Failed to post data to BOB API.');
|
|
384
367
|
}
|
|
385
368
|
const responseObject = await this.decompressResponse(data.Response);
|
|
386
369
|
if (!responseObject || !responseObject.isSuccess) {
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
},
|
|
370
|
+
console.error('Failed to remove transfer in BOB');
|
|
371
|
+
throw new server_1.TRPCError({
|
|
372
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
373
|
+
message: 'Failed to remove transfer in BOB.',
|
|
392
374
|
});
|
|
393
|
-
throw (0, error_common_1.internalServerError)('Failed to remove transfer in BOB.');
|
|
394
375
|
}
|
|
395
|
-
|
|
376
|
+
logger.info('Removed transfer from BOB', {
|
|
396
377
|
tag: enum_1.LogTag.BOB_TRANSACTION_REMOVE,
|
|
397
378
|
data: {
|
|
398
379
|
crmNumber,
|
|
@@ -411,7 +392,6 @@ let BOBService = class BOBService {
|
|
|
411
392
|
const pendingSettlements = await this.model.find({
|
|
412
393
|
rider: riderId,
|
|
413
394
|
status: enum_1.BobSettlementStatus.NOT_PAID,
|
|
414
|
-
settlementType: enum_1.BobSettlementType.SETTLE_CASH,
|
|
415
395
|
});
|
|
416
396
|
return pendingSettlements.length > 0;
|
|
417
397
|
}
|
|
@@ -436,7 +416,6 @@ let BOBService = class BOBService {
|
|
|
436
416
|
const lastSettlement = await this.model
|
|
437
417
|
.findOne({
|
|
438
418
|
rider: rider,
|
|
439
|
-
settlementType: enum_1.BobSettlementType.SETTLE_CASH,
|
|
440
419
|
})
|
|
441
420
|
.sort({ createdAt: -1 });
|
|
442
421
|
if (!lastSettlement)
|
|
@@ -450,7 +429,7 @@ let BOBService = class BOBService {
|
|
|
450
429
|
updatedAt: lastSettlement.updatedAt ?? new Date(),
|
|
451
430
|
};
|
|
452
431
|
}
|
|
453
|
-
async getTransfers(timeframe
|
|
432
|
+
async getTransfers(timeframe) {
|
|
454
433
|
const DateTimeFrom = new Date(timeframe.startDate).toISOString().split('.')[0] + 'Z';
|
|
455
434
|
const DateTimeTo = new Date(timeframe.endDate).toISOString().split('.')[0] + 'Z';
|
|
456
435
|
const bobData = {
|
|
@@ -459,7 +438,7 @@ let BOBService = class BOBService {
|
|
|
459
438
|
User: this.BOB_USER_NAME,
|
|
460
439
|
Password: this.BOB_PASSWORD,
|
|
461
440
|
},
|
|
462
|
-
Model:
|
|
441
|
+
Model: enum_1.BobModel.C2B,
|
|
463
442
|
DateTimeFrom,
|
|
464
443
|
DateTimeTo,
|
|
465
444
|
};
|
|
@@ -467,24 +446,19 @@ let BOBService = class BOBService {
|
|
|
467
446
|
httpsAgent: new https_1.default.Agent({ rejectUnauthorized: false }),
|
|
468
447
|
});
|
|
469
448
|
if (data.ErrorCode != 100) {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
errorDescription: data.ErrorDescription,
|
|
475
|
-
},
|
|
449
|
+
console.error(`Error in BOB getTransfers: ${data.ErrorDescription}`);
|
|
450
|
+
throw new server_1.TRPCError({
|
|
451
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
452
|
+
message: 'Failed to post data to BOB API.',
|
|
476
453
|
});
|
|
477
|
-
throw (0, error_common_1.internalServerError)('Failed to post data to BOB API.');
|
|
478
454
|
}
|
|
479
455
|
const responseObject = await this.decompressResponse(data.Response);
|
|
480
456
|
if (!responseObject) {
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
},
|
|
457
|
+
console.error('Failed to get transfers in BOB');
|
|
458
|
+
throw new server_1.TRPCError({
|
|
459
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
460
|
+
message: 'Failed to get transfers in BOB.',
|
|
486
461
|
});
|
|
487
|
-
throw (0, error_common_1.internalServerError)('Failed to get transfers in BOB.');
|
|
488
462
|
}
|
|
489
463
|
return responseObject;
|
|
490
464
|
}
|
|
@@ -493,18 +467,11 @@ let BOBService = class BOBService {
|
|
|
493
467
|
const decodedBuffer = Buffer.from(response, 'base64');
|
|
494
468
|
zlib_1.default.gunzip(decodedBuffer, (err, decompressedBuffer) => {
|
|
495
469
|
if (err) {
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
},
|
|
470
|
+
console.error('Error decompressing GZIP:', err);
|
|
471
|
+
throw new server_1.TRPCError({
|
|
472
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
473
|
+
message: 'Failed to decompress data from BOB API.',
|
|
501
474
|
});
|
|
502
|
-
try {
|
|
503
|
-
reject((0, error_common_1.internalServerError)('Failed to decompress data from BOB API.'));
|
|
504
|
-
}
|
|
505
|
-
catch (error) {
|
|
506
|
-
reject(error);
|
|
507
|
-
}
|
|
508
475
|
}
|
|
509
476
|
else {
|
|
510
477
|
const decodedString = decompressedBuffer.toString('utf-8');
|
|
@@ -531,36 +498,33 @@ let BOBService = class BOBService {
|
|
|
531
498
|
return false;
|
|
532
499
|
}
|
|
533
500
|
if (data.ErrorCode != 100) {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
errorDescription: data.ErrorDescription,
|
|
539
|
-
},
|
|
501
|
+
console.error(`Error in BOB getTransferStatus: ${data.ErrorDescription}`);
|
|
502
|
+
throw new server_1.TRPCError({
|
|
503
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
504
|
+
message: 'Failed to post data to BOB API.',
|
|
540
505
|
});
|
|
541
|
-
throw (0, error_common_1.internalServerError)('Failed to post data to BOB API.');
|
|
542
506
|
}
|
|
543
507
|
const responseObject = await this.decompressResponse(data.Response);
|
|
544
508
|
if (!responseObject) {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
},
|
|
509
|
+
console.error('Failed to get settlement status in BOB');
|
|
510
|
+
throw new server_1.TRPCError({
|
|
511
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
512
|
+
message: 'Failed to get settlement status in BOB.',
|
|
550
513
|
});
|
|
551
|
-
throw (0, error_common_1.internalServerError)('Failed to get settlement status in BOB.');
|
|
552
514
|
}
|
|
553
515
|
const hasUnpaidTransfer = responseObject.some((item) => item.CRMNumber == crmNumber && item.Status == BOBTransferStatus.NOT_PAID);
|
|
554
516
|
return hasUnpaidTransfer;
|
|
555
517
|
}
|
|
556
518
|
async checkAllPendingTransfers() {
|
|
519
|
+
const logger = (0, __1.getLibraries)().getLoggerKit();
|
|
520
|
+
logger.info('Checking pending BOB settlements', { tag: enum_1.LogTag.BOB_TRANSACTION_CHECK });
|
|
557
521
|
const notPaidSettlements = await this.model.find({
|
|
558
522
|
status: enum_1.BobSettlementStatus.NOT_PAID,
|
|
559
523
|
});
|
|
560
524
|
if (!notPaidSettlements.length) {
|
|
561
525
|
return;
|
|
562
526
|
}
|
|
563
|
-
|
|
527
|
+
logger.info('Checking pending settlements', {
|
|
564
528
|
tag: enum_1.LogTag.BOB_TRANSACTION_CHECK,
|
|
565
529
|
data: {
|
|
566
530
|
count: notPaidSettlements.length,
|
|
@@ -580,11 +544,11 @@ let BOBService = class BOBService {
|
|
|
580
544
|
startDate: minDateMinusOneDay,
|
|
581
545
|
endDate: maxDatePlusOneDay,
|
|
582
546
|
});
|
|
583
|
-
|
|
547
|
+
logger.info('Transactions on BOB', {
|
|
584
548
|
tag: enum_1.LogTag.BOB_TRANSACTION_CHECK,
|
|
585
549
|
data: {
|
|
586
550
|
count: transfers.length,
|
|
587
|
-
transfers
|
|
551
|
+
transfers,
|
|
588
552
|
startDate: minDateMinusOneDay,
|
|
589
553
|
endDate: maxDatePlusOneDay,
|
|
590
554
|
},
|
|
@@ -596,19 +560,25 @@ let BOBService = class BOBService {
|
|
|
596
560
|
for (const trx of transfers) {
|
|
597
561
|
transferStatusMap.set(trx.ReferenceNumber, trx.Status);
|
|
598
562
|
}
|
|
563
|
+
logger.info('Mapped transfer statuses', {
|
|
564
|
+
tag: enum_1.LogTag.BOB_TRANSACTION_CHECK,
|
|
565
|
+
data: {
|
|
566
|
+
transferStatusMap,
|
|
567
|
+
},
|
|
568
|
+
});
|
|
599
569
|
await Promise.all(notPaidSettlements.map(async (settlement) => {
|
|
600
570
|
try {
|
|
601
571
|
const status = transferStatusMap.get(settlement.crmNumber);
|
|
602
572
|
if (status == BOBTransferStatus.PAID) {
|
|
603
573
|
await this.settlePayment(settlement);
|
|
604
574
|
}
|
|
605
|
-
|
|
575
|
+
logger.info(`Settled payment for crmNumber ${settlement.crmNumber}`, {
|
|
606
576
|
tag: enum_1.LogTag.BOB_TRANSACTION_CHECK,
|
|
607
577
|
data: { status },
|
|
608
578
|
});
|
|
609
579
|
}
|
|
610
580
|
catch (err) {
|
|
611
|
-
|
|
581
|
+
logger.error(`Failed settlement with crmNumber ${settlement.crmNumber}, id: ${settlement._id}`, err, { tag: enum_1.LogTag.BOB_TRANSACTION_CHECK });
|
|
612
582
|
}
|
|
613
583
|
}));
|
|
614
584
|
}
|