151 lines
7.0 KiB
TypeScript
151 lines
7.0 KiB
TypeScript
import { Router } from 'express';
|
|
import { financialController } from './financial.controller.js';
|
|
import { authenticate, requireRoles } from '../../shared/middleware/auth.middleware.js';
|
|
|
|
const router = Router();
|
|
|
|
// All routes require authentication
|
|
router.use(authenticate);
|
|
|
|
// ========== ACCOUNT TYPES ==========
|
|
router.get('/account-types', (req, res, next) => financialController.getAccountTypes(req, res, next));
|
|
|
|
// ========== ACCOUNTS ==========
|
|
router.get('/accounts', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getAccounts(req, res, next)
|
|
);
|
|
router.get('/accounts/:id', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getAccount(req, res, next)
|
|
);
|
|
router.get('/accounts/:id/balance', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getAccountBalance(req, res, next)
|
|
);
|
|
router.post('/accounts', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.createAccount(req, res, next)
|
|
);
|
|
router.put('/accounts/:id', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.updateAccount(req, res, next)
|
|
);
|
|
router.delete('/accounts/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deleteAccount(req, res, next)
|
|
);
|
|
|
|
// ========== JOURNALS ==========
|
|
router.get('/journals', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getJournals(req, res, next)
|
|
);
|
|
router.get('/journals/:id', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getJournal(req, res, next)
|
|
);
|
|
router.post('/journals', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.createJournal(req, res, next)
|
|
);
|
|
router.put('/journals/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.updateJournal(req, res, next)
|
|
);
|
|
router.delete('/journals/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deleteJournal(req, res, next)
|
|
);
|
|
|
|
// ========== JOURNAL ENTRIES ==========
|
|
router.get('/entries', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getJournalEntries(req, res, next)
|
|
);
|
|
router.get('/entries/:id', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getJournalEntry(req, res, next)
|
|
);
|
|
router.post('/entries', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.createJournalEntry(req, res, next)
|
|
);
|
|
router.put('/entries/:id', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.updateJournalEntry(req, res, next)
|
|
);
|
|
router.post('/entries/:id/post', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.postJournalEntry(req, res, next)
|
|
);
|
|
router.post('/entries/:id/cancel', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.cancelJournalEntry(req, res, next)
|
|
);
|
|
router.delete('/entries/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deleteJournalEntry(req, res, next)
|
|
);
|
|
|
|
// ========== INVOICES ==========
|
|
router.get('/invoices', requireRoles('admin', 'accountant', 'manager', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.getInvoices(req, res, next)
|
|
);
|
|
router.get('/invoices/:id', requireRoles('admin', 'accountant', 'manager', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.getInvoice(req, res, next)
|
|
);
|
|
router.post('/invoices', requireRoles('admin', 'accountant', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.createInvoice(req, res, next)
|
|
);
|
|
router.put('/invoices/:id', requireRoles('admin', 'accountant', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.updateInvoice(req, res, next)
|
|
);
|
|
router.post('/invoices/:id/validate', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.validateInvoice(req, res, next)
|
|
);
|
|
router.post('/invoices/:id/cancel', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.cancelInvoice(req, res, next)
|
|
);
|
|
router.delete('/invoices/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deleteInvoice(req, res, next)
|
|
);
|
|
|
|
// Invoice lines
|
|
router.post('/invoices/:id/lines', requireRoles('admin', 'accountant', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.addInvoiceLine(req, res, next)
|
|
);
|
|
router.put('/invoices/:id/lines/:lineId', requireRoles('admin', 'accountant', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.updateInvoiceLine(req, res, next)
|
|
);
|
|
router.delete('/invoices/:id/lines/:lineId', requireRoles('admin', 'accountant', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.removeInvoiceLine(req, res, next)
|
|
);
|
|
|
|
// ========== PAYMENTS ==========
|
|
router.get('/payments', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getPayments(req, res, next)
|
|
);
|
|
router.get('/payments/:id', requireRoles('admin', 'accountant', 'manager', 'super_admin'), (req, res, next) =>
|
|
financialController.getPayment(req, res, next)
|
|
);
|
|
router.post('/payments', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.createPayment(req, res, next)
|
|
);
|
|
router.put('/payments/:id', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.updatePayment(req, res, next)
|
|
);
|
|
router.post('/payments/:id/post', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.postPayment(req, res, next)
|
|
);
|
|
router.post('/payments/:id/reconcile', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.reconcilePayment(req, res, next)
|
|
);
|
|
router.post('/payments/:id/cancel', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.cancelPayment(req, res, next)
|
|
);
|
|
router.delete('/payments/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deletePayment(req, res, next)
|
|
);
|
|
|
|
// ========== TAXES ==========
|
|
router.get('/taxes', requireRoles('admin', 'accountant', 'manager', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.getTaxes(req, res, next)
|
|
);
|
|
router.get('/taxes/:id', requireRoles('admin', 'accountant', 'manager', 'sales', 'super_admin'), (req, res, next) =>
|
|
financialController.getTax(req, res, next)
|
|
);
|
|
router.post('/taxes', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.createTax(req, res, next)
|
|
);
|
|
router.put('/taxes/:id', requireRoles('admin', 'accountant', 'super_admin'), (req, res, next) =>
|
|
financialController.updateTax(req, res, next)
|
|
);
|
|
router.delete('/taxes/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
|
|
financialController.deleteTax(req, res, next)
|
|
);
|
|
|
|
export default router;
|