From b6d6b8420d1edf3a1c92f249c0a913772addd494 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 27 Jun 2016 14:48:26 +0530 Subject: [PATCH] [fix] add filters and child doc name in previous link mapper --- .../purchase_invoice/purchase_invoice.py | 17 ++++++++++++----- .../doctype/sales_invoice/sales_invoice.py | 17 ++++++++++++----- .../doctype/purchase_order/purchase_order.py | 10 ++++++---- .../selling/doctype/sales_order/sales_order.py | 10 ++++++---- .../doctype/delivery_note/delivery_note.py | 10 ++++++---- .../purchase_receipt/purchase_receipt.py | 10 ++++++---- erpnext/utilities/transaction_base.py | 2 +- 7 files changed, 49 insertions(+), 27 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 8d7f6534d9d..1e02415beb1 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -38,10 +38,20 @@ class PurchaseInvoice(BuyingController): self.prev_link_mapper = { "Purchase Order": { - "fieldname": "purchase_order" + "fieldname": "purchase_order", + "doctype": "Purchase Invoice Item", + "filters": [ + ["Purchase Invoice Item", "parent", "=", self.name], + ["Purchase Invoice Item", "purchase_order", "!=", ""] + ] }, "Purchase Receipt": { - "fieldname": "purchase_receipt" + "fieldname": "purchase_receipt", + "doctype": "Purchase Invoice Item", + "filters": [ + ["Purchase Invoice Item", "parent", "=", self.item], + ["Purchase Invoice Item", "purchase_receipt", "!=", ""] + ] } } @@ -672,9 +682,6 @@ class PurchaseInvoice(BuyingController): def on_recurring(self, reference_doc): self.due_date = None - - def get_link_filters(self, for_doctype): - return super(PurchaseInvoice, self).get_link_filters(for_doctype) @frappe.whitelist() def make_debit_note(source_name, target_doc=None): diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index bbbbccf22f1..1a8eae39d72 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -41,10 +41,20 @@ class SalesInvoice(SellingController): self.prev_link_mapper = { "Sales Order": { - "fieldname": "sales_order" + "fieldname": "sales_order", + "doctype": "Sales Invoice Item", + "filters": [ + ["Sales Invoice Item", "parent", "=", self.name], + ["Sales Invoice Item", "sales_order", "!=", ""] + ] }, "Delivery Note": { - "fieldname": "delivery_note" + "fieldname": "delivery_note", + "doctype": "Sales Invoice Item", + "filters": [ + ["Sales Invoice Item", "parent", "=", self.name], + ["Sales Invoice Item", "delivery_note", "!=", ""] + ] } } @@ -705,9 +715,6 @@ class SalesInvoice(SellingController): self.set(fieldname, reference_doc.get(fieldname)) self.due_date = None - - def get_link_filters(self, for_doctype): - return super(SalesInvoice, self).get_link_filters(for_doctype) def get_list_context(context=None): from erpnext.controllers.website_list_for_contact import get_list_context diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 9c7288c0650..d4b22210954 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -35,7 +35,12 @@ class PurchaseOrder(BuyingController): self.prev_link_mapper = { "Supplier Quotation": { - "fieldname": "supplier_quotation" + "fieldname": "supplier_quotation", + "doctype": "Purchase Order Item", + "filters": [ + ["Purchase Order Item", "parent", "=", self.name], + ["Purchase Order Item", "supplier_quotation", "!=", ""] + ] } } @@ -241,9 +246,6 @@ class PurchaseOrder(BuyingController): if item.delivered_by_supplier == 1: item.received_qty = item.qty - def get_link_filters(self, for_doctype): - return super(PurchaseOrder, self).get_link_filters(for_doctype) - @frappe.whitelist() def close_or_unclose_purchase_orders(names, status): if not frappe.has_permission("Purchase Order", "write"): diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index a34c12afa9e..8103756cfd9 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -26,7 +26,12 @@ class SalesOrder(SellingController): self.prev_link_mapper = { "Quotation": { - "fieldname": "prevdoc_docname" + "fieldname": "prevdoc_docname", + "doctype": "Sales Order Item", + "filters": [ + ["Sales Order Item", "parent", "=", self.name], + ["Sales Order Item", "prevdoc_docname", "!=", ""] + ] } } @@ -315,9 +320,6 @@ class SalesOrder(SellingController): mcount = month_map[reference_doc.recurring_type] self.set("delivery_date", get_next_date(reference_doc.delivery_date, mcount, cint(reference_doc.repeat_on_day_of_month))) - - def get_link_filters(self, for_doctype): - return super(SalesOrder, self).get_link_filters(for_doctype) def get_list_context(context=None): from erpnext.controllers.website_list_for_contact import get_list_context diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 7d0cdcd1f55..d8defc0d4d5 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -63,7 +63,12 @@ class DeliveryNote(SellingController): self.prev_link_mapper = { "Sales Order": { - "fieldname": "against_sales_order" + "fieldname": "against_sales_order", + "doctype": "Delivery Note Item", + "filters": [ + ["Delivery Note Item", "parent", "=", self.name], + ["Delivery Note Item", "against_sales_order", "!=", ""] + ] } } @@ -289,9 +294,6 @@ class DeliveryNote(SellingController): dn_doc.update_billing_percentage(update_modified=update_modified) self.load_from_db() - - def get_link_filters(self, for_doctype): - return super(DeliveryNote, self).get_link_filters(for_doctype) def update_billed_amount_based_on_so(so_detail, update_modified=True): # Billed against Sales Order directly diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 751d3219328..6c72d6bf997 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -48,7 +48,12 @@ class PurchaseReceipt(BuyingController): self.prev_link_mapper = { "Purchase Order": { - "fieldname": "prevdoc_docname" + "fieldname": "prevdoc_docname", + "doctype": "Purchase Receipt Item", + "filters": [ + ["Purchase Receipt Item", "parent", "=", self.name], + ["Purchase Receipt Item", "prevdoc_docname", "!=", ""] + ] } } @@ -339,9 +344,6 @@ class PurchaseReceipt(BuyingController): self.load_from_db() - def get_link_filters(self, for_doctype): - return super(PurchaseReceipt, self).get_link_filters(for_doctype) - def update_billed_amount_based_on_po(po_detail, update_modified=True): # Billed against Sales Order directly billed_against_po = frappe.db.sql("""select sum(amount) from `tabPurchase Invoice Item` diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py index 91055537b4d..3cc79ef713a 100644 --- a/erpnext/utilities/transaction_base.py +++ b/erpnext/utilities/transaction_base.py @@ -108,7 +108,7 @@ class TransactionBase(StatusUpdater): .format(d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate)) def get_link_filters(self, for_doctype): - if self.prev_link_mapper.get(for_doctype): + if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype): fieldname = self.prev_link_mapper[for_doctype]["fieldname"] values = filter(None, tuple([item.as_dict()[fieldname] for item in self.items]))