From cde19066fe6b42aca5cae6971805973ac18a01dd Mon Sep 17 00:00:00 2001 From: vishakhdesai Date: Mon, 25 Nov 2024 12:50:35 +0530 Subject: [PATCH] fix: use field precision instead of hardcoded precision in so and po (cherry picked from commit 1a1e2c7e01f76ed9f9cc727fb802ade8faa99440) # Conflicts: # erpnext/buying/doctype/purchase_order/purchase_order.js --- .../doctype/purchase_order/purchase_order.js | 29 +++++++++++--- .../doctype/sales_order/sales_order.js | 39 +++++++++++++------ 2 files changed, 50 insertions(+), 18 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index de335bd6292..cb0aea0eb15 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -93,7 +93,10 @@ frappe.ui.form.on("Purchase Order", { get_materials_from_supplier: function (frm) { let po_details = []; - if (frm.doc.supplied_items && (flt(frm.doc.per_received, 2) == 100 || frm.doc.status === "Closed")) { + if ( + frm.doc.supplied_items && + (flt(frm.doc.per_received, precision("per_received")) == 100 || frm.doc.status === "Closed") + ) { frm.doc.supplied_items.forEach((d) => { if (d.total_supplied_qty && d.total_supplied_qty != d.consumed_qty) { po_details.push(d.name); @@ -329,8 +332,8 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( if (!["Closed", "Delivered"].includes(doc.status)) { if ( this.frm.doc.status !== "Closed" && - flt(this.frm.doc.per_received, 2) < 100 && - flt(this.frm.doc.per_billed, 2) < 100 + flt(this.frm.doc.per_received, precision("per_received")) < 100 && + flt(this.frm.doc.per_billed, precision("per_billed")) < 100 ) { if (!this.frm.doc.__onload || this.frm.doc.__onload.can_update_items) { this.frm.add_custom_button(__("Update Items"), () => { @@ -344,7 +347,10 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } } if (this.frm.has_perm("submit")) { - if (flt(doc.per_billed, 2) < 100 || flt(doc.per_received, 2) < 100) { + if ( + flt(doc.per_billed, precision("per_billed")) < 100 || + flt(doc.per_received, precision("per_received")) < 100 + ) { if (doc.status != "On Hold") { this.frm.add_custom_button( __("Hold"), @@ -382,8 +388,13 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } if (doc.status != "Closed") { if (doc.status != "On Hold") { +<<<<<<< HEAD if (flt(doc.per_received) < 100 && allow_receipt) { cur_frm.add_custom_button( +======= + if (flt(doc.per_received, precision("per_received")) < 100 && allow_receipt) { + this.frm.add_custom_button( +>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po) __("Purchase Receipt"), this.make_purchase_receipt, __("Create") @@ -408,14 +419,20 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } } } +<<<<<<< HEAD if (flt(doc.per_billed) < 100) cur_frm.add_custom_button( +======= + // Please do not add precision in the below flt function + if (flt(doc.per_billed, precision("per_billed")) < 100) + this.frm.add_custom_button( +>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po) __("Purchase Invoice"), this.make_purchase_invoice, __("Create") ); - if (flt(doc.per_billed, 2) < 100 && doc.status != "Delivered") { + if (flt(doc.per_billed, precision("per_billed")) < 100 && doc.status != "Delivered") { this.frm.add_custom_button( __("Payment"), () => this.make_payment_entry(), @@ -423,7 +440,7 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( ); } - if (flt(doc.per_billed, 2) < 100) { + if (flt(doc.per_billed, precision("per_billed")) < 100) { this.frm.add_custom_button( __("Payment Request"), function () { diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 5387286c709..2c8a6cccceb 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -57,8 +57,8 @@ frappe.ui.form.on("Sales Order", { if (frm.doc.docstatus === 1) { if ( frm.doc.status !== "Closed" && - flt(frm.doc.per_delivered, 2) < 100 && - flt(frm.doc.per_billed, 2) < 100 && + flt(frm.doc.per_delivered, precision("per_delivered")) < 100 && + flt(frm.doc.per_billed, precision("per_billed")) < 100 && frm.has_perm("write") ) { frm.add_custom_button(__("Update Items"), () => { @@ -75,7 +75,7 @@ frappe.ui.form.on("Sales Order", { if ( frm.doc.__onload && frm.doc.__onload.has_unreserved_stock && - flt(frm.doc.per_picked) === 0 + flt(frm.doc.per_picked, precision("per_picked")) === 0 ) { frm.add_custom_button( __("Reserve"), @@ -604,7 +604,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex __("Status") ); - if (flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed, 2) < 100) { + if ( + flt(doc.per_delivered, precision("per_delivered")) < 100 || + flt(doc.per_billed, precision("per_billed")) < 100 + ) { // close this.frm.add_custom_button(__("Close"), () => this.close_sales_order(), __("Status")); } @@ -627,7 +630,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex ) && !this.frm.doc.skip_delivery_note; if (this.frm.has_perm("submit")) { - if (flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed, 2) < 100) { + if ( + flt(doc.per_delivered, precision("per_delivered")) < 100 || + flt(doc.per_billed, precision("per_billed")) < 100 + ) { // hold this.frm.add_custom_button( __("Hold"), @@ -645,8 +651,8 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex if ( (!doc.__onload || !doc.__onload.has_reserved_stock) && - flt(doc.per_picked, 2) < 100 && - flt(doc.per_delivered, 2) < 100 && + flt(doc.per_picked, precision("per_picked")) < 100 && + flt(doc.per_delivered, precision("per_delivered")) < 100 && frappe.model.can_create("Pick List") ) { this.frm.add_custom_button( @@ -664,7 +670,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex // delivery note if ( - flt(doc.per_delivered, 2) < 100 && + flt(doc.per_delivered, precision("per_delivered")) < 100 && (order_is_a_sale || order_is_a_custom_sale) && allow_delivery ) { @@ -686,7 +692,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // sales invoice - if (flt(doc.per_billed, 2) < 100 && frappe.model.can_create("Sales Invoice")) { + if ( + flt(doc.per_billed, precision("per_billed")) < 100 && + frappe.model.can_create("Sales Invoice") + ) { this.frm.add_custom_button( __("Sales Invoice"), () => me.make_sales_invoice(), @@ -698,7 +707,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex if ( (!doc.order_type || ((order_is_a_sale || order_is_a_custom_sale) && - flt(doc.per_delivered, 2) < 100)) && + flt(doc.per_delivered, precision("per_delivered")) < 100)) && frappe.model.can_create("Material Request") ) { this.frm.add_custom_button( @@ -723,7 +732,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // maintenance - if (flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) { + if ( + flt(doc.per_delivered, precision("per_delivered")) < 100 && + (order_is_maintenance || order_is_a_custom_sale) + ) { if (frappe.model.can_create("Maintenance Visit")) { this.frm.add_custom_button( __("Maintenance Visit"), @@ -741,7 +753,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // project - if (flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) { + if ( + flt(doc.per_delivered, precision("per_delivered")) < 100 && + frappe.model.can_create("Project") + ) { this.frm.add_custom_button(__("Project"), () => this.make_project(), __("Create")); }