Unit/product master api changes
This commit is contained in:
parent
050cecbee2
commit
a723a851db
@ -181,7 +181,13 @@ exports.getAllProducts = async (req, res) => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
order: [
|
order: [
|
||||||
["product_name", "ASC"]
|
[
|
||||||
|
Sequelize.literal(
|
||||||
|
"GREATEST(products.created_at, COALESCE(products.updated_at, products.created_at))"
|
||||||
|
),
|
||||||
|
"DESC",
|
||||||
|
],
|
||||||
|
["id", "DESC"],
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ exports.createUnit = async (req, res) => {
|
|||||||
message: "Description is required and must be a non-empty string.",
|
message: "Description is required and must be a non-empty string.",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const cleaned = uom.replace(/[^A-Za-z]/g, "").toUpperCase();
|
const cleaned = uom.replace(/[^A-Za-z]/g, "");
|
||||||
|
|
||||||
if (!cleaned) {
|
if (!cleaned) {
|
||||||
return res.status(400).json({
|
return res.status(400).json({
|
||||||
@ -60,9 +60,10 @@ exports.createUnit = async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const existingUOM = await UnitMaster.findOne({
|
const existingUOM = await UnitMaster.findOne({
|
||||||
where: {
|
where: Sequelize.where(
|
||||||
uom: cleaned
|
Sequelize.fn("LOWER", Sequelize.col("uom")),
|
||||||
}
|
cleaned.toLowerCase()
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (existingUOM) {
|
if (existingUOM) {
|
||||||
@ -96,7 +97,7 @@ exports.createUnit = async (req, res) => {
|
|||||||
let uomShort =
|
let uomShort =
|
||||||
cleaned.length <= 5
|
cleaned.length <= 5
|
||||||
? cleaned
|
? cleaned
|
||||||
: (abbreviationMap[cleaned] || cleaned.substring(0, 3)) +
|
: (abbreviationMap[cleaned.toUpperCase()] || cleaned.substring(0, 3)) +
|
||||||
Math.random().toString(36).substring(2, 4).toUpperCase();
|
Math.random().toString(36).substring(2, 4).toUpperCase();
|
||||||
|
|
||||||
uomShort = uomShort.substring(0, 5);
|
uomShort = uomShort.substring(0, 5);
|
||||||
@ -196,10 +197,21 @@ exports.updateUnit = async (req, res) => {
|
|||||||
const unit = await UnitMaster.findByPk(req.params.id);
|
const unit = await UnitMaster.findByPk(req.params.id);
|
||||||
if (!unit) return res.status(404).json({ status: "error", message: "Unit not found" });
|
if (!unit) return res.status(404).json({ status: "error", message: "Unit not found" });
|
||||||
|
|
||||||
req.body.updated_by = req.body.updated_by || req.user.id;
|
const payload = { ...req.body };
|
||||||
req.body.updated_at = req.body.updated_at || new Date();
|
payload.updated_by = payload.updated_by || req.user.id;
|
||||||
|
payload.updated_at = payload.updated_at || new Date();
|
||||||
|
|
||||||
await unit.update(req.body);
|
if (payload.uom !== undefined) {
|
||||||
|
payload.uom = sanitizeStringValue(payload.uom);
|
||||||
|
}
|
||||||
|
if (payload.description !== undefined) {
|
||||||
|
payload.description = sanitizeStringValue(payload.description);
|
||||||
|
}
|
||||||
|
if (payload.factor !== undefined && typeof payload.factor === "string") {
|
||||||
|
payload.factor = sanitizeStringValue(payload.factor);
|
||||||
|
}
|
||||||
|
|
||||||
|
await unit.update(payload);
|
||||||
res.status(200).json({ status: "success" });
|
res.status(200).json({ status: "success" });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(err.message);
|
logger.error(err.message);
|
||||||
@ -454,7 +466,7 @@ exports.uploadUnitMasterFromCSV = async (req, res) => {
|
|||||||
const seenInFile = new Set();
|
const seenInFile = new Set();
|
||||||
|
|
||||||
const generateShortName = (name) => {
|
const generateShortName = (name) => {
|
||||||
const base = name.replace(/[^A-Z]/gi, "").toUpperCase().slice(0, 3);
|
const base = name.replace(/[^A-Za-z]/g, "").slice(0, 3);
|
||||||
const suffix = Math.random().toString(36).substring(2, 4).toUpperCase();
|
const suffix = Math.random().toString(36).substring(2, 4).toUpperCase();
|
||||||
return `${base}${suffix}`;
|
return `${base}${suffix}`;
|
||||||
};
|
};
|
||||||
@ -512,7 +524,10 @@ exports.uploadUnitMasterFromCSV = async (req, res) => {
|
|||||||
const exists = await UnitMaster.findOne({
|
const exists = await UnitMaster.findOne({
|
||||||
where: {
|
where: {
|
||||||
[Op.or]: [
|
[Op.or]: [
|
||||||
{ uom: uom.toUpperCase() },
|
Sequelize.where(
|
||||||
|
Sequelize.fn("LOWER", Sequelize.col("uom")),
|
||||||
|
uom.toLowerCase()
|
||||||
|
),
|
||||||
{ uom_short_name: shortName },
|
{ uom_short_name: shortName },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user