[minor] sales invoice to delivery note mapping and prevdoc validation
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index a4bbb2a..35ea831 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -60,7 +60,7 @@
cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
- if(doc.is_pos==1 && doc.update_stock!=1)
+ if(cint(doc.update_stock)!=1)
cur_frm.add_custom_button('Make Delivery', cur_frm.cscript['Make Delivery Note']);
if(doc.outstanding_amount!=0)
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index ceab40a..d875247 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -983,3 +983,49 @@
and tabAccount.%(key)s LIKE '%(txt)s'
%(mcond)s""" % {'company': filters['company'], 'key': searchfield,
'txt': "%%%s%%" % txt, 'mcond':get_match_cond(doctype, searchfield)})
+
+
+@webnotes.whitelist()
+def make_delivery_note(source_name, target_doclist=None):
+ from webnotes.model.mapper import get_mapped_doclist
+
+ def set_missing_values(source, target):
+ bean = webnotes.bean(target)
+ bean.run_method("onload_post_render")
+
+ def update_item(obj, target, source_parent):
+ target.amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.basic_rate)
+ target.export_amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.export_rate)
+ target.qty = flt(obj.qty) - flt(obj.delivered_qty)
+
+ doclist = get_mapped_doclist("Sales Invoice", source_name, {
+ "Sales Invoice": {
+ "doctype": "Delivery Note",
+ "validation": {
+ "docstatus": ["=", 1]
+ }
+ },
+ "Sales Invoice Item": {
+ "doctype": "Delivery Note Item",
+ "field_map": {
+ "name": "prevdoc_detail_docname",
+ "parent": "prevdoc_docname",
+ "parenttype": "prevdoc_doctype",
+ "serial_no": "serial_no"
+ },
+ "postprocess": update_item
+ },
+ "Sales Taxes and Charges": {
+ "doctype": "Sales Taxes and Charges",
+ "add_if_empty": True
+ },
+ "Sales Team": {
+ "doctype": "Sales Team",
+ "field_map": {
+ "incentives": "incentives"
+ },
+ "add_if_empty": True
+ }
+ }, target_doclist, set_missing_values)
+
+ return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 9b6bb0f..dc9f34d 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -262,4 +262,5 @@
"patches.july_2013.p08_custom_print_format_net_total_export",
"patches.july_2013.p09_remove_website_pyc",
"patches.july_2013.p10_change_partner_user_to_website_user",
+ "execute:webnotes.bean('Selling Settings').save()",
]
\ No newline at end of file
diff --git a/selling/doctype/selling_settings/selling_settings.py b/selling/doctype/selling_settings/selling_settings.py
index 4716228..febf375 100644
--- a/selling/doctype/selling_settings/selling_settings.py
+++ b/selling/doctype/selling_settings/selling_settings.py
@@ -8,5 +8,5 @@
self.doc, self.doclist = d, dl
def validate(self):
- for key in ["cust_master_name", "customer_group", "territory", "allow_same_sales_rate"]:
+ for key in ["cust_master_name", "customer_group", "territory", "maintain_same_sales_rate"]:
webnotes.conn.set_default(key, self.doc.fields.get(key, ""))
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index f7283eb..3f8a438 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -113,21 +113,24 @@
if not self.doc.installation_status: self.doc.installation_status = 'Not Installed'
def validate_with_previous_doc(self):
- super(DocType, self).validate_with_previous_doc(self.tname, {
- "Sales Order": {
- "ref_dn_field": "prevdoc_docname",
- "compare_fields": [["customer", "="], ["company", "="], ["project_name", "="],
- ["currency", "="]],
- },
- })
- if cint(webnotes.defaults.get_global_default('maintain_same_sales_rate')):
+ prev_doctype = [d.prevdoc_doctype for d in self.doclist.get({
+ "parentfield": "delivery_note_details", "prevdoc_doctype": ["!=", ""]})]
+ if prev_doctype:
super(DocType, self).validate_with_previous_doc(self.tname, {
- "Sales Order Item": {
- "ref_dn_field": "prevdoc_detail_docname",
- "compare_fields": [["export_rate", "="]],
- "is_child_table": True
- }
+ prev_doctype[0]: {
+ "ref_dn_field": "prevdoc_docname",
+ "compare_fields": [["customer", "="], ["company", "="], ["project_name", "="],
+ ["currency", "="]],
+ },
})
+ if cint(webnotes.defaults.get_global_default('maintain_same_sales_rate')):
+ super(DocType, self).validate_with_previous_doc(self.tname, {
+ prev_doctype[0] + " Item": {
+ "ref_dn_field": "prevdoc_detail_docname",
+ "compare_fields": [["export_rate", "="]],
+ "is_child_table": True
+ }
+ })
def validate_proj_cust(self):