diff --git a/app/controllers/submission.controller.js b/app/controllers/submission.controller.js index 9168a95..7083746 100644 --- a/app/controllers/submission.controller.js +++ b/app/controllers/submission.controller.js @@ -304,7 +304,7 @@ exports.submissionHistory = async (req, res) => { const { establishment_id } = req.params; - const data = await Submission.findAll({ + let data = await Submission.findAll({ attributes: { include: [ [ @@ -312,7 +312,7 @@ exports.submissionHistory = async (req, res) => { "product_count" ], [ - Sequelize.literal(`(SELECT ROUND(SUM(sp2.current_cost), 4) FROM submission_products AS sp2 WHERE sp2.submission_id = submission.id)`), + Sequelize.literal(`(SELECT ROUND(COALESCE(SUM(sp2.current_cost), 0), 2) FROM submission_products AS sp2 WHERE sp2.submission_id = submission.id)`), "total_cost" ] ] @@ -320,16 +320,13 @@ exports.submissionHistory = async (req, res) => { where: { establishment_id }, order: [["id", "DESC"]], }); - const result = data.map(obj => { - const record = obj.get({ plain: true }); - - const num = Number(record.total_cost); - if (!isNaN(num)) { - record.total_cost = Number.isInteger(num) ? num : num.toFixed(4); - } - return record; - }); - res.status(200).json({ status: "success", data: result }); + + data = data.map(item => ({ + ...item.get(), + total_cost: Number(item.get("total_cost") || 0).toFixed(2) + })); + + res.status(200).json({ status: "success", data }); } catch (err) { res.status(500).json({ status: "failed", message: err.message }); } @@ -545,7 +542,7 @@ exports.viewSubmissionDetails = async (req, res) => { }; } - const data = await Submission.findOne( { + let data = await Submission.findOne( { where: whereCondition, include: [ { @@ -581,11 +578,16 @@ exports.viewSubmissionDetails = async (req, res) => { ], }); - if (!data) return res.status(404).json({ status: "failed", message: "Not found" }); - - const quarter_periods = getQuarterPeriods(Number(data.year), data.quarter); - - res.status(200).json({ status: "success", data , quarter_periods }); + let plainData = data.get({ plain: true }); + plainData.products = plainData.products.map(p => { + const format = v => Number(v || 0).toFixed(2); + return { + ...p, + current_cost: format(p.current_cost) + }; + }); + const quarter_periods = getQuarterPeriods(Number(plainData.year), plainData.quarter); + res.status(200).json({ status: "success", data: plainData, quarter_periods }); } catch (err) { res.status(500).json({ status: "failed", message: err.message }); @@ -1026,6 +1028,7 @@ exports.getProductSubmissionHistory = async (req, res) => { Number(d.submission.year), d.submission.quarter ); + d.dataValues.current_cost = Number(d.current_cost || 0).toFixed(2); }