@develit-services/bank 5.0.1 → 5.2.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/dist/base.cjs +242 -176
- package/dist/base.d.cts +32 -1
- package/dist/base.d.mts +32 -1
- package/dist/base.d.ts +32 -1
- package/dist/base.mjs +140 -74
- package/dist/export/workflows.cjs +202 -127
- package/dist/export/workflows.mjs +194 -119
- package/dist/shared/{bank.BdTj54NO.mjs → bank.BRD2WfnT.mjs} +1 -1
- package/dist/shared/{bank.CibQRM2D.cjs → bank.Bgz1SSIP.cjs} +16 -16
- package/dist/shared/{bank.BSX82jhx.cjs → bank.BkctD4hR.cjs} +369 -329
- package/dist/shared/{bank.CZ8MQDPa.mjs → bank.Bkxo76q4.mjs} +369 -330
- package/dist/types.cjs +36 -36
- package/dist/types.mjs +1 -1
- package/package.json +1 -1
package/dist/base.d.cts
CHANGED
|
@@ -2691,9 +2691,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
|
|
|
2691
2691
|
limit: z.ZodNumber;
|
|
2692
2692
|
sort: z.ZodObject<{
|
|
2693
2693
|
column: z.ZodEnum<{
|
|
2694
|
-
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2695
2694
|
createdAt: "createdAt";
|
|
2696
2695
|
updatedAt: "updatedAt";
|
|
2696
|
+
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2697
2697
|
}>;
|
|
2698
2698
|
direction: z.ZodEnum<{
|
|
2699
2699
|
asc: "asc";
|
|
@@ -2994,6 +2994,30 @@ type GetPaymentsOutput = {
|
|
|
2994
2994
|
totalCount: number;
|
|
2995
2995
|
};
|
|
2996
2996
|
|
|
2997
|
+
declare const getPaymentsByRequestIdsInputSchema: z.ZodObject<{
|
|
2998
|
+
paymentRequestIds: z.ZodArray<z.ZodString>;
|
|
2999
|
+
}, z.core.$strip>;
|
|
3000
|
+
interface GetPaymentsByRequestIdsInput extends z.infer<typeof getPaymentsByRequestIdsInputSchema> {
|
|
3001
|
+
}
|
|
3002
|
+
interface GetPaymentsByRequestIdsOutput {
|
|
3003
|
+
payments: Array<{
|
|
3004
|
+
paymentRequestId: string;
|
|
3005
|
+
payment: {
|
|
3006
|
+
id: string;
|
|
3007
|
+
correlationId: string;
|
|
3008
|
+
status: string;
|
|
3009
|
+
amount: number;
|
|
3010
|
+
currency: string;
|
|
3011
|
+
creditor: {
|
|
3012
|
+
iban?: string;
|
|
3013
|
+
holderName?: string;
|
|
3014
|
+
};
|
|
3015
|
+
createdAt: number;
|
|
3016
|
+
updatedAt?: number;
|
|
3017
|
+
} | null;
|
|
3018
|
+
}>;
|
|
3019
|
+
}
|
|
3020
|
+
|
|
2997
3021
|
declare const syncAccountInputSchema: z.ZodObject<{
|
|
2998
3022
|
accountId: z.ZodUUID;
|
|
2999
3023
|
}, z.core.$strip>;
|
|
@@ -3858,6 +3882,13 @@ declare class BankServiceBase extends BankServiceBase_base {
|
|
|
3858
3882
|
iban?: string | null;
|
|
3859
3883
|
}): void;
|
|
3860
3884
|
getPayments(input: GetPaymentsInput): Promise<IRPCResponse<GetPaymentsOutput>>;
|
|
3885
|
+
/**
|
|
3886
|
+
* Get payments by payment request IDs (batch query for sweep history)
|
|
3887
|
+
*
|
|
3888
|
+
* @connector DBU - Fully supported
|
|
3889
|
+
* @connector FIO - Not yet implemented (will return empty for FIO payments)
|
|
3890
|
+
*/
|
|
3891
|
+
getPaymentsByRequestIds(input: GetPaymentsByRequestIdsInput): Promise<IRPCResponse<GetPaymentsByRequestIdsOutput>>;
|
|
3861
3892
|
syncAccount(input: SyncAccountInput): Promise<IRPCResponse<SyncAccountOutput>>;
|
|
3862
3893
|
syncAccountStatus(input: SyncAccountStatusInput): Promise<IRPCResponse<SyncAccountStatusOutput>>;
|
|
3863
3894
|
syncAccountRestart(input: SyncAccountRestartInput): Promise<IRPCResponse<SyncAccountRestartOutput>>;
|
package/dist/base.d.mts
CHANGED
|
@@ -2691,9 +2691,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
|
|
|
2691
2691
|
limit: z.ZodNumber;
|
|
2692
2692
|
sort: z.ZodObject<{
|
|
2693
2693
|
column: z.ZodEnum<{
|
|
2694
|
-
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2695
2694
|
createdAt: "createdAt";
|
|
2696
2695
|
updatedAt: "updatedAt";
|
|
2696
|
+
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2697
2697
|
}>;
|
|
2698
2698
|
direction: z.ZodEnum<{
|
|
2699
2699
|
asc: "asc";
|
|
@@ -2994,6 +2994,30 @@ type GetPaymentsOutput = {
|
|
|
2994
2994
|
totalCount: number;
|
|
2995
2995
|
};
|
|
2996
2996
|
|
|
2997
|
+
declare const getPaymentsByRequestIdsInputSchema: z.ZodObject<{
|
|
2998
|
+
paymentRequestIds: z.ZodArray<z.ZodString>;
|
|
2999
|
+
}, z.core.$strip>;
|
|
3000
|
+
interface GetPaymentsByRequestIdsInput extends z.infer<typeof getPaymentsByRequestIdsInputSchema> {
|
|
3001
|
+
}
|
|
3002
|
+
interface GetPaymentsByRequestIdsOutput {
|
|
3003
|
+
payments: Array<{
|
|
3004
|
+
paymentRequestId: string;
|
|
3005
|
+
payment: {
|
|
3006
|
+
id: string;
|
|
3007
|
+
correlationId: string;
|
|
3008
|
+
status: string;
|
|
3009
|
+
amount: number;
|
|
3010
|
+
currency: string;
|
|
3011
|
+
creditor: {
|
|
3012
|
+
iban?: string;
|
|
3013
|
+
holderName?: string;
|
|
3014
|
+
};
|
|
3015
|
+
createdAt: number;
|
|
3016
|
+
updatedAt?: number;
|
|
3017
|
+
} | null;
|
|
3018
|
+
}>;
|
|
3019
|
+
}
|
|
3020
|
+
|
|
2997
3021
|
declare const syncAccountInputSchema: z.ZodObject<{
|
|
2998
3022
|
accountId: z.ZodUUID;
|
|
2999
3023
|
}, z.core.$strip>;
|
|
@@ -3858,6 +3882,13 @@ declare class BankServiceBase extends BankServiceBase_base {
|
|
|
3858
3882
|
iban?: string | null;
|
|
3859
3883
|
}): void;
|
|
3860
3884
|
getPayments(input: GetPaymentsInput): Promise<IRPCResponse<GetPaymentsOutput>>;
|
|
3885
|
+
/**
|
|
3886
|
+
* Get payments by payment request IDs (batch query for sweep history)
|
|
3887
|
+
*
|
|
3888
|
+
* @connector DBU - Fully supported
|
|
3889
|
+
* @connector FIO - Not yet implemented (will return empty for FIO payments)
|
|
3890
|
+
*/
|
|
3891
|
+
getPaymentsByRequestIds(input: GetPaymentsByRequestIdsInput): Promise<IRPCResponse<GetPaymentsByRequestIdsOutput>>;
|
|
3861
3892
|
syncAccount(input: SyncAccountInput): Promise<IRPCResponse<SyncAccountOutput>>;
|
|
3862
3893
|
syncAccountStatus(input: SyncAccountStatusInput): Promise<IRPCResponse<SyncAccountStatusOutput>>;
|
|
3863
3894
|
syncAccountRestart(input: SyncAccountRestartInput): Promise<IRPCResponse<SyncAccountRestartOutput>>;
|
package/dist/base.d.ts
CHANGED
|
@@ -2691,9 +2691,9 @@ declare const getBatchesInputSchema: z.ZodObject<{
|
|
|
2691
2691
|
limit: z.ZodNumber;
|
|
2692
2692
|
sort: z.ZodObject<{
|
|
2693
2693
|
column: z.ZodEnum<{
|
|
2694
|
-
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2695
2694
|
createdAt: "createdAt";
|
|
2696
2695
|
updatedAt: "updatedAt";
|
|
2696
|
+
batchPaymentInitiatedAt: "batchPaymentInitiatedAt";
|
|
2697
2697
|
}>;
|
|
2698
2698
|
direction: z.ZodEnum<{
|
|
2699
2699
|
asc: "asc";
|
|
@@ -2994,6 +2994,30 @@ type GetPaymentsOutput = {
|
|
|
2994
2994
|
totalCount: number;
|
|
2995
2995
|
};
|
|
2996
2996
|
|
|
2997
|
+
declare const getPaymentsByRequestIdsInputSchema: z.ZodObject<{
|
|
2998
|
+
paymentRequestIds: z.ZodArray<z.ZodString>;
|
|
2999
|
+
}, z.core.$strip>;
|
|
3000
|
+
interface GetPaymentsByRequestIdsInput extends z.infer<typeof getPaymentsByRequestIdsInputSchema> {
|
|
3001
|
+
}
|
|
3002
|
+
interface GetPaymentsByRequestIdsOutput {
|
|
3003
|
+
payments: Array<{
|
|
3004
|
+
paymentRequestId: string;
|
|
3005
|
+
payment: {
|
|
3006
|
+
id: string;
|
|
3007
|
+
correlationId: string;
|
|
3008
|
+
status: string;
|
|
3009
|
+
amount: number;
|
|
3010
|
+
currency: string;
|
|
3011
|
+
creditor: {
|
|
3012
|
+
iban?: string;
|
|
3013
|
+
holderName?: string;
|
|
3014
|
+
};
|
|
3015
|
+
createdAt: number;
|
|
3016
|
+
updatedAt?: number;
|
|
3017
|
+
} | null;
|
|
3018
|
+
}>;
|
|
3019
|
+
}
|
|
3020
|
+
|
|
2997
3021
|
declare const syncAccountInputSchema: z.ZodObject<{
|
|
2998
3022
|
accountId: z.ZodUUID;
|
|
2999
3023
|
}, z.core.$strip>;
|
|
@@ -3858,6 +3882,13 @@ declare class BankServiceBase extends BankServiceBase_base {
|
|
|
3858
3882
|
iban?: string | null;
|
|
3859
3883
|
}): void;
|
|
3860
3884
|
getPayments(input: GetPaymentsInput): Promise<IRPCResponse<GetPaymentsOutput>>;
|
|
3885
|
+
/**
|
|
3886
|
+
* Get payments by payment request IDs (batch query for sweep history)
|
|
3887
|
+
*
|
|
3888
|
+
* @connector DBU - Fully supported
|
|
3889
|
+
* @connector FIO - Not yet implemented (will return empty for FIO payments)
|
|
3890
|
+
*/
|
|
3891
|
+
getPaymentsByRequestIds(input: GetPaymentsByRequestIdsInput): Promise<IRPCResponse<GetPaymentsByRequestIdsOutput>>;
|
|
3861
3892
|
syncAccount(input: SyncAccountInput): Promise<IRPCResponse<SyncAccountOutput>>;
|
|
3862
3893
|
syncAccountStatus(input: SyncAccountStatusInput): Promise<IRPCResponse<SyncAccountStatusOutput>>;
|
|
3863
3894
|
syncAccountRestart(input: SyncAccountRestartInput): Promise<IRPCResponse<SyncAccountRestartOutput>>;
|
package/dist/base.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { G as tables, g as accountInsertSchema, H as relations, J as initiateConnector, o as isProcessedStatus, p as isTerminalStatus, L as getNonTerminalPaymentRequestsQuery, x as toIncomingPayment, j as assignAccount, u as toBatchedPayment, y as toPaymentRequestInsert, a as FinbricksClient, F as FINBRICKS_ENDPOINTS } from './shared/bank.
|
|
1
|
+
import { uuidv4, first, buildMultiFilterConditions as buildMultiFilterConditions$1, bankAccountMetadataSchema, structuredAddressSchema, workflowInstanceStatusSchema, develitWorker, createInternalError, action, service } from '@develit-io/backend-sdk';
|
|
2
|
+
import { G as tables, g as accountInsertSchema, H as relations, J as initiateConnector, o as isProcessedStatus, p as isTerminalStatus, L as getNonTerminalPaymentRequestsQuery, x as toIncomingPayment, N as calculateCzechIban, j as assignAccount, u as toBatchedPayment, y as toPaymentRequestInsert, a as FinbricksClient, F as FINBRICKS_ENDPOINTS } from './shared/bank.Bkxo76q4.mjs';
|
|
3
3
|
import { eq, sql, and, like, asc, desc, inArray, gte, lte, isNull, count } from 'drizzle-orm';
|
|
4
4
|
import { WorkerEntrypoint } from 'cloudflare:workers';
|
|
5
5
|
import { drizzle } from 'drizzle-orm/d1';
|
|
@@ -9,7 +9,7 @@ import { I as INSTRUCTION_PRIORITIES, C as CHARGE_BEARERS, g as PAYMENT_TYPES, b
|
|
|
9
9
|
import { CURRENCY_CODES } from '@develit-io/general-codes';
|
|
10
10
|
import 'date-fns';
|
|
11
11
|
import 'node:crypto';
|
|
12
|
-
import { h as encrypt, d as createCredentialsResolver, e as updatePaymentRequestStatusCommand, a as getPaymentRequestsByBatchIdQuery, g as getBatchByIdQuery, u as upsertBatchCommand, i as importAesKey, f as createPaymentCommand, b as getAccountByIdQuery } from './shared/bank.
|
|
12
|
+
import { h as encrypt, d as createCredentialsResolver, e as updatePaymentRequestStatusCommand, a as getPaymentRequestsByBatchIdQuery, g as getBatchByIdQuery, u as upsertBatchCommand, i as importAesKey, f as createPaymentCommand, b as getAccountByIdQuery } from './shared/bank.BRD2WfnT.mjs';
|
|
13
13
|
import 'drizzle-orm/zod';
|
|
14
14
|
import 'drizzle-orm/sqlite-core';
|
|
15
15
|
|
|
@@ -71,77 +71,6 @@ async function heartbeatSyncWorkflows({
|
|
|
71
71
|
);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
const sendPaymentInputSchema = z.object({
|
|
75
|
-
correlationId: z.string().min(1),
|
|
76
|
-
refId: z.string().optional(),
|
|
77
|
-
amount: z.number().positive(),
|
|
78
|
-
paymentType: z.enum(PAYMENT_TYPES),
|
|
79
|
-
chargeBearer: z.enum(CHARGE_BEARERS).optional(),
|
|
80
|
-
instructionPriority: z.enum(INSTRUCTION_PRIORITIES).optional(),
|
|
81
|
-
currency: z.enum(CURRENCY_CODES),
|
|
82
|
-
vs: z.string().optional(),
|
|
83
|
-
ss: z.string().optional(),
|
|
84
|
-
ks: z.string().optional(),
|
|
85
|
-
message: z.string().optional(),
|
|
86
|
-
creditor: bankAccountMetadataSchema,
|
|
87
|
-
debtor: bankAccountMetadataSchema,
|
|
88
|
-
sendAsSinglePayment: z.boolean().optional()
|
|
89
|
-
}).superRefine((data, ctx) => {
|
|
90
|
-
if (data.paymentType === "UNKNOWN") {
|
|
91
|
-
ctx.addIssue({
|
|
92
|
-
code: "custom",
|
|
93
|
-
message: "paymentType=UNKNOWN is not supported. Use DOMESTIC, SEPA, or SWIFT.",
|
|
94
|
-
path: ["paymentType"]
|
|
95
|
-
});
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
if (!data.debtor.iban) {
|
|
99
|
-
ctx.addIssue({
|
|
100
|
-
code: "custom",
|
|
101
|
-
message: "debtor.iban is required",
|
|
102
|
-
path: ["debtor", "iban"]
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
if (data.paymentType === "DOMESTIC" || data.paymentType === "SEPA") {
|
|
106
|
-
if (!data.creditor.iban) {
|
|
107
|
-
ctx.addIssue({
|
|
108
|
-
code: "custom",
|
|
109
|
-
message: `creditor.iban is required for ${data.paymentType} payments`,
|
|
110
|
-
path: ["creditor", "iban"]
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (data.paymentType === "SWIFT") {
|
|
116
|
-
const hasIban = !!data.creditor.iban;
|
|
117
|
-
const hasBban = !!data.creditor.number && !!(data.creditor.swiftBic ?? data.creditor.bicCor);
|
|
118
|
-
if (!hasIban && !hasBban) {
|
|
119
|
-
ctx.addIssue({
|
|
120
|
-
code: "custom",
|
|
121
|
-
message: "SWIFT creditor requires either iban OR (number + swiftBic/bicCor)",
|
|
122
|
-
path: ["creditor"]
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
const sendBatchInputSchema = z.object({
|
|
129
|
-
payments: z.array(sendPaymentInputSchema).min(1)
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
const getAuthUriInputSchema = z.object({
|
|
133
|
-
connectorKey: z.enum(CONNECTOR_KEYS)
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
const authorizeAccountInputSchema = z.object({
|
|
137
|
-
ott: z.string(),
|
|
138
|
-
urlParams: z.string(),
|
|
139
|
-
syncIntervalS: z.number().int().positive().optional(),
|
|
140
|
-
startSync: z.boolean().optional(),
|
|
141
|
-
lastSyncAt: z.date().optional(),
|
|
142
|
-
address: structuredAddressSchema.optional()
|
|
143
|
-
});
|
|
144
|
-
|
|
145
74
|
const upsertAccountCommand = (db, { account }) => {
|
|
146
75
|
const id = account.id || uuidv4();
|
|
147
76
|
const { id: _id, ...accountWithoutId } = account;
|
|
@@ -420,6 +349,42 @@ const getOttQuery = async (db, { ott }) => {
|
|
|
420
349
|
return await db.select().from(tables.ott).where(eq(tables.ott.oneTimeToken, ott)).get();
|
|
421
350
|
};
|
|
422
351
|
|
|
352
|
+
const CHUNK_SIZE = 90;
|
|
353
|
+
const getPaymentsByPaymentRequestIdsQuery = async (db, { paymentRequestIds }) => {
|
|
354
|
+
if (paymentRequestIds.length === 0) return [];
|
|
355
|
+
const paymentRequests = [];
|
|
356
|
+
for (let i = 0; i < paymentRequestIds.length; i += CHUNK_SIZE) {
|
|
357
|
+
const chunkIds = paymentRequestIds.slice(i, i + CHUNK_SIZE);
|
|
358
|
+
const rows = await db.select({
|
|
359
|
+
id: tables.paymentRequest.id,
|
|
360
|
+
correlationId: tables.paymentRequest.correlationId,
|
|
361
|
+
status: tables.paymentRequest.status,
|
|
362
|
+
amount: tables.paymentRequest.amount,
|
|
363
|
+
currency: tables.paymentRequest.currency,
|
|
364
|
+
creditor: tables.paymentRequest.creditor,
|
|
365
|
+
createdAt: tables.paymentRequest.createdAt,
|
|
366
|
+
updatedAt: tables.paymentRequest.updatedAt
|
|
367
|
+
}).from(tables.paymentRequest).where(inArray(tables.paymentRequest.id, chunkIds));
|
|
368
|
+
paymentRequests.push(...rows);
|
|
369
|
+
}
|
|
370
|
+
return paymentRequests.map((pr) => {
|
|
371
|
+
const creditor = typeof pr.creditor === "string" ? JSON.parse(pr.creditor) : pr.creditor || {};
|
|
372
|
+
return {
|
|
373
|
+
paymentRequestId: pr.id,
|
|
374
|
+
payment: {
|
|
375
|
+
id: pr.id,
|
|
376
|
+
correlationId: pr.correlationId,
|
|
377
|
+
status: pr.status,
|
|
378
|
+
amount: pr.amount,
|
|
379
|
+
currency: pr.currency,
|
|
380
|
+
creditor,
|
|
381
|
+
createdAt: pr.createdAt,
|
|
382
|
+
updatedAt: pr.updatedAt
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
});
|
|
386
|
+
};
|
|
387
|
+
|
|
423
388
|
const getPaymentRequestByIdQuery = async (db, { paymentRequestId }) => {
|
|
424
389
|
const result = await db.select().from(tables.paymentRequest).where(
|
|
425
390
|
and(
|
|
@@ -484,6 +449,79 @@ function buildPaymentRequestEvent(pr) {
|
|
|
484
449
|
};
|
|
485
450
|
}
|
|
486
451
|
|
|
452
|
+
const sendPaymentInputSchema = z.object({
|
|
453
|
+
correlationId: z.string().min(1),
|
|
454
|
+
refId: z.string().optional(),
|
|
455
|
+
amount: z.number().positive(),
|
|
456
|
+
paymentType: z.enum(PAYMENT_TYPES),
|
|
457
|
+
chargeBearer: z.enum(CHARGE_BEARERS).optional(),
|
|
458
|
+
instructionPriority: z.enum(INSTRUCTION_PRIORITIES).optional(),
|
|
459
|
+
currency: z.enum(CURRENCY_CODES),
|
|
460
|
+
vs: z.string().optional(),
|
|
461
|
+
ss: z.string().optional(),
|
|
462
|
+
ks: z.string().optional(),
|
|
463
|
+
message: z.string().optional(),
|
|
464
|
+
creditor: bankAccountMetadataSchema,
|
|
465
|
+
debtor: bankAccountMetadataSchema,
|
|
466
|
+
sendAsSinglePayment: z.boolean().optional()
|
|
467
|
+
}).superRefine((data, ctx) => {
|
|
468
|
+
if (data.paymentType === "UNKNOWN") {
|
|
469
|
+
ctx.addIssue({
|
|
470
|
+
code: "custom",
|
|
471
|
+
message: "paymentType=UNKNOWN is not supported. Use DOMESTIC, SEPA, or SWIFT.",
|
|
472
|
+
path: ["paymentType"]
|
|
473
|
+
});
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
if (!data.debtor.iban) {
|
|
477
|
+
ctx.addIssue({
|
|
478
|
+
code: "custom",
|
|
479
|
+
message: "debtor.iban is required",
|
|
480
|
+
path: ["debtor", "iban"]
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
if (data.paymentType === "DOMESTIC" || data.paymentType === "SEPA") {
|
|
484
|
+
const hasIban = !!data.creditor.iban;
|
|
485
|
+
const hasAccountNumber = !!data.creditor.number && !!data.creditor.bankCode;
|
|
486
|
+
if (!hasIban && !hasAccountNumber) {
|
|
487
|
+
ctx.addIssue({
|
|
488
|
+
code: "custom",
|
|
489
|
+
message: `creditor must have either iban OR (number + bankCode) for ${data.paymentType} payments`,
|
|
490
|
+
path: ["creditor"]
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
495
|
+
if (data.paymentType === "SWIFT") {
|
|
496
|
+
const hasIban = !!data.creditor.iban;
|
|
497
|
+
const hasBban = !!data.creditor.number && !!(data.creditor.swiftBic ?? data.creditor.bicCor);
|
|
498
|
+
if (!hasIban && !hasBban) {
|
|
499
|
+
ctx.addIssue({
|
|
500
|
+
code: "custom",
|
|
501
|
+
message: "SWIFT creditor requires either iban OR (number + swiftBic/bicCor)",
|
|
502
|
+
path: ["creditor"]
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
const sendBatchInputSchema = z.object({
|
|
509
|
+
payments: z.array(sendPaymentInputSchema).min(1)
|
|
510
|
+
});
|
|
511
|
+
|
|
512
|
+
const getAuthUriInputSchema = z.object({
|
|
513
|
+
connectorKey: z.enum(CONNECTOR_KEYS)
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
const authorizeAccountInputSchema = z.object({
|
|
517
|
+
ott: z.string(),
|
|
518
|
+
urlParams: z.string(),
|
|
519
|
+
syncIntervalS: z.number().int().positive().optional(),
|
|
520
|
+
startSync: z.boolean().optional(),
|
|
521
|
+
lastSyncAt: z.date().optional(),
|
|
522
|
+
address: structuredAddressSchema.optional()
|
|
523
|
+
});
|
|
524
|
+
|
|
487
525
|
const simulateDepositInputSchema = z.object({
|
|
488
526
|
amount: z.number(),
|
|
489
527
|
currency: z.enum(CURRENCY_CODES),
|
|
@@ -583,6 +621,10 @@ const getPaymentsInputSchema = z.object({
|
|
|
583
621
|
[ALLOWED_PAYMENT_FILTERS.BANK_REF_ID]: z.string().optional()
|
|
584
622
|
});
|
|
585
623
|
|
|
624
|
+
const getPaymentsByRequestIdsInputSchema = z.object({
|
|
625
|
+
paymentRequestIds: z.array(z.string().uuid()).min(1, "At least one payment request ID is required").max(100, "Maximum 100 payment request IDs per request")
|
|
626
|
+
});
|
|
627
|
+
|
|
586
628
|
const syncAccountInputSchema = z.object({
|
|
587
629
|
accountId: z.uuid()
|
|
588
630
|
});
|
|
@@ -764,6 +806,18 @@ let BankServiceBase = class extends develitWorker(WorkerEntrypoint) {
|
|
|
764
806
|
}
|
|
765
807
|
);
|
|
766
808
|
}
|
|
809
|
+
async getPaymentsByRequestIds(input) {
|
|
810
|
+
return this.handleAction(
|
|
811
|
+
{ data: input, schema: getPaymentsByRequestIdsInputSchema },
|
|
812
|
+
{ successMessage: "Payments retrieved successfully" },
|
|
813
|
+
async (validated) => {
|
|
814
|
+
const payments = await getPaymentsByPaymentRequestIdsQuery(this.db, {
|
|
815
|
+
paymentRequestIds: validated.paymentRequestIds
|
|
816
|
+
});
|
|
817
|
+
return { payments };
|
|
818
|
+
}
|
|
819
|
+
);
|
|
820
|
+
}
|
|
767
821
|
async syncAccount(input) {
|
|
768
822
|
return this.handleAction(
|
|
769
823
|
{ data: input, schema: syncAccountInputSchema },
|
|
@@ -1445,6 +1499,15 @@ let BankServiceBase = class extends develitWorker(WorkerEntrypoint) {
|
|
|
1445
1499
|
data.currency,
|
|
1446
1500
|
data.creditor
|
|
1447
1501
|
);
|
|
1502
|
+
if (data.creditor.bankCode?.length === 4 && !data.creditor.iban && data.creditor.number) {
|
|
1503
|
+
try {
|
|
1504
|
+
data.creditor.iban = calculateCzechIban(
|
|
1505
|
+
data.creditor.number,
|
|
1506
|
+
data.creditor.bankCode
|
|
1507
|
+
);
|
|
1508
|
+
} catch (_error) {
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1448
1511
|
const { accounts } = await this._getAccounts({
|
|
1449
1512
|
filterIbans: [incomingPayment.debtorIban]
|
|
1450
1513
|
});
|
|
@@ -1996,6 +2059,9 @@ let BankServiceBase = class extends develitWorker(WorkerEntrypoint) {
|
|
|
1996
2059
|
__decorateClass([
|
|
1997
2060
|
action("get-payments")
|
|
1998
2061
|
], BankServiceBase.prototype, "getPayments", 1);
|
|
2062
|
+
__decorateClass([
|
|
2063
|
+
action("get-payments-by-request-ids")
|
|
2064
|
+
], BankServiceBase.prototype, "getPaymentsByRequestIds", 1);
|
|
1999
2065
|
__decorateClass([
|
|
2000
2066
|
action("sync-account")
|
|
2001
2067
|
], BankServiceBase.prototype, "syncAccount", 1);
|