From fe52c1f3543f95084fc49803e3c17cd0526e2c21 Mon Sep 17 00:00:00 2001 From: marination Date: Wed, 11 May 2022 14:54:22 +0530 Subject: [PATCH] fix: `set_missing_values` in SE and re-use the same on all SE mappings - `set_missing_values` in SE will set actual qty, transfer qty and calculate rate/amount - Re-use `set_missing_values` wherever SE is doc is being mapped (cherry picked from commit 90a8e924f5683147ae0f9f450ad0593d4081b80a) --- erpnext/buying/doctype/purchase_order/purchase_order.py | 4 +++- erpnext/manufacturing/doctype/job_card/job_card.py | 2 -- erpnext/public/js/controllers/transaction.js | 4 ++-- erpnext/stock/doctype/batch/batch.py | 1 + erpnext/stock/doctype/material_request/material_request.py | 2 +- erpnext/stock/doctype/pick_list/pick_list.py | 3 +-- erpnext/stock/doctype/purchase_receipt/purchase_receipt.py | 1 + erpnext/stock/doctype/stock_entry/stock_entry.py | 7 +++++++ erpnext/stock/doctype/stock_entry/stock_entry_utils.py | 2 ++ 9 files changed, 18 insertions(+), 8 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 582bd8d1db8..250faa7c88b 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -637,6 +637,8 @@ def make_rm_stock_entry(purchase_order, rm_items): } } stock_entry.add_to_stock_entry_detail(items_dict) + + stock_entry.set_missing_values() return stock_entry.as_dict() else: frappe.throw(_("No Items selected for transfer")) @@ -724,7 +726,7 @@ def make_return_stock_entry_for_subcontract(available_materials, po_doc, po_deta add_items_in_ste(ste_doc, value, value.qty, po_details) ste_doc.set_stock_entry_type() - ste_doc.calculate_rate_and_amount() + ste_doc.set_missing_values() return ste_doc diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index c8b37a9c80d..983b3b17e68 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -764,8 +764,6 @@ def make_stock_entry(source_name, target_doc=None): pending_fg_qty = flt(source.get("for_quantity", 0)) - flt(source.get("transferred_qty", 0)) target.fg_completed_qty = pending_fg_qty if pending_fg_qty > 0 else 0 - target.set_transfer_qty() - target.calculate_rate_and_amount() target.set_missing_values() target.set_stock_entry_type() diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 9d6ef1c868f..56a214283b3 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -1496,7 +1496,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ var me = this; var args = this._get_args(item); if (!(args.items && args.items.length)) { - if(calculate_taxes_and_totals) me.calculate_taxes_and_totals(); + if (calculate_taxes_and_totals) me.calculate_taxes_and_totals(); return; } @@ -1504,7 +1504,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ if (this.frm.doc.__onload && this.frm.doc.__onload.ignore_price_list) { // Calculate totals even though pricing rule is not applied. // `apply_pricing_rule` is triggered due to change in data which most likely contributes to Total. - if(calculate_taxes_and_totals) me.calculate_taxes_and_totals(); + if (calculate_taxes_and_totals) me.calculate_taxes_and_totals(); return; } diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py index 295a65ef8e6..551eb7dd8c8 100644 --- a/erpnext/stock/doctype/batch/batch.py +++ b/erpnext/stock/doctype/batch/batch.py @@ -238,6 +238,7 @@ def split_batch(batch_no, item_code, warehouse, qty, new_batch_id=None): ) ) stock_entry.set_stock_entry_type() + stock_entry.set_missing_values() stock_entry.insert() stock_entry.submit() diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 415c45cf1fe..55c9ac47e4c 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -600,7 +600,7 @@ def make_stock_entry(source_name, target_doc=None): if source.material_request_type == "Customer Provided": target.purpose = "Material Receipt" - target.run_method("calculate_rate_and_amount") + target.set_missing_values() target.set_stock_entry_type() target.set_job_card_data() diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 858481aa7b9..49cfbe2ce27 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -671,8 +671,7 @@ def create_stock_entry(pick_list): else: stock_entry = update_stock_entry_items_with_no_reference(pick_list, stock_entry) - stock_entry.set_actual_qty() - stock_entry.calculate_rate_and_amount() + stock_entry.set_missing_values() return stock_entry.as_dict() diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index db94beccbcf..cca3f05270c 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -993,6 +993,7 @@ def make_stock_entry(source_name, target_doc=None): def set_missing_values(source, target): target.stock_entry_type = "Material Transfer" target.purpose = "Material Transfer" + target.set_missing_values() doclist = get_mapped_doc( "Purchase Receipt", diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index f0566b08897..8ff11ee9b80 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -2196,6 +2196,12 @@ class StockEntry(StockController): return sorted(list(set(get_serial_nos(self.pro_doc.serial_no)) - set(used_serial_nos))) + def set_missing_values(self): + "Updates rate and availability of all the items of mapped doc." + self.set_transfer_qty() + self.set_actual_qty() + self.calculate_rate_and_amount() + @frappe.whitelist() def move_sample_to_retention_warehouse(company, items): @@ -2245,6 +2251,7 @@ def move_sample_to_retention_warehouse(company, items): def make_stock_in_entry(source_name, target_doc=None): def set_missing_values(source, target): target.set_stock_entry_type() + target.set_missing_values() def update_item(source_doc, target_doc, source_parent): target_doc.t_warehouse = "" diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py index 85ccc5b13fc..2a5bd06be61 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py @@ -133,6 +133,8 @@ def make_stock_entry(**args): ) s.set_stock_entry_type() + s.set_missing_values() + if not args.do_not_save: s.insert() if not args.do_not_submit: