mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-03 04:09:11 +00:00
fix: use field precision instead of hardcoded precision in so and po
(cherry picked from commit 1a1e2c7e01)
# Conflicts:
# erpnext/buying/doctype/purchase_order/purchase_order.js
# erpnext/selling/doctype/sales_order/sales_order.js
This commit is contained in:
@@ -62,8 +62,16 @@ frappe.ui.form.on("Purchase Order", {
|
|||||||
get_materials_from_supplier: function(frm) {
|
get_materials_from_supplier: function(frm) {
|
||||||
let po_details = [];
|
let po_details = [];
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if (frm.doc.supplied_items && (frm.doc.per_received == 100 || frm.doc.status === 'Closed')) {
|
if (frm.doc.supplied_items && (frm.doc.per_received == 100 || frm.doc.status === 'Closed')) {
|
||||||
frm.doc.supplied_items.forEach(d => {
|
frm.doc.supplied_items.forEach(d => {
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
frm.doc.supplied_items &&
|
||||||
|
(flt(frm.doc.per_received, precision("per_received")) == 100 || frm.doc.status === "Closed")
|
||||||
|
) {
|
||||||
|
frm.doc.supplied_items.forEach((d) => {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
if (d.total_supplied_qty && d.total_supplied_qty != d.consumed_qty) {
|
if (d.total_supplied_qty && d.total_supplied_qty != d.consumed_qty) {
|
||||||
po_details.push(d.name)
|
po_details.push(d.name)
|
||||||
}
|
}
|
||||||
@@ -180,11 +188,22 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
this.frm.fields_dict.items_section.wrapper.removeClass("hide-border");
|
this.frm.fields_dict.items_section.wrapper.removeClass("hide-border");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if(!["Closed", "Delivered"].includes(doc.status)) {
|
if(!["Closed", "Delivered"].includes(doc.status)) {
|
||||||
if(this.frm.doc.status !== 'Closed' && flt(this.frm.doc.per_received) < 100 && flt(this.frm.doc.per_billed) < 100) {
|
if(this.frm.doc.status !== 'Closed' && flt(this.frm.doc.per_received) < 100 && flt(this.frm.doc.per_billed) < 100) {
|
||||||
// Don't add Update Items button if the PO is following the new subcontracting flow.
|
// Don't add Update Items button if the PO is following the new subcontracting flow.
|
||||||
if (!(this.frm.doc.is_subcontracted && !this.frm.doc.is_old_subcontracting_flow)) {
|
if (!(this.frm.doc.is_subcontracted && !this.frm.doc.is_old_subcontracting_flow)) {
|
||||||
this.frm.add_custom_button(__('Update Items'), () => {
|
this.frm.add_custom_button(__('Update Items'), () => {
|
||||||
|
=======
|
||||||
|
if (!["Closed", "Delivered"].includes(doc.status)) {
|
||||||
|
if (
|
||||||
|
this.frm.doc.status !== "Closed" &&
|
||||||
|
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"), () => {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
erpnext.utils.update_child_items({
|
erpnext.utils.update_child_items({
|
||||||
frm: this.frm,
|
frm: this.frm,
|
||||||
child_docname: "items",
|
child_docname: "items",
|
||||||
@@ -195,7 +214,14 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.frm.has_perm("submit")) {
|
if (this.frm.has_perm("submit")) {
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_billed, 6) < 100 || flt(doc.per_received, 6) < 100) {
|
if(flt(doc.per_billed, 6) < 100 || flt(doc.per_received, 6) < 100) {
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_billed, precision("per_billed")) < 100 ||
|
||||||
|
flt(doc.per_received, precision("per_received")) < 100
|
||||||
|
) {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
if (doc.status != "On Hold") {
|
if (doc.status != "On Hold") {
|
||||||
this.frm.add_custom_button(__('Hold'), () => this.hold_purchase_order(), __("Status"));
|
this.frm.add_custom_button(__('Hold'), () => this.hold_purchase_order(), __("Status"));
|
||||||
} else{
|
} else{
|
||||||
@@ -218,8 +244,19 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
}
|
}
|
||||||
if(doc.status != "Closed") {
|
if(doc.status != "Closed") {
|
||||||
if (doc.status != "On Hold") {
|
if (doc.status != "On Hold") {
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_received) < 100 && allow_receipt) {
|
if(flt(doc.per_received) < 100 && allow_receipt) {
|
||||||
cur_frm.add_custom_button(__('Purchase Receipt'), this.make_purchase_receipt, __('Create'));
|
cur_frm.add_custom_button(__('Purchase Receipt'), this.make_purchase_receipt, __('Create'));
|
||||||
|
=======
|
||||||
|
if (flt(doc.per_received, precision("per_received")) < 100 && allow_receipt) {
|
||||||
|
this.frm.add_custom_button(
|
||||||
|
__("Purchase Receipt"),
|
||||||
|
() => {
|
||||||
|
me.make_purchase_receipt();
|
||||||
|
},
|
||||||
|
__("Create")
|
||||||
|
);
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
if (doc.is_subcontracted) {
|
if (doc.is_subcontracted) {
|
||||||
if (doc.is_old_subcontracting_flow) {
|
if (doc.is_old_subcontracting_flow) {
|
||||||
if (me.has_unsupplied_items()) {
|
if (me.has_unsupplied_items()) {
|
||||||
@@ -231,11 +268,25 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_billed) < 100)
|
if(flt(doc.per_billed) < 100)
|
||||||
cur_frm.add_custom_button(__('Purchase Invoice'),
|
cur_frm.add_custom_button(__('Purchase Invoice'),
|
||||||
this.make_purchase_invoice, __('Create'));
|
this.make_purchase_invoice, __('Create'));
|
||||||
|
|
||||||
if(flt(doc.per_billed) < 100 && doc.status != "Delivered") {
|
if(flt(doc.per_billed) < 100 && doc.status != "Delivered") {
|
||||||
|
=======
|
||||||
|
// Please do not add precision in the below flt function
|
||||||
|
if (flt(doc.per_billed, precision("per_billed")) < 100)
|
||||||
|
this.frm.add_custom_button(
|
||||||
|
__("Purchase Invoice"),
|
||||||
|
() => {
|
||||||
|
me.make_purchase_invoice();
|
||||||
|
},
|
||||||
|
__("Create")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (flt(doc.per_billed, precision("per_billed")) < 100 && doc.status != "Delivered") {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
this.frm.add_custom_button(
|
this.frm.add_custom_button(
|
||||||
__('Payment'),
|
__('Payment'),
|
||||||
() => this.make_payment_entry(),
|
() => this.make_payment_entry(),
|
||||||
@@ -243,6 +294,7 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_billed) < 100) {
|
if(flt(doc.per_billed) < 100) {
|
||||||
this.frm.add_custom_button(__('Payment Request'),
|
this.frm.add_custom_button(__('Payment Request'),
|
||||||
function() { me.make_payment_request() }, __('Create'));
|
function() { me.make_payment_request() }, __('Create'));
|
||||||
@@ -252,6 +304,16 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends e
|
|||||||
cur_frm.add_custom_button(__('Subscription'), function() {
|
cur_frm.add_custom_button(__('Subscription'), function() {
|
||||||
erpnext.utils.make_subscription(doc.doctype, doc.name)
|
erpnext.utils.make_subscription(doc.doctype, doc.name)
|
||||||
}, __('Create'))
|
}, __('Create'))
|
||||||
|
=======
|
||||||
|
if (flt(doc.per_billed, precision("per_billed")) < 100) {
|
||||||
|
this.frm.add_custom_button(
|
||||||
|
__("Payment Request"),
|
||||||
|
function () {
|
||||||
|
me.make_payment_request();
|
||||||
|
},
|
||||||
|
__("Create")
|
||||||
|
);
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc.docstatus === 1 && !doc.inter_company_order_reference) {
|
if (doc.docstatus === 1 && !doc.inter_company_order_reference) {
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
frm.set_df_property('packed_items', 'cannot_add_rows', true);
|
frm.set_df_property('packed_items', 'cannot_add_rows', true);
|
||||||
frm.set_df_property('packed_items', 'cannot_delete_rows', true);
|
frm.set_df_property('packed_items', 'cannot_delete_rows', true);
|
||||||
},
|
},
|
||||||
|
<<<<<<< HEAD
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
if(
|
if(
|
||||||
frm.doc.docstatus === 1
|
frm.doc.docstatus === 1
|
||||||
@@ -62,6 +63,63 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
child_doctype: "Sales Order Detail",
|
child_doctype: "Sales Order Detail",
|
||||||
cannot_add_row: false,
|
cannot_add_row: false,
|
||||||
})
|
})
|
||||||
|
=======
|
||||||
|
|
||||||
|
refresh: function (frm) {
|
||||||
|
if (frm.doc.docstatus === 1) {
|
||||||
|
if (
|
||||||
|
frm.doc.status !== "Closed" &&
|
||||||
|
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"), () => {
|
||||||
|
erpnext.utils.update_child_items({
|
||||||
|
frm: frm,
|
||||||
|
child_docname: "items",
|
||||||
|
child_doctype: "Sales Order Detail",
|
||||||
|
cannot_add_row: false,
|
||||||
|
has_reserved_stock: frm.doc.__onload && frm.doc.__onload.has_reserved_stock,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Stock Reservation > Reserve button should only be visible if the SO has unreserved stock and no Pick List is created against the SO.
|
||||||
|
if (
|
||||||
|
frm.doc.__onload &&
|
||||||
|
frm.doc.__onload.has_unreserved_stock &&
|
||||||
|
flt(frm.doc.per_picked, precision("per_picked")) === 0
|
||||||
|
) {
|
||||||
|
frm.add_custom_button(
|
||||||
|
__("Reserve"),
|
||||||
|
() => frm.events.create_stock_reservation_entries(frm),
|
||||||
|
__("Stock Reservation")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stock Reservation > Unreserve button will be only visible if the SO has un-delivered reserved stock.
|
||||||
|
if (
|
||||||
|
frm.doc.__onload &&
|
||||||
|
frm.doc.__onload.has_reserved_stock &&
|
||||||
|
frappe.model.can_cancel("Stock Reservation Entry")
|
||||||
|
) {
|
||||||
|
frm.add_custom_button(
|
||||||
|
__("Unreserve"),
|
||||||
|
() => frm.events.cancel_stock_reservation_entries(frm),
|
||||||
|
__("Stock Reservation")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
frm.doc.items.forEach((item) => {
|
||||||
|
if (flt(item.stock_reserved_qty) > 0 && frappe.model.can_read("Stock Reservation Entry")) {
|
||||||
|
frm.add_custom_button(
|
||||||
|
__("Reserved Stock"),
|
||||||
|
() => frm.events.show_reserved_stock(frm),
|
||||||
|
__("Stock Reservation")
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,6 +261,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
|
|
||||||
if (doc.docstatus==1) {
|
if (doc.docstatus==1) {
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if(this.frm.has_perm("submit")) {
|
if(this.frm.has_perm("submit")) {
|
||||||
if(doc.status === 'On Hold') {
|
if(doc.status === 'On Hold') {
|
||||||
// un-hold
|
// un-hold
|
||||||
@@ -214,6 +273,24 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
// close
|
// close
|
||||||
this.frm.add_custom_button(__('Close'), () => this.close_sales_order(), __("Status"))
|
this.frm.add_custom_button(__('Close'), () => this.close_sales_order(), __("Status"))
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
} else if (doc.status === "Closed") {
|
||||||
|
// un-close
|
||||||
|
this.frm.add_custom_button(
|
||||||
|
__("Re-open"),
|
||||||
|
function () {
|
||||||
|
me.frm.cscript.update_status("Re-open", "Draft");
|
||||||
|
},
|
||||||
|
__("Status")
|
||||||
|
);
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
}
|
}
|
||||||
else if(doc.status === 'Closed') {
|
else if(doc.status === 'Closed') {
|
||||||
// un-close
|
// un-close
|
||||||
@@ -228,7 +305,14 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
&& !this.frm.doc.skip_delivery_note
|
&& !this.frm.doc.skip_delivery_note
|
||||||
|
|
||||||
if (this.frm.has_perm("submit")) {
|
if (this.frm.has_perm("submit")) {
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_delivered, 6) < 100 || flt(doc.per_billed) < 100) {
|
if(flt(doc.per_delivered, 6) < 100 || flt(doc.per_billed) < 100) {
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100 ||
|
||||||
|
flt(doc.per_billed, precision("per_billed")) < 100
|
||||||
|
) {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
// hold
|
// hold
|
||||||
this.frm.add_custom_button(__('Hold'), () => this.hold_sales_order(), __("Status"))
|
this.frm.add_custom_button(__('Hold'), () => this.hold_sales_order(), __("Status"))
|
||||||
// close
|
// close
|
||||||
@@ -237,9 +321,16 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
<<<<<<< HEAD
|
||||||
flt(doc.per_picked, 6) < 100
|
flt(doc.per_picked, 6) < 100
|
||||||
&& flt(doc.per_delivered, 6) < 100
|
&& flt(doc.per_delivered, 6) < 100
|
||||||
&& frappe.model.can_create("Pick List")
|
&& frappe.model.can_create("Pick List")
|
||||||
|
=======
|
||||||
|
(!doc.__onload || !doc.__onload.has_reserved_stock) &&
|
||||||
|
flt(doc.per_picked, precision("per_picked")) < 100 &&
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100 &&
|
||||||
|
frappe.model.can_create("Pick List")
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
) {
|
) {
|
||||||
this.frm.add_custom_button(__('Pick List'), () => this.create_pick_list(), __('Create'));
|
this.frm.add_custom_button(__('Pick List'), () => this.create_pick_list(), __('Create'));
|
||||||
}
|
}
|
||||||
@@ -250,10 +341,17 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
const order_is_a_custom_sale = ["Sales", "Shopping Cart", "Maintenance"].indexOf(doc.order_type) === -1;
|
const order_is_a_custom_sale = ["Sales", "Shopping Cart", "Maintenance"].indexOf(doc.order_type) === -1;
|
||||||
|
|
||||||
// delivery note
|
// delivery note
|
||||||
|
<<<<<<< HEAD
|
||||||
if(
|
if(
|
||||||
flt(doc.per_delivered, 6) < 100
|
flt(doc.per_delivered, 6) < 100
|
||||||
&& (order_is_a_sale || order_is_a_custom_sale)
|
&& (order_is_a_sale || order_is_a_custom_sale)
|
||||||
&& allow_delivery
|
&& allow_delivery
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100 &&
|
||||||
|
(order_is_a_sale || order_is_a_custom_sale) &&
|
||||||
|
allow_delivery
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
) {
|
) {
|
||||||
if (frappe.model.can_create("Delivery Note")) {
|
if (frappe.model.can_create("Delivery Note")) {
|
||||||
this.frm.add_custom_button(
|
this.frm.add_custom_button(
|
||||||
@@ -272,7 +370,14 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sales invoice
|
// sales invoice
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_billed, 6) < 100 && frappe.model.can_create("Sales Invoice")) {
|
if(flt(doc.per_billed, 6) < 100 && frappe.model.can_create("Sales Invoice")) {
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_billed, precision("per_billed")) < 100 &&
|
||||||
|
frappe.model.can_create("Sales Invoice")
|
||||||
|
) {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
this.frm.add_custom_button(
|
this.frm.add_custom_button(
|
||||||
__("Sales Invoice"),
|
__("Sales Invoice"),
|
||||||
() => me.make_sales_invoice(),
|
() => me.make_sales_invoice(),
|
||||||
@@ -282,12 +387,19 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
|
|
||||||
// material request
|
// material request
|
||||||
if (
|
if (
|
||||||
|
<<<<<<< HEAD
|
||||||
(
|
(
|
||||||
!doc.order_type
|
!doc.order_type
|
||||||
|| (order_is_a_sale || order_is_a_custom_sale)
|
|| (order_is_a_sale || order_is_a_custom_sale)
|
||||||
&& flt(doc.per_delivered, 6) < 100
|
&& flt(doc.per_delivered, 6) < 100
|
||||||
)
|
)
|
||||||
&& frappe.model.can_create("Material Request")
|
&& frappe.model.can_create("Material Request")
|
||||||
|
=======
|
||||||
|
(!doc.order_type ||
|
||||||
|
((order_is_a_sale || order_is_a_custom_sale) &&
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100)) &&
|
||||||
|
frappe.model.can_create("Material Request")
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
) {
|
) {
|
||||||
this.frm.add_custom_button(
|
this.frm.add_custom_button(
|
||||||
__('Material Request'),
|
__('Material Request'),
|
||||||
@@ -311,8 +423,16 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
}
|
}
|
||||||
|
|
||||||
// maintenance
|
// maintenance
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) {
|
if(flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) {
|
||||||
if(frappe.model.can_create("Maintenance Visit")) {
|
if(frappe.model.can_create("Maintenance Visit")) {
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100 &&
|
||||||
|
(order_is_maintenance || order_is_a_custom_sale)
|
||||||
|
) {
|
||||||
|
if (frappe.model.can_create("Maintenance Visit")) {
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
this.frm.add_custom_button(
|
this.frm.add_custom_button(
|
||||||
__('Maintenance Visit'),
|
__('Maintenance Visit'),
|
||||||
() => this.make_maintenance_visit(),
|
() => this.make_maintenance_visit(),
|
||||||
@@ -330,6 +450,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
}
|
}
|
||||||
|
|
||||||
// project
|
// project
|
||||||
|
<<<<<<< HEAD
|
||||||
if(flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) {
|
if(flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) {
|
||||||
this.frm.add_custom_button(__('Project'), () => this.make_project(), __('Create'));
|
this.frm.add_custom_button(__('Project'), () => this.make_project(), __('Create'));
|
||||||
}
|
}
|
||||||
@@ -342,6 +463,13 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
|||||||
},
|
},
|
||||||
__('Create')
|
__('Create')
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
if (
|
||||||
|
flt(doc.per_delivered, precision("per_delivered")) < 100 &&
|
||||||
|
frappe.model.can_create("Project")
|
||||||
|
) {
|
||||||
|
this.frm.add_custom_button(__("Project"), () => this.make_project(), __("Create"));
|
||||||
|
>>>>>>> 1a1e2c7e01 (fix: use field precision instead of hardcoded precision in so and po)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|||||||
Reference in New Issue
Block a user