Set po nos in DN and SI (#13290)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index e00f075..2bd1447 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -687,12 +687,12 @@
"in_standard_filter": 0,
"label": "Customer's Purchase Order",
"length": 0,
- "no_copy": 0,
+ "no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
- "read_only": 1,
+ "read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
@@ -4683,7 +4683,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2018-01-12 15:19:54.711885",
+ "modified": "2018-03-13 15:19:54.711885",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 6b18b82..ad32ab5 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -38,6 +38,7 @@
self.validate_max_discount()
self.validate_selling_price()
self.set_qty_as_per_stock_uom()
+ self.set_po_nos()
check_active_sales_items(self)
def set_missing_values(self, for_validate=False):
@@ -326,9 +327,16 @@
"actual_qty": -1*flt(d.qty),
"incoming_rate": return_rate
}))
-
self.make_sl_entries(sl_entries)
+ def set_po_nos(self):
+ if self.doctype in ("Delivery Note", "Sales Invoice"):
+ ref_fieldname = "against_sales_order" if self.doctype == "Delivery Note" else "sales_order"
+ sales_orders = list(set([d.get(ref_fieldname) for d in self.items]))
+ if sales_orders:
+ po_nos = frappe.get_all('Sales Order', 'po_no', filters = {'name': ('in', sales_orders)})
+ self.po_no = ', '.join(list(set([d.po_no for d in po_nos if d.po_no])))
+
def check_active_sales_items(obj):
for d in obj.get("items"):
if d.item_code:
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 2f41307..9e30939 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -5,7 +5,7 @@
import frappe
import json
import frappe.utils
-from frappe.utils import cstr, flt, getdate, comma_and, cint, nowdate, add_days
+from frappe.utils import cstr, flt, getdate, comma_and, cint
from frappe import _
from frappe.model.utils import get_fetch_values
from frappe.model.mapper import get_mapped_doc
@@ -477,13 +477,9 @@
@frappe.whitelist()
def make_delivery_note(source_name, target_doc=None):
def set_missing_values(source, target):
- so = [d.against_sales_order for d in target.items]
- if so:
- po_no_list = frappe.get_all('Sales Order', 'po_no', filters = {'name': ('in', so)})
- target.po_no = ', '.join(d.po_no for d in po_no_list if d.po_no)
-
target.ignore_pricing_rule = 1
target.run_method("set_missing_values")
+ target.run_method("set_po_nos")
target.run_method("calculate_taxes_and_totals")
# set company address
@@ -544,6 +540,7 @@
target.ignore_pricing_rule = 1
target.flags.ignore_permissions = True
target.run_method("set_missing_values")
+ target.run_method("set_po_nos")
target.run_method("calculate_taxes_and_totals")
# set company address
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json
index f126b58..5c7d116 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.json
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.json
@@ -508,14 +508,14 @@
"in_standard_filter": 0,
"label": "Customer's Purchase Order No",
"length": 0,
- "no_copy": 0,
+ "no_copy": 1,
"oldfieldname": "po_no",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"print_width": "100px",
- "read_only": 1,
+ "read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
@@ -3701,7 +3701,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2018-01-12 15:27:44.471335",
+ "modified": "2018-03-13 15:35:02.234116",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note",
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 65f384f..07c105c 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -387,6 +387,7 @@
target.is_pos = 0
target.ignore_pricing_rule = 1
target.run_method("set_missing_values")
+ target.run_method("set_po_nos")
if len(target.get("items")) == 0:
frappe.throw(_("All these items have already been invoiced"))