48 lines
2.8 KiB
TypeScript
48 lines
2.8 KiB
TypeScript
import { Router, type IRouter } from 'express';
|
|
import { authenticate, authorize } from '../middlewares/auth.middleware.js';
|
|
import { tenantMiddleware } from '../middlewares/tenant.middleware.js';
|
|
import * as ctrl from '../controllers/contribuyente.controller.js';
|
|
import * as configCtrl from '../controllers/contribuyente-config.controller.js';
|
|
import * as obligacionesCtrl from '../controllers/obligaciones.controller.js';
|
|
|
|
const router: IRouter = Router();
|
|
|
|
router.use(authenticate);
|
|
router.use(tenantMiddleware);
|
|
|
|
// === Static routes FIRST (before /:id to avoid route conflict) ===
|
|
router.get('/', ctrl.list);
|
|
router.post('/', authorize('owner', 'cfo'), ctrl.create);
|
|
router.post('/backfill', authorize('owner'), ctrl.backfill);
|
|
router.get('/catalogo-obligaciones', obligacionesCtrl.getCatalogo);
|
|
|
|
// === Dynamic routes with :id ===
|
|
router.get('/:id', ctrl.getById);
|
|
router.put('/:id', authorize('owner', 'cfo'), ctrl.update);
|
|
router.delete('/:id', authorize('owner'), ctrl.deactivate);
|
|
router.post('/:id/cliente-acceso', authorize('owner', 'supervisor'), ctrl.addClienteAcceso);
|
|
|
|
// FIEL per contribuyente
|
|
router.post('/:id/fiel', authorize('owner', 'cfo'), configCtrl.uploadFiel);
|
|
router.get('/:id/fiel/status', configCtrl.fielStatus);
|
|
router.delete('/:id/fiel', authorize('owner', 'cfo'), configCtrl.deleteFiel);
|
|
|
|
// Facturapi per contribuyente
|
|
router.post('/:id/facturapi/org', authorize('owner', 'cfo'), configCtrl.createOrg);
|
|
router.get('/:id/facturapi/status', configCtrl.orgStatus);
|
|
router.post('/:id/facturapi/csd', authorize('owner', 'cfo'), configCtrl.uploadCsd);
|
|
|
|
// Obligaciones fiscales per contribuyente
|
|
router.get('/:id/obligaciones/periodo', obligacionesCtrl.getObligacionesPorPeriodo);
|
|
router.get('/:id/obligaciones', obligacionesCtrl.getObligaciones);
|
|
router.post('/:id/obligaciones/init', authorize('owner', 'cfo'), obligacionesCtrl.initRecomendaciones);
|
|
router.post('/:id/obligaciones', authorize('owner', 'cfo'), obligacionesCtrl.addObligacion);
|
|
router.delete('/:id/obligaciones/:obligacionId', authorize('owner', 'cfo'), obligacionesCtrl.removeObligacion);
|
|
router.post('/:id/obligaciones/:obligacionId/restore', authorize('owner', 'cfo'), obligacionesCtrl.restoreObligacion);
|
|
router.post('/:id/obligaciones/:obligacionId/complete', authorize('owner', 'cfo', 'contador', 'auxiliar'), obligacionesCtrl.completeObligacion);
|
|
router.post('/:id/obligaciones/:obligacionId/uncomplete', authorize('owner', 'cfo', 'contador', 'auxiliar'), obligacionesCtrl.uncompleteObligacion);
|
|
router.post('/:id/obligaciones/:obligacionId/complete-periodo', authorize('owner', 'cfo', 'contador', 'auxiliar'), obligacionesCtrl.completePeriodo);
|
|
router.post('/:id/obligaciones/:obligacionId/uncomplete-periodo', authorize('owner', 'cfo', 'contador', 'auxiliar'), obligacionesCtrl.uncompletePeriodo);
|
|
|
|
export default router;
|