sale order
SAP-ERP Portal CI/CD / build (push) Successful in 3m57s

This commit is contained in:
John
2026-10-05 18:45:17 +05:30
parent e725a6571b
commit eead8f5ffd
129 changed files with 14252 additions and 452 deletions
+70
View File
@@ -0,0 +1,70 @@
'use strict';
// routes/downtimeAnalysis.js — "Downtime Analysis" report (see
// services/downtimeAnalysisStore.js for the aggregation logic and
// services/appSettingsStore.js's downtimeAnalysisConfig for the admin-edited
// cause taxonomy/field mapping/Base Days). Gated purely by the
// 'downtime-analysis' sidebar module (Admin → Users) — same soft-gate
// pattern as the other report-style pages (Inventory Status Report, PWO
// Source Report, etc.): verifyToken only here, the module toggle controls
// who even sees the menu link.
const express = require('express');
const router = express.Router();
const { verifyToken } = require('../middleware/auth');
const store = require('./../services/downtimeAnalysisStore');
const cq = (req) => req.query?.company || req.body?.company || null;
router.get('/report', verifyToken, async (req, res) => {
try {
const data = await store.buildReport({
company: cq(req),
periodFrom: req.query.periodFrom,
periodTo: req.query.periodTo,
baseDays: req.query.baseDays,
});
res.json({ success: true, data });
} catch (err) {
res.status(400).json({ success: false, message: err.message });
}
});
router.get('/by-tab', verifyToken, async (req, res) => {
try {
const data = await store.buildTabReport({
company: cq(req),
periodFrom: req.query.periodFrom,
periodTo: req.query.periodTo,
baseDays: req.query.baseDays,
});
res.json({ success: true, data });
} catch (err) {
res.status(400).json({ success: false, message: err.message });
}
});
router.get('/detail-by-tab', verifyToken, async (req, res) => {
try {
const data = await store.buildDetailByTab({
company: cq(req),
periodFrom: req.query.periodFrom,
periodTo: req.query.periodTo,
});
res.json({ success: true, data });
} catch (err) {
res.status(400).json({ success: false, message: err.message });
}
});
router.get('/monthly', verifyToken, async (req, res) => {
try {
const data = await store.buildMonthlyReport({
company: cq(req),
periodFrom: req.query.periodFrom,
periodTo: req.query.periodTo,
});
res.json({ success: true, data });
} catch (err) {
res.status(400).json({ success: false, message: err.message });
}
});
module.exports = router;