Added Multi-Company Support
This commit is contained in:
@@ -18,12 +18,12 @@ router.get('/reports/catalog', (req, res) => {
|
||||
});
|
||||
|
||||
router.post('/reports/run', (req, res) => {
|
||||
res.json({ report: runReport(req.body.type, req.body.options || {}) });
|
||||
res.json({ report: runReport(req.body.type, { ...(req.body.options || {}), entity_id: req.companyId }) });
|
||||
});
|
||||
|
||||
router.post('/reports/export', async (req, res) => {
|
||||
const format = String(req.body.format || 'csv').toLowerCase();
|
||||
const report = runReport(req.body.type, req.body.options || {});
|
||||
const report = runReport(req.body.type, { ...(req.body.options || {}), entity_id: req.companyId });
|
||||
const output = await exportReport(report, format);
|
||||
const extension = EXPORT_EXTENSIONS[format] || 'txt';
|
||||
res.setHeader('Content-Type', output.contentType);
|
||||
@@ -34,15 +34,16 @@ router.post('/reports/export', async (req, res) => {
|
||||
router.get('/saved-reports', (req, res) => {
|
||||
const reports = all(
|
||||
`SELECT s.*, u.name AS created_by_name FROM saved_reports s
|
||||
LEFT JOIN users u ON u.id = s.created_by ORDER BY s.name`
|
||||
LEFT JOIN users u ON u.id = s.created_by WHERE s.entity_id = ? ORDER BY s.name`,
|
||||
[req.companyId]
|
||||
).map((row) => ({ ...row, options_json: parseJson(row.options_json, {}) }));
|
||||
res.json({ reports });
|
||||
});
|
||||
|
||||
router.post('/saved-reports', requireCapability('reports.save'), (req, res) => {
|
||||
const result = run(
|
||||
'INSERT INTO saved_reports (name, report_type, options_json, created_by, created_at) VALUES (?, ?, ?, ?, ?)',
|
||||
[req.body.name || 'Saved report', req.body.report_type, json(req.body.options || {}), req.user.id, now()]
|
||||
'INSERT INTO saved_reports (entity_id, name, report_type, options_json, created_by, created_at) VALUES (?, ?, ?, ?, ?, ?)',
|
||||
[req.companyId, req.body.name || 'Saved report', req.body.report_type, json(req.body.options || {}), req.user.id, now()]
|
||||
);
|
||||
audit(req.user.id, 'create', 'saved_report', result.lastInsertRowid, null, req.body);
|
||||
const saved = one('SELECT * FROM saved_reports WHERE id = ?', [result.lastInsertRowid]);
|
||||
@@ -50,7 +51,7 @@ router.post('/saved-reports', requireCapability('reports.save'), (req, res) => {
|
||||
});
|
||||
|
||||
router.delete('/saved-reports/:id', requireCapability('reports.save'), (req, res) => {
|
||||
const result = run('DELETE FROM saved_reports WHERE id = ?', [req.params.id]);
|
||||
const result = run('DELETE FROM saved_reports WHERE id = ? AND entity_id = ?', [req.params.id, req.companyId]);
|
||||
if (!result.changes) return res.status(404).json({ error: 'Saved report not found' });
|
||||
audit(req.user.id, 'delete', 'saved_report', req.params.id, null, null);
|
||||
return res.status(204).end();
|
||||
@@ -59,19 +60,19 @@ router.delete('/saved-reports/:id', requireCapability('reports.save'), (req, res
|
||||
router.get('/reports/depreciation', (req, res) => {
|
||||
const year = Number(req.query.year || new Date().getFullYear());
|
||||
const bookType = req.query.book || 'GAAP';
|
||||
res.json(depreciationReport(year, bookType));
|
||||
res.json(depreciationReport(year, bookType, req.companyId));
|
||||
});
|
||||
|
||||
router.get('/reports/monthly-depreciation', (req, res) => {
|
||||
const year = Number(req.query.year || new Date().getFullYear());
|
||||
const bookType = req.query.book || 'GAAP';
|
||||
res.json(monthlyDepreciationReport(year, bookType));
|
||||
res.json(monthlyDepreciationReport(year, bookType, req.companyId));
|
||||
});
|
||||
|
||||
router.get('/reports/depreciation.pdf', (req, res) => {
|
||||
const year = Number(req.query.year || new Date().getFullYear());
|
||||
const book = req.query.book || 'GAAP';
|
||||
writeDepreciationPdf(res, year, book);
|
||||
writeDepreciationPdf(res, year, book, req.companyId);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user