CentralBackend/controller/tax/taxController.js
2025-12-06 11:14:55 +01:00

47 lines
1.5 KiB
JavaScript

const taxService = require('../../services/tax/taxService');
function resolveActorUserId(req) {
const raw = req.user?.id ?? req.user?.user_id ?? req.body?.userId ?? req.body?.user_id;
if (raw == null) return null;
const num = Number(raw);
return Number.isNaN(num) ? null : num;
}
module.exports = {
async getAllVatRates(req, res) {
try {
const data = await taxService.listCurrentRates();
return res.json({ success: true, data });
} catch (err) {
console.error('[GET VAT RATES]', err);
return res.status(500).json({ success: false, message: err.message });
}
},
async importVatRatesCsv(req, res) {
try {
if (!req.file || !req.file.buffer) {
return res.status(400).json({ success: false, message: 'CSV file required' });
}
const entries = taxService.parseCsv(req.file.buffer);
const actorUserId = resolveActorUserId(req);
const summary = await taxService.importRates(entries, actorUserId);
return res.json({ success: true, summary });
} catch (err) {
console.error('[IMPORT VAT RATES]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async getVatHistory(req, res) {
try {
const countryCode = req.params.countryCode.toUpperCase();
const result = await taxService.getHistory(countryCode);
return res.json({ success: true, data: result });
} catch (err) {
console.error('[GET VAT HISTORY]', err);
return res.status(400).json({ success: false, message: err.message });
}
}
};