Pub 946 Compliance

This commit is contained in:
2026-06-10 02:09:25 -05:00
parent 7a54d1a386
commit 221ccb7826
18 changed files with 863 additions and 19 deletions

View File

@@ -6,6 +6,7 @@ const companies = require('../services/companies');
const assetClasses = require('../services/assetClasses');
const zones = require('../services/zones');
const section179Limits = require('../services/section179Limits');
const section280fLimits = require('../services/section280fLimits');
const router = express.Router();
@@ -67,6 +68,34 @@ router.delete('/section-179-limits/:year', requireCapability('config.manage'), (
return res.status(204).end();
});
// §280F passenger-automobile depreciation caps (indexed yearly; user-managed).
router.get('/section-280f-limits', (req, res) => {
res.json({ limits: section280fLimits.list() });
});
router.post('/section-280f-limits', requireCapability('config.manage'), (req, res, next) => {
try {
res.status(201).json({ limit: section280fLimits.createLimit(req.body, req.user.id) });
} catch (error) {
next(error);
}
});
router.put('/section-280f-limits/:year', requireCapability('config.manage'), (req, res, next) => {
try {
const limit = section280fLimits.updateLimit(req.params.year, req.body, req.user.id);
if (!limit) return res.status(404).json({ error: 'Limit not found' });
return res.json({ limit });
} catch (error) {
return next(error);
}
});
router.delete('/section-280f-limits/:year', requireCapability('config.manage'), (req, res) => {
if (!section280fLimits.deleteLimit(req.params.year, req.user.id)) return res.status(404).json({ error: 'Limit 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) => {