From 95b3c6c9f50b24a47318c06ab3b8cca43f7b994e Mon Sep 17 00:00:00 2001 From: Alaguraj0361 Date: Sat, 11 Oct 2025 22:52:54 +0530 Subject: [PATCH] hst applied --- .../maisondetreats/cakeOrder.controller.js | 13 +++-- models/maisondetreats/cakeOrder.model.js | 1 + utils/mailer.js | 54 +++++++++++++------ 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/controllers/maisondetreats/cakeOrder.controller.js b/controllers/maisondetreats/cakeOrder.controller.js index 2da2f47..ce284c7 100644 --- a/controllers/maisondetreats/cakeOrder.controller.js +++ b/controllers/maisondetreats/cakeOrder.controller.js @@ -4,7 +4,7 @@ import { sendCakeOrderMail } from "../../utils/mailer.js"; // POST → Create new cake order export const createCakeOrder = async (req, res) => { try { - const { order, email, totalPieces, totalPrice } = req.body; + let { order, email, totalPieces, totalPrice, hst } = req.body; if (!order || typeof order !== "object") { return res.status(400).json({ message: "Order data is required" }); @@ -14,14 +14,21 @@ export const createCakeOrder = async (req, res) => { return res.status(400).json({ message: "Total pieces and price are required" }); } - const newOrder = await CakeOrder.create({ order, email, totalPieces, totalPrice }); + // ✅ Auto-calculate HST if not provided + if (!hst || hst <= 0) { + hst = parseFloat((totalPrice * 0.13).toFixed(2)); + } + const newOrder = await CakeOrder.create({ order, email, totalPieces, totalPrice, hst }); + + // Send email (async) if (email) { - sendCakeOrderMail(email, order, totalPieces, totalPrice) + sendCakeOrderMail(email, order, totalPieces, totalPrice, hst) .then(() => console.log("Cake order email sent to", email)) .catch((err) => console.error("Email send failed:", err)); } + // ✅ Return HST in response res.status(201).json({ message: "Cake order created successfully", data: newOrder, diff --git a/models/maisondetreats/cakeOrder.model.js b/models/maisondetreats/cakeOrder.model.js index 236e7d4..0350e5d 100644 --- a/models/maisondetreats/cakeOrder.model.js +++ b/models/maisondetreats/cakeOrder.model.js @@ -19,6 +19,7 @@ const CakeOrderSchema = new mongoose.Schema( }, totalPieces: { type: Number, required: true }, totalPrice: { type: Number, required: true }, + hst: { type: Number, required: false, default: 0 }, // ✅ Added HST field }, { timestamps: true } ); diff --git a/utils/mailer.js b/utils/mailer.js index fdcc9d4..dbde934 100644 --- a/utils/mailer.js +++ b/utils/mailer.js @@ -63,8 +63,7 @@ export async function sendResetPasswordMail(email, token) { } - -export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) => { +export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice, hst) => { try { const transporter = nodemailer.createTransport({ host: "mail.metatron-admin-backend.metatronhost.com", @@ -77,6 +76,10 @@ export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) = tls: { rejectUnauthorized: false }, }); + // ✅ Auto-calculate HST if not provided + const hstAmount = hst && hst > 0 ? hst : totalPrice * 0.13; + const grandTotal = totalPrice + hstAmount; + // Build table rows let orderRows = ""; Object.entries(order).forEach(([category, items]) => { @@ -93,6 +96,7 @@ export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) = }); }); + // ✅ New version: Show “HST (13%) included in total” const htmlContent = `
@@ -107,10 +111,11 @@ export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) =
-
- -
+
+ +

Order Details

+ @@ -121,18 +126,34 @@ export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) = - - ${orderRows} - - - - - - - + + ${orderRows} + + + + + + + + + + + + + + +
Total Price
Total Pieces${totalPieces}Total Price ($)$${totalPrice.toFixed(2)}
Total Pieces${totalPieces}Subtotal ($)$${totalPrice.toFixed(2)}
HST (13%)$${hstAmount.toFixed(2)}
Grand Total (includes 13% HST)$${grandTotal.toFixed(2)}
- Visit Our Website +

+ Note: Grand total includes 13% HST. +

+ + + Visit Our Website +
@@ -158,4 +179,5 @@ export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) = } catch (err) { console.error("❌ Failed to send cake order email:", err); } -}; \ No newline at end of file +}; +