@eleva-io/erp-sdk
Version:
SDK oficial para el ERP de Eleva
77 lines • 3.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validatePaymentMethod = validatePaymentMethod;
const errors_1 = require("../../../errors");
const types_1 = require("../bank-account/types");
const aba_1 = require("../bank-account/validations/bank_account/aba");
const clabe_1 = require("../bank-account/validations/bank_account/clabe");
const iban_1 = require("../bank-account/validations/bank_account/iban");
const swift_1 = require("../bank-account/validations/bank_account/swift");
async function validatePaymentMethod(req) {
const swiftCountryCode = req.swiftBic ? (0, swift_1.getSwiftCountry)(req.swiftBic) : undefined;
switch (req.type) {
case types_1.GlobalBankAccountType.ABA: {
if (!req.routingNumber) {
throw errors_1.ElevaError.invalidField({
error: {
validation: 'routingNumber',
code: 'invalid_string',
message: 'Routing number is required',
path: ['routingNumber'],
},
message: 'failed to validate ABA bank account',
});
}
(0, aba_1.validateAccountNumberABA)(req.accountNumber, 'accountNumber');
(0, aba_1.validateRoutingNumberABA)(req.routingNumber, 'routingNumber');
if (swiftCountryCode !== 'US') {
throw errors_1.ElevaError.invalidField({
error: {
validation: 'swiftBic',
code: 'invalid_string',
message: 'Invalid Swift BIC',
path: ['swiftBic'],
},
message: 'failed to validate ABA bank account',
});
}
break;
}
case types_1.GlobalBankAccountType.CLABE: {
(0, clabe_1.validateAccountNumberCLABE)(req.accountNumber, 'accountNumber');
if (swiftCountryCode !== 'MX') {
throw errors_1.ElevaError.invalidField({
error: {
validation: 'swiftBic',
code: 'invalid_string',
message: 'Invalid Swift BIC',
path: ['swiftBic'],
},
message: 'failed to validate CLABE bank account',
});
}
break;
}
case types_1.GlobalBankAccountType.IBAN: {
(0, iban_1.validateAccountNumberIBAN)(req.accountNumber, 'accountNumber');
const ibanCountryCode = (0, iban_1.getIBANCountryCode)(req.accountNumber);
if ((req.swiftBic || ibanCountryCode !== 'ES') &&
(!swiftCountryCode || !iban_1.IBAN_COUNTRY_CODES.includes(swiftCountryCode) || swiftCountryCode !== ibanCountryCode)) {
throw errors_1.ElevaError.invalidField({
error: {
validation: 'swiftBic',
code: 'invalid_string',
message: 'Invalid Swift BIC',
path: ['swiftBic'],
},
message: 'failed to validate IBAN bank account',
});
}
break;
}
}
if (req.swiftBic) {
(0, swift_1.validateCodeSwiftBic)(req.swiftBic, 'swiftBic');
}
}
//# sourceMappingURL=payment_method.js.map