From 99ae0439d7bbb9e097cc999faf954b12dc1d1bc0 Mon Sep 17 00:00:00 2001 From: Shreya Date: Fri, 20 Apr 2018 14:15:15 +0530 Subject: [PATCH] mapping of relevant fields --- .../purchase_invoice/purchase_invoice.py | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index d7e14e1f6c4..66515e34525 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -73,6 +73,7 @@ class PurchaseInvoice(BuyingController): self.validate_fixed_asset_account() self.create_remarks() self.set_status() + self.validate_inter_company_supplier() def validate_cash(self): if not self.cash_bank_account and flt(self.paid_amount): @@ -119,6 +120,21 @@ class PurchaseInvoice(BuyingController): self.party_account_currency = account.account_currency + def validate_inter_company_supplier(self): + if frappe.db.get_value("Supplier", self.supplier, "is_internal_supplier") == 1: + if self.inter_company_invoice_reference: + doc = frappe.get_doc("Sales Invoice", self.inter_company_invoice_reference) + if not frappe.db.get_value("Supplier", {"represents_company": doc.company}, "name") == self.supplier: + frappe.throw(_("Invalid Supplier for Inter Company Invoice")) + if not frappe.db.get_value("Customer", {"name": doc.customer}, "represents_company") == self.company: + frappe.throw(_("Invalid Company for Inter Company Invoice")) + else: + companies = frappe.db.sql("""select company from `tabAllowed To Transact With` + where parenttype = "Supplier" and parent = '{0}'""".format(self.supplier), as_list = 1) + companies = [company[0] for company in companies] + if not self.company in companies: + frappe.throw(_("Supplier not allowed to transact with {0}. Please change the Company.").format(self.company)) + def check_for_closed_status(self): check_list = [] @@ -303,6 +319,12 @@ class PurchaseInvoice(BuyingController): self.update_project() self.update_fixed_asset() + self.update_linked_invoice() + + def update_linked_invoice(self): + if self.inter_company_invoice_reference: + frappe.db.set_value("Sales Invoice", self.inter_company_invoice_reference,\ + "inter_company_invoice_reference", self.name) def update_fixed_asset(self): for d in self.get("items"): @@ -635,6 +657,8 @@ class PurchaseInvoice(BuyingController): self.update_fixed_asset() frappe.db.set(self, 'status', 'Cancelled') + self.unlink_inter_company_invoice() + def update_project(self): project_list = [] for d in self.items: @@ -672,6 +696,13 @@ class PurchaseInvoice(BuyingController): pi = pi[0][0] frappe.throw(_("Supplier Invoice No exists in Purchase Invoice {0}".format(pi))) + def unlink_inter_company_invoice(self): + if self.inter_company_invoice_reference: + frappe.db.set_value("Purchase Invoice", self.name,\ + "inter_company_invoice_reference", "") + frappe.db.set_value("Sales Invoice", self.inter_company_invoice_reference,\ + "inter_company_invoice_reference", "") + def update_billing_status_in_pr(self, update_modified=True): updated_pr = [] for d in self.get("items"): @@ -733,4 +764,9 @@ def make_stock_entry(source_name, target_doc=None): } }, target_doc) - return doc \ No newline at end of file + return doc + +@frappe.whitelist() +def make_inter_company_sales_invoice(source_name, target_doc=None): + from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_inter_company_invoice + return make_inter_company_invoice("Purchase Invoice", source_name, target_doc) \ No newline at end of file