fix: moved custom_make_buttons to PurchaseOrderController to avoid duplication of dropdown options
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 84e3a31..25065ab 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -7,12 +7,6 @@
frappe.ui.form.on("Purchase Order", {
setup: function(frm) {
- frm.custom_make_buttons = {
- 'Purchase Receipt': 'Receipt',
- 'Purchase Invoice': 'Invoice',
- 'Stock Entry': 'Material to Supplier',
- 'Payment Entry': 'Payment'
- }
frm.set_query("reserve_warehouse", "supplied_items", function() {
return {
@@ -36,20 +30,6 @@
},
- refresh: function(frm) {
- if(frm.doc.docstatus === 1 && frm.doc.status !== 'Closed'
- && flt(frm.doc.per_received) < 100 && flt(frm.doc.per_billed) < 100) {
- frm.add_custom_button(__('Update Items'), () => {
- erpnext.utils.update_child_items({
- frm: frm,
- child_docname: "items",
- child_doctype: "Purchase Order Detail",
- cannot_add_row: false,
- })
- });
- }
- },
-
onload: function(frm) {
set_schedule_date(frm);
if (!frm.doc.transaction_date){
@@ -76,6 +56,18 @@
});
erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend({
+ setup: function() {
+ this.frm.custom_make_buttons = {
+ 'Purchase Receipt': 'Receipt',
+ 'Purchase Invoice': 'Invoice',
+ 'Stock Entry': 'Material to Supplier',
+ 'Payment Entry': 'Payment',
+ }
+
+ this._super();
+
+ },
+
refresh: function(doc, cdt, cdn) {
var me = this;
this._super();
@@ -99,6 +91,16 @@
if(doc.docstatus == 1) {
if(!in_list(["Closed", "Delivered"], doc.status)) {
+ if(this.frm.doc.status !== 'Closed' && flt(this.frm.doc.per_received) < 100 && flt(this.frm.doc.per_billed) < 100) {
+ this.frm.add_custom_button(__('Update Items'), () => {
+ erpnext.utils.update_child_items({
+ frm: frm,
+ child_docname: "items",
+ child_doctype: "Purchase Order Detail",
+ cannot_add_row: false,
+ })
+ });
+ }
if (this.frm.has_perm("submit")) {
if(flt(doc.per_billed, 6) < 100 || flt(doc.per_received, 6) < 100) {
if (doc.status != "On Hold") {