diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index fb143b45cef..f30af0c349e 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -1180,10 +1180,14 @@ def set_payment_terms_from_po(doc): purchase_order = doc.get('items')[0].get('purchase_order') - if linked_po_has_payment_terms(doc, purchase_order) and all_items_have_same_po(doc, purchase_order): + if purchase_order and all_items_have_same_po(doc, purchase_order): purchase_order = frappe.get_cached_doc('Purchase Order', purchase_order) + else: + return + + if has_default_payment_terms(doc) and not has_default_payment_terms(purchase_order): + doc['payment_schedule'] = [] doc['payment_terms_template'] = purchase_order.payment_terms_template - doc['terms'] = purchase_order.payment_terms_template for schedule in purchase_order.payment_schedule: payment_schedule = { @@ -1200,9 +1204,6 @@ def set_payment_terms_from_po(doc): return doc -def linked_po_has_payment_terms(doc, purchase_order): - return not doc.get('payment_schedule') and purchase_order - def all_items_have_same_po(doc, purchase_order): for item in doc.get('items'): if item.get('purchase_order') != purchase_order: @@ -1210,6 +1211,11 @@ def all_items_have_same_po(doc, purchase_order): return True +def has_default_payment_terms(doc): + if doc.get('payment_schedule')[0].get('invoice_portion') == 100: + return True + return False + # to get details of purchase invoice/receipt from which this doc was created for exchange rate difference handling def get_purchase_document_details(doc): if doc.doctype == 'Purchase Invoice':