diff --git a/erpnext/selling/page/point_of_sale/pos_item_selector.js b/erpnext/selling/page/point_of_sale/pos_item_selector.js
index e930322a2c4..9b51ba26225 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_selector.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_selector.js
@@ -107,39 +107,45 @@ erpnext.PointOfSale.ItemSelector = class {
`;
} else {
return `
${qty_to_display}
- ${frappe.get_abbr(item.item_name)}
`;
+ ${frappe.utils.escape_html(frappe.get_abbr(item.item_name))}
`;
}
}
return `
+ data-item-code="${frappe.utils.escape_html(item.item_code)}" data-serial-no="${frappe.utils.escape_html(
+ serial_no
+ )}"
+ data-batch-no="${frappe.utils.escape_html(batch_no)}" data-uom="${frappe.utils.escape_html(uom)}"
+ data-rate="${frappe.utils.escape_html(price_list_rate || 0)}"
+ data-stock-uom="${frappe.utils.escape_html(item.stock_uom)}"
+ title="${frappe.utils.escape_html(item.item_name)}">
${get_item_image_html()}
- ${frappe.ellipsis(item.item_name, 18)}
+ ${frappe.utils.escape_html(frappe.ellipsis(item.item_name, 18))}
-
${format_currency(price_list_rate, item.currency, precision) || 0} / ${uom}
+
${frappe.utils.escape_html(
+ format_currency(price_list_rate, item.currency, precision) || 0
+ )} / ${frappe.utils.escape_html(uom)}
`;
}
handle_broken_image($img) {
const item_abbr = $($img).attr("alt");
- $($img).parent().replaceWith(`${item_abbr}
`);
+ $($img)
+ .parent()
+ .replaceWith(`${frappe.utils.escape_html(item_abbr)}
`);
}
make_search_bar() {
@@ -252,12 +258,12 @@ erpnext.PointOfSale.ItemSelector = class {
this.$component.on("click", ".item-wrapper", function () {
const $item = $(this);
- const item_code = unescape($item.attr("data-item-code"));
- let batch_no = unescape($item.attr("data-batch-no"));
- let serial_no = unescape($item.attr("data-serial-no"));
- let uom = unescape($item.attr("data-uom"));
- let rate = unescape($item.attr("data-rate"));
- let stock_uom = unescape($item.attr("data-stock-uom"));
+ const item_code = $item.attr("data-item-code");
+ let batch_no = $item.attr("data-batch-no");
+ let serial_no = $item.attr("data-serial-no");
+ let uom = $item.attr("data-uom");
+ let rate = $item.attr("data-rate");
+ let stock_uom = $item.attr("data-stock-uom");
// escape(undefined) returns "undefined" then unescape returns "undefined"
batch_no = batch_no === "undefined" ? undefined : batch_no;