fix: button click event not working in POS custom fields (#23358)

diff --git a/erpnext/accounts/doctype/pos_settings/pos_settings.js b/erpnext/accounts/doctype/pos_settings/pos_settings.js
index 504941d..05cb7f0 100644
--- a/erpnext/accounts/doctype/pos_settings/pos_settings.js
+++ b/erpnext/accounts/doctype/pos_settings/pos_settings.js
@@ -7,10 +7,10 @@
 	},
 
 	get_invoice_fields: function(frm) {
-		frappe.model.with_doctype("Sales Invoice", () => {
-			var fields = $.map(frappe.get_doc("DocType", "Sales Invoice").fields, function(d) {
+		frappe.model.with_doctype("POS Invoice", () => {
+			var fields = $.map(frappe.get_doc("DocType", "POS Invoice").fields, function(d) {
 				if (frappe.model.no_value_type.indexOf(d.fieldtype) === -1 ||
-					d.fieldtype === 'Table') {
+					['Table', 'Button'].includes(d.fieldtype)) {
 					return { label: d.label + ' (' + d.fieldtype + ')', value: d.fieldname };
 				} else {
 					return null;
@@ -25,7 +25,7 @@
 frappe.ui.form.on("POS Field", {
 	fieldname: function(frm, doctype, name) {
 		var doc = frappe.get_doc(doctype, name);
-		var df = $.map(frappe.get_doc("DocType", "Sales Invoice").fields, function(d) {
+		var df = $.map(frappe.get_doc("DocType", "POS Invoice").fields, function(d) {
 			return doc.fieldname == d.fieldname ? d : null;
 		})[0];
 
diff --git a/erpnext/selling/page/point_of_sale/pos_payment.js b/erpnext/selling/page/point_of_sale/pos_payment.js
index e1c54f6..7f0cabe 100644
--- a/erpnext/selling/page/point_of_sale/pos_payment.js
+++ b/erpnext/selling/page/point_of_sale/pos_payment.js
@@ -70,13 +70,23 @@
 				this.$invoice_fields.append(
 					`<div class="invoice_detail_field ${df.fieldname}-field" data-fieldname="${df.fieldname}"></div>`
 				);
+				let df_events = {
+					onchange: function() { frm.set_value(this.df.fieldname, this.value); }
+				}
+				if (df.fieldtype == "Button") {
+					df_events = {
+						click: function() {
+							if (frm.script_manager.has_handlers(df.fieldname, frm.doc.doctype)) {
+								frm.script_manager.trigger(df.fieldname, frm.doc.doctype, frm.doc.docname);
+							}
+						}
+					}
+				}
 
 				this[`${df.fieldname}_field`] = frappe.ui.form.make_control({
 					df: { 
 						...df,
-						onchange: function() {
-							frm.set_value(this.df.fieldname, this.value);
-						}
+						...df_events
 					},
 					parent: this.$invoice_fields.find(`.${df.fieldname}-field`),
 					render_input: true,