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