53 lines
2.1 KiB
JavaScript
53 lines
2.1 KiB
JavaScript
const express = require('express');
|
|
const { requireCapability } = require('../middleware/auth');
|
|
const {
|
|
deleteAdjustment,
|
|
previewDisposal,
|
|
previewSection280fRecapture,
|
|
recordAdjustment,
|
|
recordDisposal,
|
|
reverseDisposal
|
|
} = require('../services/disposals');
|
|
|
|
const router = express.Router();
|
|
|
|
router.post('/assets/:id/disposal/preview', (req, res) => {
|
|
const preview = previewDisposal(req.params.id, req.body);
|
|
if (!preview) return res.status(404).json({ error: 'Asset not found' });
|
|
return res.json({ preview });
|
|
});
|
|
|
|
// §280F recapture preview if this listed/passenger asset's business use drops to ≤50% in the given year.
|
|
router.get('/assets/:id/section-280f-recapture', (req, res) => {
|
|
const result = previewSection280fRecapture(req.params.id, { book: req.query.book, year: req.query.year });
|
|
if (!result) return res.status(404).json({ error: 'Asset not found' });
|
|
return res.json({ recapture: result });
|
|
});
|
|
|
|
router.post('/assets/:id/disposals', requireCapability('finance.manage'), (req, res) => {
|
|
const result = recordDisposal(req.params.id, req.body, req.user.id);
|
|
if (!result) return res.status(404).json({ error: 'Asset not found' });
|
|
return res.status(201).json(result);
|
|
});
|
|
|
|
router.delete('/assets/:id/disposals/:disposalId', requireCapability('finance.manage'), (req, res) => {
|
|
const asset = reverseDisposal(req.params.id, req.params.disposalId, req.user.id);
|
|
if (!asset) return res.status(404).json({ error: 'Disposal not found' });
|
|
return res.json({ asset });
|
|
});
|
|
|
|
router.post('/assets/:id/adjustments', requireCapability('finance.manage'), (req, res) => {
|
|
const adjustment = recordAdjustment(req.params.id, req.body, req.user.id);
|
|
if (!adjustment) return res.status(404).json({ error: 'Asset not found' });
|
|
return res.status(201).json({ adjustment });
|
|
});
|
|
|
|
router.delete('/assets/:id/adjustments/:adjustmentId', requireCapability('finance.manage'), (req, res) => {
|
|
if (!deleteAdjustment(req.params.id, req.params.adjustmentId, req.user.id)) {
|
|
return res.status(404).json({ error: 'Adjustment not found' });
|
|
}
|
|
return res.status(204).end();
|
|
});
|
|
|
|
module.exports = router;
|