diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 66ac9582b2dd..d6c5885891e3 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -265,7 +265,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } const me = this; - if (!this.frm.is_new() && this.frm.doc.docstatus === 0) { + if (!this.frm.is_new() && this.frm.doc.docstatus === 0 && frappe.model.can_create("Quality Inspection")) { this.frm.add_custom_button(__("Quality Inspection(s)"), () => { me.make_quality_inspection(); }, __("Create")); diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index 77545e0e1ad4..123796701900 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -85,6 +85,7 @@ frappe.ui.form.on("Delivery Note", { erpnext.stock.delivery_note.set_print_hide(frm.doc); }, +<<<<<<< HEAD refresh: function(frm) { if (frm.doc.docstatus === 1 && frm.doc.is_return === 1 && frm.doc.per_billed !== 100) { frm.add_custom_button(__('Credit Note'), function() { @@ -94,9 +95,33 @@ frappe.ui.form.on("Delivery Note", { }) }, __('Create')); frm.page.set_inner_btn_group_as_primary(__('Create')); +======= + refresh: function (frm) { + if ( + frm.doc.docstatus === 1 && + frm.doc.is_return === 1 && + frm.doc.per_billed !== 100 && + frappe.model.can_create("Sales Invoice") + ) { + frm.add_custom_button( + __("Credit Note"), + function () { + frappe.model.open_mapped_doc({ + method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice", + frm: cur_frm, + }); + }, + __("Create") + ); + frm.page.set_inner_btn_group_as_primary(__("Create")); +>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions) } - if (frm.doc.docstatus == 1 && !frm.doc.inter_company_reference) { + if ( + frm.doc.docstatus == 1 && + !frm.doc.inter_company_reference && + frappe.model.can_create("Purchase Receipt") + ) { let internal = frm.doc.is_internal_customer; if (internal) { let button_label = (frm.doc.company === frm.doc.represents_company) ? "Internal Purchase Receipt" : @@ -135,6 +160,7 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn refresh(doc, dt, dn) { var me = this; super.refresh(); +<<<<<<< HEAD if ((!doc.is_return) && (doc.status!="Closed" || this.frm.is_new())) { if (this.frm.doc.docstatus===0) { this.frm.add_custom_button(__('Sales Order'), @@ -193,6 +219,109 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn }) }, __('Create') ); } +======= + if ( + !doc.is_return && + (doc.status != "Closed" || this.frm.is_new()) && + this.frm.has_perm("write") && + frappe.model.can_read("Sales Order") && + this.frm.doc.docstatus === 0 + ) { + this.frm.add_custom_button( + __("Sales Order"), + function () { + if (!me.frm.doc.customer) { + frappe.throw({ + title: __("Mandatory"), + message: __("Please Select a Customer"), + }); + } + erpnext.utils.map_current_doc({ + method: "erpnext.selling.doctype.sales_order.sales_order.make_delivery_note", + args: { + for_reserved_stock: 1, + }, + source_doctype: "Sales Order", + target: me.frm, + setters: { + customer: me.frm.doc.customer, + }, + get_query_filters: { + docstatus: 1, + status: ["not in", ["Closed", "On Hold"]], + per_delivered: ["<", 99.99], + company: me.frm.doc.company, + project: me.frm.doc.project || undefined, + }, + }); + }, + __("Get Items From") + ); + } + + if (!doc.is_return && doc.status != "Closed" && frappe.model.can_create("Shipment")) { + if (doc.docstatus == 1) { + this.frm.add_custom_button( + __("Shipment"), + function () { + me.make_shipment(); + }, + __("Create") + ); + } + + if ( + flt(doc.per_installed, 2) < 100 && + doc.docstatus == 1 && + frappe.model.can_create("Installation Note") + ) { + this.frm.add_custom_button( + __("Installation Note"), + function () { + me.make_installation_note(); + }, + __("Create") + ); + } + + if (doc.docstatus == 1 && this.frm.has_perm("create")) { + this.frm.add_custom_button( + __("Sales Return"), + function () { + me.make_sales_return(); + }, + __("Create") + ); + } + + if (doc.docstatus == 1 && frappe.model.can_create("Delivery Trip")) { + this.frm.add_custom_button( + __("Delivery Trip"), + function () { + me.make_delivery_trip(); + }, + __("Create") + ); + } + + if ( + doc.docstatus == 0 && + !doc.__islocal && + doc.__onload && + doc.__onload.has_unpacked_items && + frappe.model.can_create("Packing Slip") + ) { + this.frm.add_custom_button( + __("Packing Slip"), + function () { + frappe.model.open_mapped_doc({ + method: "erpnext.stock.doctype.delivery_note.delivery_note.make_packing_slip", + frm: me.frm, + }); + }, + __("Create") + ); +>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions) } if (!doc.__islocal && doc.docstatus==1) { @@ -211,7 +340,17 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn } } +<<<<<<< HEAD if(doc.docstatus==1 && !doc.is_return && doc.status!="Closed" && flt(doc.per_billed) < 100) { +======= + if ( + doc.docstatus == 1 && + !doc.is_return && + doc.status != "Closed" && + flt(doc.per_billed) < 100 && + frappe.model.can_create("Sales Invoice") + ) { +>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions) // show Make Invoice button only if Delivery Note is not created from Sales Invoice var from_sales_invoice = false; from_sales_invoice = me.frm.doc.items.some(function(item) {