@tomei/finance
Version:
NestJS package for finance module
349 lines (342 loc) • 9.08 kB
JavaScript
const dotenv = require('dotenv');
dotenv.config();
const defaultConfig = {
commonApiUrl: process.env.COMMON_API_URL,
accountingSystem: {
quickbooks: {
packageName: process.env.PACKAGE_NAME || '',
accountSystemClass: process.env.ACCOUNT_SYSTEM_CLASS || '',
apiUrl: process.env.API_URL || '',
},
xero: {
packageName: process.env.PACKAGE_NAME || '',
accountSystemClass: process.env.ACCOUNT_SYSTEM_CLASS || '',
apiUrl: process.env.API_URL || '',
},
},
financeCompanies: {
'TXG-FS': {
companyId: process.env.COMPANYID || 'TXG-FS',
companyName: process.env.COMPANYNAME || 'TXG Financial Solutions Sdn Bhd',
companySystemCode: process.env.COMPSYSTEMCODE || 'Tomei-SSO',
companySystemRefId: process.env.COMPSYSTEMREFID || '',
accountSystemCode: process.env.ACCSYSTEMCODE || '',
accountingSystem: 'quickbooks',
apiKey: process.env.QUICKBOOK_API_KEY,
redirectUrl: process.env.EZGOLD_REDIRECT_URL,
apiSecret: process.env.QUICKBOOK_API_SECRET,
paymentMethods: {
cash: {
id: 'CS',
name: 'Cash',
types: {
cash: {
id: 'CS-CASH',
name: 'Cash',
accountNo: 'CASH',
processingFeeRate: 0.0,
processingFeeAccountNo: 'CASH-FEE',
},
},
},
bankTransfer: {
id: 'BT',
name: 'Bank Transfer',
types: {
bankTransfer: {
id: 'BT-RHB',
name: 'RHB',
accountNo: '19GKBA20900-01',
processingFeeRate: 1.0,
processingFeeAccountNo: 'RHB-FEE',
},
},
},
debitCard: {
id: 'DC',
name: 'Debit Card',
types: {
mastercard: {
id: 'DC-MSC',
name: 'Mastercard',
accountNo: 'CURLEC',
processingFeeRate: 1.5,
processingFeeAccountNo: 'CURLEC-FEE',
},
visa: {
id: 'DC-VISA',
name: 'Visa',
accountNo: 'CURLEC',
processingFeeRate: 1.5,
processingFeeAccountNo: 'CURLEC-FEE',
},
},
},
creditCard: {
id: 'CC',
name: 'Credit Card',
types: {
mastercard: {
id: 'CC-MSC',
name: 'Mastercard',
accountNo: 'CURLEC',
processingFeeRate: 2.5,
processingFeeAccountNo: 'CURLEC-FEE',
},
visa: {
id: 'CC-VISA',
name: 'Visa',
accountNo: 'CURLEC',
processingFeeRate: 2.5,
processingFeeAccountNo: 'CURLEC-FEE',
},
amex: {
id: 'CC-AMEX',
name: 'American Express',
accountNo: 'CURLEC',
processingFeeRate: 3.5,
processingFeeAccountNo: 'CURLEC-FEE',
},
},
},
mandate: {
id: 'MD',
name: 'Mandate',
types: {
RHB: {
id: 'MD-RHB',
name: 'RHB Mandate',
accountNo: '19GKBA20900-01',
processingFeeRate: 1.0,
processingFeeAccountNo: 'RHB-FEE',
},
},
},
},
taxCode: {
'T00-1': {
taxCode: 'T-001',
taxRate: 6.0,
description: 'Sales Tax',
},
'T00-2': {
taxCode: 'T-002',
taxRate: 0.5,
description: 'Market Tax',
},
},
},
'TXG-B': {
companyId: 'TXG-B',
companyName: 'TXG Bullion Sdn Bhd',
companySystemCode: 'Tomei-SSO',
companySystemRefId: '',
accountingSystem: 'quickbooks',
accountSystemCode: '',
apiKey: '',
apiSecret: '',
redirectUrl: process.env.EZGOLD_REDIRECT_URL,
paymentMethods: {
cash: {
id: 'CS',
name: 'Cash',
types: {
cash: {
id: 'CS-CASH',
name: 'Cash',
accountno: '',
processingFeeRate: 0.0,
processingFeeAccountNo: '',
},
},
},
bankTransfer: {
id: 'BT',
name: 'Bank Transfer',
types: {
banktransfer: {
id: 'BT-RHB',
name: 'RHB',
accountno: '',
processingFeeRate: 1.0,
processingFeeAccountNo: '',
},
},
},
debitCard: {
id: 'DC',
name: 'Debit Card',
types: {
mastercard: {
id: 'DC-MSC',
name: 'Mastercard',
accountno: '',
processingFeeRate: 1.5,
processingFeeAccountNo: '',
},
visa: {
id: 'DC-VISA',
name: 'Visa',
accountno: '',
processingFeeRate: 1.5,
processingFeeAccountNo: '',
},
},
},
creditCard: {
id: 'CC',
name: 'Credit Card',
types: {
mastercard: {
id: 'CC-MSC',
name: 'Mastercard',
accountno: '',
processingFeeRate: 2.5,
processingFeeAccountNo: '',
},
visa: {
id: 'CC-VISA',
name: 'Visa',
accountno: '',
processingFeeRate: 2.5,
processingFeeAccountNo: '',
},
amex: {
id: 'CC-AMEX',
name: 'American Express',
accountno: '',
processingFeeRate: 3.5,
processingFeeAccountNo: '',
},
},
},
eWallet: {
id: 'EW',
name: 'E-Wallet',
types: {
touchngo: {
id: 'EW-T&G',
name: 'Touch & Go',
accountno: '',
processingFeeRate: 1.5,
processingFeeAccountNo: '',
},
Boost: {
id: 'EW-BOOST',
name: 'Boost',
accountno: '',
processingFeeRate: 2.5,
processingFeeAccountNo: '',
},
GrabPay: {
id: 'EW-GRAB',
name: 'GrabPay',
accountno: '',
processingFeeRate: 2.5,
processingFeeAccountNo: '',
},
ShopeePay: {
id: 'EW-SHOPEE',
name: 'ShopeePay',
accountno: '',
processingFeeRate: 2.5,
processingFeeAccountNo: '',
},
},
},
mandate: {
id: 'MD',
name: 'Mandate',
types: {
RHB: {
id: 'MD-RHB',
name: 'RHB Mandate',
accountno: '',
processingFeeRate: 1.0,
processingFeeAccountNo: '',
},
},
},
storeCredit: {
id: 'SC',
name: 'Store Credit',
types: {
scTomei: {
id: 'SC-TOMEI',
name: 'Tomei Store Credit',
accountno: '',
processingFeeRate: 0.0,
processingFeeAccountNo: '',
},
},
},
pointsRedemption: {
id: 'PR',
name: 'Points Redemption',
types: {
prTomei: {
id: 'PR-TOMEI',
name: 'Tomei Points Redemption',
accountno: '',
processingFeeRate: 0.0,
processingFeeAccountNo: '',
},
},
},
voucher: {
id: 'VC',
name: 'Voucher',
types: {
gift: {
id: 'VC-GF',
name: 'Gift Voucher',
accountno: '',
processingFeeRate: 0.0,
processingFeeAccountNo: '',
},
cash: {
id: 'VC-CS',
name: 'Cash Voucher',
accountno: '',
processingFeeRate: 0.0,
processingFeeAccountNo: '',
},
},
},
},
},
},
};
const config = {
development: {
environment: 'development',
...defaultConfig,
},
test: {
environment: 'test',
...defaultConfig,
},
staging: {
environment: 'staging',
...defaultConfig,
},
production: {
environment: 'production',
...defaultConfig,
},
};
const getConfig = () => {
switch (process.env.NODE_ENV) {
case 'development':
return config['development'];
case 'test':
return config['test'];
case 'staging':
return config['staging'];
case 'production':
return config['production'];
default:
break;
}
};
module.exports = () => getConfig();