UNPKG

omniacare

Version:

CHR OmniaCare API SDK for NodeJS

70 lines (66 loc) 2.32 kB
"use strict"; 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;