omniacare
Version:
CHR OmniaCare API SDK for NodeJS
70 lines (66 loc) • 2.32 kB
JavaScript
;
var api = require('../api');
var _ = require('lodash'),
validator = require('node-validator'),
xml2js = require('xml2js');
function payment() {
return {
/**
* Create a payment
* @param {Object} params Payment creation parameters
* @param {number} params.AccountID Acccount identifier from AR Account
* @param {number} params.PaymentAmount Amount of payment
* @param {number} params.BatchID ID of the batch to which the payment will be posted
* @param {number} params.RemittanceClassID 2=Check; 3=Credit Card
* @param {number} params.AdjustmentCodeID Adjustment Code to assign to the payment
* @param {number} [params.CheckNumber] Check number
* @param {number} [params.RoutingNumber] Routing number
* @param {number} [params.BankAccount] Bank account number
* @param {number} [params.CheckStatus] Check status
* @param [string] [params.Remarks] Comments
* @return {object}
*/
create: function(params) {
var schema = validator.isObject()
.withRequired('AccountID')
.withRequired('PaymentAmount')
.withRequired('BatchID')
.withRequired('RemittanceClassID')
.withRequired('AdjustmentCodeID')
.withOptional('CheckNumber')
.withOptional('RoutingNumber')
.withOptional('BankAccount')
.withOptional('CheckStatus')
.withOptional('Remarks');
validator.run(schema, params, function(errCount, errors) {
if(errCount) {
_.forEach(errors, function(error) {
throw new Error(error.parameter + ': ' + error.value + ' is a(n) ' + error.message);
});
}
});
var defaultParams = {
'CheckNumber': '',
'RoutingNubmer': '',
'BankAccount': '',
'CheckStatus': '',
'Remarks': ''
};
var requestData = {
'ProcessCashPaymentsExt' :{
'sXml': {
'Payments': {
'Payment': [{
'$': _.assign({}, defaultParams, params)
}]
}
}
}
};
var xmlBuilder = new xml2js.Builder();
var postData = xmlBuilder.buildObject(requestData);
return api.executeHTTP('ProcessCashPaymentsExt', postData);
}
};
}
module.exports = payment;