Pub 225 Compliance
This commit is contained in:
@@ -3,6 +3,7 @@ const { requireCapability } = require('../middleware/auth');
|
||||
const {
|
||||
deleteAdjustment,
|
||||
previewDisposal,
|
||||
previewSection280fRecapture,
|
||||
recordAdjustment,
|
||||
recordDisposal,
|
||||
reverseDisposal
|
||||
@@ -16,6 +17,13 @@ router.post('/assets/:id/disposal/preview', (req, res) => {
|
||||
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' });
|
||||
|
||||
@@ -7,6 +7,7 @@ const assetClasses = require('../services/assetClasses');
|
||||
const zones = require('../services/zones');
|
||||
const section179Limits = require('../services/section179Limits');
|
||||
const section280fLimits = require('../services/section280fLimits');
|
||||
const shortTaxYear = require('../services/shortTaxYear');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@@ -96,6 +97,24 @@ router.delete('/section-280f-limits/:year', requireCapability('config.manage'),
|
||||
return res.status(204).end();
|
||||
});
|
||||
|
||||
// Short tax years (per company) — prorate that year's MACRS depreciation.
|
||||
router.get('/short-tax-years', (req, res) => {
|
||||
res.json({ years: shortTaxYear.list(req.companyId) });
|
||||
});
|
||||
|
||||
router.post('/short-tax-years', requireCapability('config.manage'), (req, res, next) => {
|
||||
try {
|
||||
res.status(201).json({ year: shortTaxYear.save(req.companyId, req.body, req.user.id) });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
|
||||
router.delete('/short-tax-years/:year', requireCapability('config.manage'), (req, res) => {
|
||||
if (!shortTaxYear.remove(req.companyId, req.params.year, req.user.id)) return res.status(404).json({ error: 'Not found' });
|
||||
return res.status(204).end();
|
||||
});
|
||||
|
||||
// Asset class catalog (seeded from the IRS tables, then user-managed). GET is reference
|
||||
// data used by the category picker; mutations require config.manage.
|
||||
router.get('/asset-classes', (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user