From b7a5502b974bafa02bab1639842f2a497b883fb4 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 5 Oct 2016 16:24:41 +0530 Subject: [PATCH] [Enhancement] Option to make payment via Journal Entry --- .../accounts_settings/accounts_settings.json | 37 ++++++++++++++++++- .../purchase_invoice/purchase_invoice.py | 3 ++ .../doctype/sales_invoice/sales_invoice.py | 3 ++ .../doctype/purchase_order/purchase_order.py | 3 ++ erpnext/public/js/controllers/transaction.js | 15 +++++++- .../doctype/sales_order/sales_order.py | 3 ++ 6 files changed, 61 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index a02e591ed5..c5b3e5b969 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -15,6 +15,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "If enabled, the system will post accounting entries for inventory automatically.", "fieldname": "auto_accounting_for_stock", @@ -41,6 +42,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.", "fieldname": "acc_frozen_upto", "fieldtype": "Date", @@ -66,6 +68,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts", "fieldname": "frozen_accounts_modifier", "fieldtype": "Link", @@ -92,6 +95,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_4", "fieldtype": "Column Break", "hidden": 0, @@ -116,6 +120,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Role that is allowed to submit transactions that exceed credit limits set.", "fieldname": "credit_controller", "fieldtype": "Link", @@ -142,6 +147,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "check_supplier_invoice_uniqueness", "fieldtype": "Check", "hidden": 0, @@ -162,6 +168,32 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "make_payment_via_journal_entry", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Make Payment via Journal Entry", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "hide_heading": 0, @@ -175,8 +207,8 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2016-07-14 14:32:06.056888", - "modified_by": "Administrator", + "modified": "2016-10-05 16:13:10.978208", + "modified_by": "rohitw1991@gmail.com", "module": "Accounts", "name": "Accounts Settings", "owner": "Administrator", @@ -191,6 +223,7 @@ "export": 0, "if_owner": 0, "import": 0, + "is_custom": 0, "permlevel": 0, "print": 1, "read": 1, diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index d741a6008a..fcbbf1f82e 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -36,6 +36,9 @@ class PurchaseInvoice(BuyingController): 'overflow_type': 'billing' }] + def onload(self): + self.get("__onload").journal_entry = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + def validate(self): if not self.is_opening: self.is_opening = 'No' diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 2b64d17046..4b952aca66 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -49,6 +49,9 @@ class SalesInvoice(SellingController): self.indicator_color = "green" self.indicator_title = _("Paid") + def onload(self): + self.get("__onload").journal_entry = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + def validate(self): super(SalesInvoice, self).validate() self.validate_posting_time() diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 79b22ae677..c7dad223c3 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -33,6 +33,9 @@ class PurchaseOrder(BuyingController): 'overflow_type': 'order' }] + def onload(self): + self.get("__onload").journal_entry = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + def validate(self): super(PurchaseOrder, self).validate() diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 92161e1bab..49cbb689d4 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -989,7 +989,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ make_payment_entry: function() { return frappe.call({ - method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry", + method: cur_frm.cscript.get_method_for_payment(), args: { "dt": cur_frm.doc.doctype, "dn": cur_frm.doc.name @@ -1000,5 +1000,18 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ // cur_frm.refresh_fields() } }); + }, + + get_method_for_payment: function(){ + method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry" + if(cur_frm.doc.__onload && cur_frm.doc.__onload.journal_entry){ + if(in_list(['Sales Invoice', 'Purchase Invoice'], cur_frm.doc.doctype)){ + method = "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice" + }else { + method= "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_order" + } + } + + return method } }); \ No newline at end of file diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 0435141d53..ceba33af5a 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -24,6 +24,9 @@ class SalesOrder(SellingController): def __init__(self, arg1, arg2=None): super(SalesOrder, self).__init__(arg1, arg2) + def onload(self): + self.get("__onload").journal_entry = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + def validate(self): super(SalesOrder, self).validate()