fix: produced_qty field hidden and not updated in sales order item (#19037)
* fix: produced_qty field hidden and not updated in sales order item
* fix: added patch for old sales orders
* fix: produced_qty for sales order item linked to multiple work orders
* fix: comment
* fix: function for updating produced_qty in SO Item
* fix: remove frappe.db.commit
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index a636b87..24b798b 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -213,6 +213,9 @@
self.db_set(fieldname, qty)
+ from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item
+ update_produced_qty_in_so_item(self.sales_order_item)
+
if self.production_plan:
self.update_production_plan_status()
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index a001d16..722baaf 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -636,4 +636,5 @@
erpnext.patches.v12_0.move_credit_limit_to_customer_credit_limit
erpnext.patches.v12_0.add_variant_of_in_item_attribute_table
erpnext.patches.v12_0.rename_bank_account_field_in_journal_entry_account
-erpnext.patches.v12_0.create_default_energy_point_rules
\ No newline at end of file
+erpnext.patches.v12_0.create_default_energy_point_rules
+erpnext.patches.v12_0.set_produced_qty_field_in_sales_order_for_work_order
diff --git a/erpnext/patches/v12_0/set_produced_qty_field_in_sales_order_for_work_order.py b/erpnext/patches/v12_0/set_produced_qty_field_in_sales_order_for_work_order.py
new file mode 100644
index 0000000..44d8fa7
--- /dev/null
+++ b/erpnext/patches/v12_0/set_produced_qty_field_in_sales_order_for_work_order.py
@@ -0,0 +1,10 @@
+import frappe
+from frappe.utils import flt
+from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item
+
+def execute():
+ frappe.reload_doctype('Sales Order Item')
+ frappe.reload_doctype('Sales Order')
+ sales_order_items = frappe.db.get_all('Sales Order Item', ['name'])
+ for so_item in sales_order_items:
+ update_produced_qty_in_so_item(so_item.get('name'))
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 12b9a8e..e60be5a 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -1023,3 +1023,15 @@
doc.set_item_locations()
return doc
+
+def update_produced_qty_in_so_item(sales_order_item):
+ #for multiple work orders against same sales order item
+ linked_wo_with_so_item = frappe.db.get_all('Work Order', ['produced_qty'], {
+ 'sales_order_item': sales_order_item,
+ 'docstatus': 1
+ })
+ if len(linked_wo_with_so_item) > 0:
+ total_produced_qty = 0
+ for wo in linked_wo_with_so_item:
+ total_produced_qty += flt(wo.get('produced_qty'))
+ frappe.db.set_value('Sales Order Item', sales_order_item, 'produced_qty', total_produced_qty)
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index 01dfc7d..b94dce1 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -110,6 +110,7 @@
"read_only": 1
},
{
+ "default": "0",
"fieldname": "ensure_delivery_based_on_produced_serial_no",
"fieldtype": "Check",
"label": "Ensure Delivery Based on Produced Serial No"
@@ -381,6 +382,7 @@
"read_only": 1
},
{
+ "default": "0",
"fieldname": "is_free_item",
"fieldtype": "Check",
"label": "Is Free Item",
@@ -436,6 +438,7 @@
"print_hide": 1
},
{
+ "default": "0",
"fieldname": "delivered_by_supplier",
"fieldtype": "Check",
"label": "Supplier delivers to Customer",
@@ -662,6 +665,7 @@
},
{
"allow_on_submit": 1,
+ "default": "0",
"fieldname": "page_break",
"fieldtype": "Check",
"label": "Page Break",
@@ -689,7 +693,6 @@
"description": "For Production",
"fieldname": "produced_qty",
"fieldtype": "Float",
- "hidden": 1,
"label": "Produced Quantity",
"oldfieldname": "produced_qty",
"oldfieldtype": "Currency",
@@ -740,7 +743,7 @@
],
"idx": 1,
"istable": 1,
- "modified": "2019-05-01 17:52:32.810797",
+ "modified": "2019-09-13 12:18:54.903107",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order Item",