156 lines
4.2 KiB
JavaScript
156 lines
4.2 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { generalLedgerRepository } = require('../repositories');
|
|
|
|
/**
|
|
* GET /api/plugins/financials/ledger/general
|
|
* Get general ledger for all accounts with balances
|
|
* Query params: site_id (required), start_date, end_date
|
|
*/
|
|
router.get('/general', async (req, res) => {
|
|
try {
|
|
const { site_id, start_date, end_date } = req.query;
|
|
|
|
if (!site_id) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Missing required parameter: site_id'
|
|
});
|
|
}
|
|
|
|
const options = {};
|
|
if (start_date) options.startDate = start_date;
|
|
if (end_date) options.endDate = end_date;
|
|
|
|
const generalLedger = await generalLedgerRepository.getGeneralLedger(site_id, options);
|
|
|
|
res.json({
|
|
success: true,
|
|
data: generalLedger,
|
|
message: 'General ledger retrieved successfully'
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to get general ledger:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: 'Failed to retrieve general ledger',
|
|
message: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* GET /api/plugins/financials/ledger/account/:accountId
|
|
* Get ledger entries for a specific account with running balance
|
|
* Query params: site_id (required), start_date, end_date
|
|
*/
|
|
router.get('/account/:accountId', async (req, res) => {
|
|
try {
|
|
const { accountId } = req.params;
|
|
const { site_id, start_date, end_date } = req.query;
|
|
|
|
if (!site_id) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Missing required parameter: site_id'
|
|
});
|
|
}
|
|
|
|
const options = {};
|
|
if (start_date) options.startDate = start_date;
|
|
if (end_date) options.endDate = end_date;
|
|
|
|
const ledgerEntries = await generalLedgerRepository.getAccountLedger(accountId, site_id, options);
|
|
|
|
res.json({
|
|
success: true,
|
|
data: ledgerEntries,
|
|
message: 'Account ledger retrieved successfully'
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to get account ledger:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: 'Failed to retrieve account ledger',
|
|
message: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* GET /api/plugins/financials/ledger/account/:accountId/balance
|
|
* Get account balance summary
|
|
* Query params: site_id (required), start_date, end_date
|
|
*/
|
|
router.get('/account/:accountId/balance', async (req, res) => {
|
|
try {
|
|
const { accountId } = req.params;
|
|
const { site_id, start_date, end_date } = req.query;
|
|
|
|
if (!site_id) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Missing required parameter: site_id'
|
|
});
|
|
}
|
|
|
|
const options = {};
|
|
if (start_date) options.startDate = start_date;
|
|
if (end_date) options.endDate = end_date;
|
|
|
|
const balance = await generalLedgerRepository.getAccountBalance(accountId, site_id, options);
|
|
|
|
res.json({
|
|
success: true,
|
|
data: balance,
|
|
message: 'Account balance retrieved successfully'
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to get account balance:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: 'Failed to retrieve account balance',
|
|
message: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* GET /api/plugins/financials/ledger/trial-balance
|
|
* Get trial balance report
|
|
* Query params: site_id (required), start_date, end_date
|
|
*/
|
|
router.get('/trial-balance', async (req, res) => {
|
|
try {
|
|
const { site_id, start_date, end_date } = req.query;
|
|
|
|
if (!site_id) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Missing required parameter: site_id'
|
|
});
|
|
}
|
|
|
|
const options = {};
|
|
if (start_date) options.startDate = start_date;
|
|
if (end_date) options.endDate = end_date;
|
|
|
|
const trialBalance = await generalLedgerRepository.getTrialBalance(site_id, options);
|
|
|
|
res.json({
|
|
success: true,
|
|
data: trialBalance,
|
|
message: 'Trial balance retrieved successfully'
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to get trial balance:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: 'Failed to retrieve trial balance',
|
|
message: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|
|
|