Nick
04/27/2021, 6:59 PMfunction saveCreditCard(scriptContext, cpCache, ccinfo) {
try {
var response = '';
var paymentInstruments = runtime.isFeatureInEffect({'feature': 'PAYMENTINSTRUMENTS'});
if (ccinfo) {
var creditCardInfo = JSON.parse(ccinfo);
var ccnumber = creditCardInfo.ccnumber;
var cctype = creditCardInfo.cctype;
var ccexpiremonth = creditCardInfo.ccexpiremonth;
var ccexpireyear = creditCardInfo.ccexpireyear;
var ccname = creditCardInfo.ccname;
var expiredate = new Date(''+ccexpiremonth+'/1/'+ccexpireyear+'');
} else {
var ccnumber = scriptContext.request.parameters.ccnumber;
var cctype = scriptContext.request.parameters.cctype;
var ccexpiremonth = scriptContext.request.parameters.ccexpiremonth;
var ccexpireyear = scriptContext.request.parameters.ccexpireyear;
var ccname = scriptContext.request.parameters.ccname;
var expiredate = new Date(''+ccexpiremonth+'/1/'+ccexpireyear+'');
}
switch (runtime.isFeatureInEffect({'feature': 'PAYMENTINSTRUMENTS'})) {
case true:
var paymentcard = record.create({
type: record.Type.PAYMENT_CARD,
isDynamic: true
});
paymentcard.setValue({'fieldId': 'paymentmethod', 'value': cctype});
paymentcard.setValue({'fieldId': 'entity', 'value': cpCache.companyid});
paymentcard.setValue({'fieldId': 'preserveonfile', 'value': true});
paymentcard.setValue({'fieldId': 'cardnumber', 'value': ccnumber});
paymentcard.setValue({'fieldId': 'expirationdate', 'value': expiredate});
paymentcard.setValue({'fieldId': 'nameoncard', 'value': ccname});
paymentcard.setValue({'fieldId': 'cardbrand', 'value': cctype});
paymentcard.setValue({'fieldId': 'memo', 'value': scriptContext.request.parameters.nickname});
var recordId = paymentcard.save({
enableSourcing: true,
ignoreMandatoryFields: true
});
break;
case false:
var objRecord = record.load({
type: 'customer',
id: cpCache.companyid,
isDynamic: false,
});
var lineNum = objRecord.selectNewLine({
sublistId: 'creditcards'
});
objRecord.setCurrentSublistValue({
sublistId: 'creditcards',
fieldId: 'ccnumber',
value: ccnumber,
ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
sublistId: 'creditcards',
fieldId: 'paymentmethod',
value: cctype,
ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
sublistId: 'creditcards',
fieldId: 'ccname',
value: ccname,
ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
sublistId: 'creditcards',
fieldId: 'ccexpiredate',
value: expiredate,
ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
sublistId: 'creditcards',
fieldId: 'memo',
value: scriptContext.request.parameters.nickname,
ignoreFieldChange: true
});
objRecord.commitLine({
sublistId: 'creditcards'
});
var recordId = objRecord.save({
ignoreMandatoryFields: true
});
break;
}
response = recordId;
} catch (ex) {
log.error({'title':'saveCreditCard', 'details': ex.message || ex});
}
return JSON.stringify(response);
}