import { Router, type IRouter } from 'express';
import { authenticate } from '../middlewares/auth.middleware.js';
import { tenantMiddleware } from '../middlewares/tenant.middleware.js';
import { normalLimit } from '../middlewares/rate-limit.middleware.js';
import * as impuestosController from '../controllers/impuestos.controller.js';
import * as activosFijosController from '../controllers/activos-fijos.controller.js';

const router: IRouter = Router();

router.use(authenticate);
router.use(normalLimit);
router.use(tenantMiddleware);

router.get('/iva/mensual', impuestosController.getIvaMensual);
router.get('/iva/resumen', impuestosController.getResumenIva);
router.get('/isr/mensual', impuestosController.getIsrMensual);
router.get('/isr/resumen', impuestosController.getResumenIsr);
router.get('/isr/resumen-desglosado', impuestosController.getResumenIsrDesglosado);
router.get('/isr/coeficiente', impuestosController.getCoeficiente);
router.put('/isr/coeficiente', impuestosController.setCoeficiente);

// Activos fijos: vista informativa de deducción mensual proporcional.
// NO afecta gastos ni ISR — el SAT y el dashboard tratan estos CFDIs
// como gasto del periodo (igual que antes).
router.get('/activos-fijos', activosFijosController.list);
router.put('/activos-fijos/usos-excluidos', activosFijosController.setUsosExcluidos);
router.post('/activos-fijos/:cfdiId/baja', activosFijosController.darDeBaja);
router.delete('/activos-fijos/:cfdiId/baja', activosFijosController.revertirBaja);

export { router as impuestosRoutes };
