From 7145b040f12a62be9f0ac945c69ac221debd7c03 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Wed, 29 Nov 2023 13:21:24 +0530 Subject: [PATCH] fix(ux): hide `Create Purchase Receipt` button for Subcontract Return --- .../subcontracting_receipt.js | 68 ++++++++++--------- .../subcontracting_receipt.py | 12 ++-- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js index 86b4d9bf1c..575c4eda73 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js @@ -52,49 +52,51 @@ frappe.ui.form.on('Subcontracting Receipt', { frappe.set_route('query-report', 'General Ledger'); }, __('View')); - frm.add_custom_button(__('Purchase Receipt'), () => { - frappe.model.open_mapped_doc({ - method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt', - frm: frm, - freeze: true, - freeze_message: __('Creating Purchase Receipt ...') - }); - }, __('Create')); + if (frm.doc.is_return === 0) { + frm.add_custom_button(__('Purchase Receipt'), () => { + frappe.model.open_mapped_doc({ + method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt', + frm: frm, + freeze: true, + freeze_message: __('Creating Purchase Receipt ...') + }); + }, __('Create')); + } } if (!frm.doc.is_return && frm.doc.docstatus === 1 && frm.doc.per_returned < 100) { frm.add_custom_button(__('Subcontract Return'), () => { - frappe.model.open_mapped_doc({ - method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_subcontract_return', - frm: frm - }); - }, __('Create')); + frappe.model.open_mapped_doc({ + method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_subcontract_return', + frm: frm + }); + }, __('Create')); frm.page.set_inner_btn_group_as_primary(__('Create')); } if (frm.doc.docstatus === 0) { frm.add_custom_button(__('Subcontracting Order'), () => { - if (!frm.doc.supplier) { - frappe.throw({ - title: __('Mandatory'), - message: __('Please Select a Supplier') - }); - } - - erpnext.utils.map_current_doc({ - method: 'erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt', - source_doctype: 'Subcontracting Order', - target: frm, - setters: { - supplier: frm.doc.supplier, - }, - get_query_filters: { - docstatus: 1, - per_received: ['<', 100], - company: frm.doc.company - } + if (!frm.doc.supplier) { + frappe.throw({ + title: __('Mandatory'), + message: __('Please Select a Supplier') }); - }, __('Get Items From')); + } + + erpnext.utils.map_current_doc({ + method: 'erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt', + source_doctype: 'Subcontracting Order', + target: frm, + setters: { + supplier: frm.doc.supplier, + }, + get_query_filters: { + docstatus: 1, + per_received: ['<', 100], + company: frm.doc.company + } + }); + }, __('Get Items From')); frm.fields_dict.supplied_items.grid.update_docfield_property('consumed_qty', 'read_only', frm.doc.__onload && frm.doc.__onload.backflush_based_on === 'BOM'); } diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index 000078f241..4f4a65044d 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -545,9 +545,11 @@ def make_subcontract_return(source_name, target_doc=None): @frappe.whitelist() def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False, notify=False): if isinstance(source_name, str): - source_name = frappe.get_doc("Subcontracting Receipt", source_name) + source_doc = frappe.get_doc("Subcontracting Receipt", source_name) + else: + source_doc = source_name - if not source_name.is_return: + if not source_doc.is_return: if not target_doc: target_doc = frappe.new_doc("Purchase Receipt") target_doc.is_subcontracted = 1 @@ -555,7 +557,7 @@ def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False target_doc = get_mapped_doc( "Subcontracting Receipt", - source_name.name, + source_doc.name, { "Subcontracting Receipt": { "doctype": "Purchase Receipt", @@ -573,7 +575,7 @@ def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False ) po_items_details = {} - for item in source_name.items: + for item in source_doc.items: if item.purchase_order and item.purchase_order_item: if item.purchase_order not in po_items_details: po_doc = frappe.get_doc("Purchase Order", item.purchase_order) @@ -599,7 +601,7 @@ def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False if not target_doc.items: frappe.throw( _("Purchase Order Item reference is missing in Subcontracting Receipt {0}").format( - source_name.name + source_doc.name ) )