Make payment entry aginst order, payment request and patch to rename advance table fields
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index f670c90..cb6c36c 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -283,7 +283,8 @@
type: "GET",
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_default_bank_cash_account",
args: {
- "voucher_type": doc.voucher_type,
+ "account_type": (doc.voucher_type=="Bank Entry" ?
+ "Bank" : (doc.voucher_type=="Cash" ? "Cash" : null)),
"company": doc.company
},
callback: function(r) {
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 81fe436..96b95f9 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -525,19 +525,19 @@
d.party_balance = party_balance[(d.party_type, d.party)]
@frappe.whitelist()
-def get_default_bank_cash_account(company, voucher_type=None, mode_of_payment=None, account=None):
+def get_default_bank_cash_account(company, account_type=None, mode_of_payment=None, account=None):
from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_bank_cash_account
if mode_of_payment:
account = get_bank_cash_account(mode_of_payment, company).get("account")
if not account:
- if voucher_type=="Bank Entry":
+ if account_type=="Bank":
account = frappe.db.get_value("Company", company, "default_bank_account")
if not account:
account = frappe.db.get_value("Account",
{"company": company, "account_type": "Bank", "is_group": 0})
- elif voucher_type=="Cash Entry":
+ elif account_type=="Cash":
account = frappe.db.get_value("Company", company, "default_cash_account")
if not account:
account = frappe.db.get_value("Account",
@@ -660,7 +660,7 @@
bank_row = je.append("accounts")
#make it bank_details
- bank_account = get_default_bank_cash_account(ref_doc.company, "Bank Entry", account=args.get("bank_account"))
+ bank_account = get_default_bank_cash_account(ref_doc.company, "Bank", account=args.get("bank_account"))
if bank_account:
bank_row.update(bank_account)
bank_row.exchange_rate = get_exchange_rate(bank_account["account"],
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 52834d4..bb84eee 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -94,11 +94,9 @@
frm.doc.paid_to_account_currency != company_currency &&
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency));
- frm.toggle_display("base_paid_amount",
- (!frm.doc.party && frm.doc.paid_from_account_currency != company_currency));
+ frm.toggle_display("base_paid_amount", frm.doc.paid_from_account_currency != company_currency);
- frm.toggle_display("base_received_amount", (!frm.doc.party &&
- frm.doc.paid_to_account_currency != company_currency &&
+ frm.toggle_display("base_received_amount", (frm.doc.paid_to_account_currency != company_currency &&
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency));
frm.toggle_display("received_amount",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 91aeeb0..68e43e9 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -456,17 +456,17 @@
"bold": 0,
"collapsible": 0,
"depends_on": "paid_to",
- "fieldname": "paid_to_account_balance",
- "fieldtype": "Currency",
+ "fieldname": "paid_to_account_currency",
+ "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Account Balance",
+ "label": "Account Currency",
"length": 0,
"no_copy": 0,
- "options": "paid_to_account_currency",
+ "options": "Currency",
"permlevel": 0,
"precision": "",
"print_hide": 1,
@@ -483,17 +483,17 @@
"bold": 0,
"collapsible": 0,
"depends_on": "paid_to",
- "fieldname": "paid_to_account_currency",
- "fieldtype": "Link",
- "hidden": 1,
+ "fieldname": "paid_to_account_balance",
+ "fieldtype": "Currency",
+ "hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Account Currency",
+ "label": "Account Balance",
"length": 0,
"no_copy": 0,
- "options": "Currency",
+ "options": "paid_to_account_currency",
"permlevel": 0,
"precision": "",
"print_hide": 1,
@@ -762,7 +762,7 @@
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
- "reqd": 1,
+ "reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
@@ -812,7 +812,7 @@
"print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
- "reqd": 1,
+ "reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
@@ -1372,7 +1372,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-06-28 12:45:59.162749",
+ "modified": "2016-06-29 17:30:20.840249",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index dae7bda..fc28c54 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -31,19 +31,20 @@
self.party_account_field = "paid_to"
self.party_account = self.paid_to
self.party_account_currency = self.paid_to_account_currency
-
- print self.payment_type, self.party_account_field
-
+
def validate(self):
self.setup_party_account_field()
self.set_missing_values()
self.validate_party_details()
self.validate_bank_accounts()
self.set_exchange_rate()
+ self.validate_mandatory()
self.validate_reference_documents()
self.set_amounts()
self.clear_unallocated_reference_document_rows()
self.set_title()
+ self.validate_transaction_reference()
+
def on_submit(self):
self.make_gl_entries()
@@ -89,20 +90,30 @@
self.party_account_currency = self.paid_from_account_currency \
if self.payment_type=="Receive" else self.paid_to_account_currency
+ self.set_missing_ref_details()
+
+
+ def set_missing_ref_details(self):
for d in self.get("references"):
- if d.allocated_amount and d.reference_doctype in ("Sales Invoice", "Purchase Invoice"):
- ref_doc = frappe.db.get_value(d.reference_doctype, d.reference_name, ["grand_total",
- "base_grand_total", "outstanding_amount", "conversion_rate", "due_date"], as_dict=1)
+ if d.allocated_amount:
+ if d.reference_doctype != "Journal Entry":
+ ref_doc = frappe.get_doc(d.reference_doctype, d.reference_name)
- d.outstanding_amount = ref_doc.outstanding_amount
- d.due_date = ref_doc.due_date
+ d.due_date = ref_doc.get("due_date")
- if self.party_account_currency == self.company_currency:
- d.total_amount = ref_doc.base_grand_total
- d.exchange_rate = 1
- else:
- d.total_amount = ref_doc.grand_total
- d.exchange_rate = ref_doc.conversion_rate
+ if self.party_account_currency == self.company_currency:
+ d.total_amount = ref_doc.base_grand_total
+ d.exchange_rate = 1
+ else:
+ d.total_amount = ref_doc.grand_total
+ d.exchange_rate = ref_doc.get("conversion_rate") or \
+ get_exchange_rate(self.party_account_currency, self.company_currency)
+
+ d.outstanding_amount = ref_doc.get("outstanding_amount") \
+ if d.reference_doctype in ("Sales Invoice", "Purchase Invoice") \
+ else flt(d.total_amount) - flt(ref_doc.advance_paid)
+ elif not d.exchange_rate:
+ d.exchange_rate = get_exchange_rate(self.party_account_currency, self.company_currency)
def validate_party_details(self):
if self.party:
@@ -139,6 +150,11 @@
self.target_exchange_rate = get_exchange_rate(self.paid_to_account_currency,
self.company_currency)
+ def validate_mandatory(self):
+ for field in ("paid_amount", "received_amount", "source_exchange_rate", "target_exchange_rate"):
+ if not self.get(field):
+ frappe.throw(_("{0} is mandatory").format(self.meta.get_label(field)))
+
def validate_reference_documents(self):
if self.party_type == "Customer":
valid_reference_doctypes = ("Sales Order", "Sales Invoice", "Journal Entry")
@@ -188,9 +204,11 @@
self.total_allocated_amount, self.base_total_allocated_amount = 0, 0
for d in self.get("references"):
if d.allocated_amount:
- if d.allocated_amount > d.outstanding_amount:
- frappe.throw(_("Row #{0}: Allocated amount cannot be greater than outstanding amount")
- .format(d.idx))
+ print d.allocated_amount, d.outstanding_amount
+ if d.reference_doctype not in ("Sales Order", "Purchase Order") \
+ and d.allocated_amount > d.outstanding_amount:
+ frappe.throw(_("Row #{0}: Allocated amount cannot be greater than outstanding amount")
+ .format(d.idx))
self.total_allocated_amount += flt(d.allocated_amount)
self.base_total_allocated_amount += flt(flt(d.allocated_amount) * flt(d.exchange_rate),
@@ -232,6 +250,14 @@
self.title = self.party
else:
self.title = self.paid_from + " - " + self.paid_to
+
+ def validate_transaction_reference(self):
+ bank_account = self.paid_to if self.payment_type == "Receive" else self.paid_from
+ bank_account_type = frappe.db.get_value("Account", bank_account, "account_type")
+
+ if bank_account_type == "Bank":
+ if not self.reference_no or not self.reference_date:
+ frappe.throw(_("Reference No and Reference Date is mandatory for Bank transaction"))
def make_gl_entries(self, cancel=0, adv_adj=0):
gl_entries = []
@@ -442,56 +468,85 @@
return ret
@frappe.whitelist()
-def get_payment_entry_against_invoice(dt, dn):
- invoice = frappe.get_doc(dt, dn)
+def get_payment_entry(dt, dn, party_amount=None, bank_account=None, bank_amount=None):
+ doc = frappe.get_doc(dt, dn)
+ if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) > 0:
+ frappe.throw(_("Can only make payment against unbilled {0}").format(dt))
+
+ party_type = "Customer" if dt in ("Sales Invoice", "Sales Order") else "Supplier"
+
+ # party account
if dt == "Sales Invoice":
- party_type = "Customer"
- party_account = invoice.debit_to
+ party_account = doc.debit_to
+ elif dt == "Purchase Invoice":
+ party_account = doc.credit_to
else:
- party_type = "Supplier"
- party_account = invoice.credit_to
-
-
- if (dt=="Sales Invoice" and invoice.outstanding_amount > 0) \
- or (dt=="Purchase Invoice" and invoice.outstanding_amount < 0):
+ party_account = get_party_account(party_type, doc.get(party_type.lower()), doc.company)
+
+ party_account_currency = doc.get("party_account_currency") or get_account_currency(party_account)
+
+ # payment type
+ if (dt == "Sales Order" or (dt=="Sales Invoice" and doc.outstanding_amount > 0)) \
+ or (dt=="Purchase Invoice" and doc.outstanding_amount < 0):
payment_type = "Receive"
else:
payment_type = "Pay"
- bank = frappe._dict()
- if invoice.mode_of_payment:
- bank = get_default_bank_cash_account(invoice.company, mode_of_payment=invoice.mode_of_payment)
+ # amounts
+ grand_total = outstanding_amount = 0
+ if party_amount:
+ grand_total = outstanding_amount = party_amount
+ elif dt in ("Sales Invoice", "Purchase Invoice"):
+ grand_total = doc.grand_total
+ outstanding_amount = doc.outstanding_amount
+ else:
+ total_field = "base_grand_total" if party_account_currency == doc.company_currency else "grand_total"
+ grand_total = flt(doc.get(total_field))
+ outstanding_amount = grand_total - flt(doc.advance_paid)
+
+ # bank or cash
+ bank = get_default_bank_cash_account(doc.company, "Bank", mode_of_payment=doc.get("mode_of_payment"),
+ account=bank_account)
paid_amount = received_amount = 0
- if invoice.party_account_currency == bank.account_currency:
- paid_amount = received_amount = invoice.outstanding_amount
+ if party_account_currency == bank.account_currency:
+ paid_amount = received_amount = outstanding_amount
elif payment_type == "Receive":
- paid_amount = invoice.outstanding_amount
+ paid_amount = outstanding_amount
+ if bank_amount:
+ received_amount = bank_amount
else:
- received_amount = invoice.outstanding_amount
+ received_amount = outstanding_amount
+ if bank_amount:
+ paid_amount = bank_amount
pe = frappe.new_doc("Payment Entry")
pe.payment_type = payment_type
- pe.company = invoice.company
+ pe.company = doc.company
pe.posting_date = nowdate()
- pe.mode_of_payment = invoice.mode_of_payment
+ pe.mode_of_payment = doc.get("mode_of_payment")
pe.party_type = party_type
- pe.party = invoice.get(scrub(party_type))
+ pe.party = doc.get(scrub(party_type))
pe.paid_from = party_account if payment_type=="Receive" else bank.account
pe.paid_to = party_account if payment_type=="Pay" else bank.account
+ pe.paid_from_account_currency = party_account_currency \
+ if payment_type=="Receive" else bank.account_currency
+ pe.paid_to_account_currency = party_account_currency if payment_type=="Pay" else bank.account_currency
pe.paid_amount = paid_amount
pe.received_amount = received_amount
pe.append("references", {
"reference_doctype": dt,
"reference_name": dn,
- "allocated_amount": invoice.outstanding_amount
+ "due_date": doc.get("due_date"),
+ "total_amount": grand_total,
+ "outstanding_amount": outstanding_amount,
+ "allocated_amount": outstanding_amount
})
pe.setup_party_account_field()
pe.set_missing_values()
pe.set_exchange_rate()
pe.set_amounts()
-
return pe
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 837adf8..30ee18e 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -5,8 +5,50 @@
import frappe
import unittest
-
-# test_records = frappe.get_test_records('Payment Entry')
+from erpnext.accounts.doctype.sales_order.test_sales_order import make_sales_order
+from erpnext.accounts.doctype.payment_entry.payment_entry import make_payment_entry
class TestPaymentEntry(unittest.TestCase):
- pass
+ def test_payment_entry_against_order(self):
+ so = make_sales_order()
+ pe = make_payment_entry("Sales Order", so.name)
+ pe.paid_to = "_Test Bank - _TC"
+ pe.insert()
+ pe.submit()
+
+ expected_gle = {
+ "_Test Bank - _TC": {
+ "account_currency": "INR",
+ "debit": 1000,
+ "debit_in_account_currency": 1000,
+ "credit": 0,
+ "credit_in_account_currency": 0,
+ "against_voucher": None
+ },
+ "_Test Receivable - _TC": {
+ "account_currency": "INR",
+ "debit": 0,
+ "debit_in_account_currency": 0,
+ "credit": 1000,
+ "credit_in_account_currency": 1000,
+ "against_voucher": so.name
+ }
+ }
+
+ self.validate_gl_entries(pe.name, expected_gle)
+
+ so.load_from_db()
+
+ def validate_gl_entries(self, voucher_no, expected_gle):
+ gl_entries = frappe.db.sql("""select account, account_currency, debit, credit,
+ debit_in_account_currency, credit_in_account_currency, against_voucher
+ from `tabGL Entry` where voucher_type='Payment Entry' and voucher_no=%s
+ order by account asc""", voucher_no, as_dict=1)
+
+ self.assertTrue(gl_entries)
+
+ for field in ("account_currency", "debit", "debit_in_account_currency",
+ "credit", "credit_in_account_currency"):
+ for i, gle in enumerate(gl_entries):
+ self.assertEquals(expected_gle[gle.account][field], gle[field])
+
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index fc40d42..b355f35 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -6,11 +6,11 @@
import frappe
from frappe import _
from frappe.model.document import Document
-from frappe.utils import flt, nowdate, get_url, cstr
+from frappe.utils import flt, get_url, nowdate, getdate
from erpnext.accounts.party import get_party_account
from erpnext.accounts.utils import get_account_currency
-from erpnext.accounts.doctype.journal_entry.journal_entry import (get_payment_entry_against_invoice,
-get_payment_entry_against_order)
+from erpnext.setup.utils import get_exchange_rate
+from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
class PaymentRequest(Document):
def validate(self):
@@ -77,12 +77,12 @@
if frappe.session.user == "Guest":
frappe.set_user("Administrator")
- jv = self.create_journal_entry()
+ payment_entry = self.create_payment_entry()
self.make_invoice()
- return jv
+ return payment_entry
- def create_journal_entry(self):
+ def create_payment_entry(self):
"""create entry"""
frappe.flags.ignore_account_permission = True
@@ -90,42 +90,31 @@
party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
party_account_currency = get_account_currency(party_account)
-
- debit_in_account_currency = 0.0
-
- if party_account_currency == ref_doc.company_currency:
- amount = flt(flt(self.grand_total) * \
- flt(ref_doc.conversion_rate, ref_doc.precision("conversion_rate")), \
- ref_doc.precision("base_grand_total"))
-
- if self.currency != ref_doc.company_currency:
- debit_in_account_currency = self.grand_total
-
- else:
- amount = debit_in_account_currency = self.grand_total
-
- if self.reference_doctype == "Sales Order":
- jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name,
- amount=amount, debit_in_account_currency=debit_in_account_currency , journal_entry=True,
- bank_account=self.payment_account)
-
- if self.reference_doctype == "Sales Invoice":
- jv = get_payment_entry_against_invoice(self.reference_doctype, self.reference_name,
- amount=amount, debit_in_account_currency=debit_in_account_currency, journal_entry=True,
- bank_account=self.payment_account)
-
- jv.update({
- "voucher_type": "Journal Entry",
- "posting_date": nowdate()
- })
- jv.insert(ignore_permissions=True)
- jv.submit()
+ bank_amount = self.grand_total
+ if party_account_currency == ref_doc.company_currency and party_account_currency != self.currency:
+ party_amount = flt(flt(self.grand_total) *
+ get_exchange_rate(self.currency, party_account_currency),
+ ref_doc.precision("base_grand_total"))
+ else:
+ party_amount = self.grand_total
+
+ payment_entry = get_payment_entry(self.reference_doctype, self.reference_name,
+ party_amount=party_amount, bank_account=self.payment_account, bank_amount=bank_amount)
+
+ payment_entry.update({
+ "reference_no": self.name,
+ "reference_date": nowdate(),
+ "remarks": "Payment Entry against {0} {1} via Payment Request {2}".format(self.reference_doctype,
+ self.reference_name, self.name)
+ })
+ payment_entry.insert(ignore_permissions=True)
+ payment_entry.submit()
#set status as paid for Payment Request
frappe.db.set_value(self.doctype, self.name, "status", "Paid")
- return jv
+ return payment_entry
def send_email(self):
"""send email with payment link"""
@@ -177,7 +166,7 @@
grand_total = get_amount(ref_doc, args.dt)
existing_payment_request = frappe.db.get_value("Payment Request",
- {"reference_doctype": args.dt, "reference_name": args.dn})
+ {"reference_doctype": args.dt, "reference_name": args.dn, "docstatus": ["!=", 2]})
if existing_payment_request:
pr = frappe.get_doc("Payment Request", existing_payment_request)
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index b1f55df..afc4d98 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -471,9 +471,10 @@
"party_type": party_type,
"party": party,
"account": account,
- }, as_dict=True)
+ }, as_dict=True, debug=1)
for d in invoice_list:
+ print d.voucher_no, d.invoice_amount, d.payment_amount
outstanding_invoices.append(frappe._dict({
'voucher_no': d.voucher_no,
'voucher_type': d.voucher_type,
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 9e44855..f5d4e2e 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -76,7 +76,7 @@
this.make_purchase_invoice, __("Make"));
if(flt(doc.per_billed)==0 && doc.status != "Delivered") {
- cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_bank_entry, __("Make"));
+ cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_payment_entry, __("Make"));
}
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
@@ -184,20 +184,6 @@
this.frm.script_manager.copy_from_first_row("items", row, ["schedule_date"]);
},
- make_bank_entry: function() {
- return frappe.call({
- method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_order",
- args: {
- "dt": "Purchase Order",
- "dn": cur_frm.doc.name
- },
- callback: function(r) {
- var doclist = frappe.model.sync(r.message);
- frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
- }
- });
- },
-
unclose_purchase_order: function(){
cur_frm.cscript.update_status('Re-open', 'Submitted')
},
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 1c7d032..0e37e11 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -462,11 +462,11 @@
formatted_order_total = fmt_money(order_total, precision=self.precision("base_grand_total"),
currency=advance.account_currency)
- if order_total >= advance_paid:
- frappe.db.set_value(self.doctype, self.name, "advance_paid", advance_paid)
- else:
+ if self.currency == self.company_currency:
frappe.throw(_("Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})")
.format(formatted_advance_paid, self.name, formatted_order_total))
+
+ frappe.db.set_value(self.doctype, self.name, "advance_paid", advance_paid)
@property
def company_abbr(self):
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index d6bb12e..bafa008 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -10,7 +10,7 @@
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_default_bank_cash_account",
args: {
"company": cur_frm.doc.company,
- "voucher_type": "Bank Entry"
+ "account_type": "Bank"
},
callback: function(r) {
var jv = frappe.model.make_new_doc_and_get_name('Journal Entry');
diff --git a/erpnext/patches/v7_0/rename_advance_table_fields.py b/erpnext/patches/v7_0/rename_advance_table_fields.py
new file mode 100644
index 0000000..ba8b2da
--- /dev/null
+++ b/erpnext/patches/v7_0/rename_advance_table_fields.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+def execute():
+ for dt in ("Sales Invoice Advance", "Purchase Invoice Advance"):
+ frappe.reload_doctype(dt)
+
+ frappe.db.sql("update `tab{0}` set reference_type = 'Journal Entry'".format(dt))
+
+ rename_field(dt, "journal_entry", "reference_name")
+ rename_field(dt, "jv_detail_no", "reference_row")
\ No newline at end of file
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index a7f7e2a..f49b050 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -169,7 +169,6 @@
this.show_item_wise_taxes();
this.set_dynamic_labels();
this.setup_sms();
- this.make_show_payments_btn();
},
apply_default_taxes: function() {
@@ -205,22 +204,6 @@
var sms_man = new SMSManager(this.frm.doc);
},
- make_show_payments_btn: function() {
- var me = this;
- if (in_list(["Purchase Invoice", "Sales Invoice"], this.frm.doctype)) {
- if(this.frm.doc.outstanding_amount !== this.frm.doc.base_grand_total) {
- this.frm.add_custom_button(__("Payments"), function() {
- frappe.route_options = {
- "Journal Entry Account.reference_type": me.frm.doc.doctype,
- "Journal Entry Account.reference_name": me.frm.doc.name
- };
-
- frappe.set_route("List", "Journal Entry");
- }, __("View"));
- }
- }
- },
-
barcode: function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(d.barcode=="" || d.barcode==null) {
@@ -1004,7 +987,7 @@
make_payment_entry: function() {
return frappe.call({
- method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry_against_invoice",
+ method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry",
args: {
"dt": cur_frm.doc.doctype,
"dn": cur_frm.doc.name
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index ce9c958..5f1a5c7 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -76,11 +76,12 @@
if(flt(doc.per_billed)==0) {
cur_frm.add_custom_button(__('Payment Request'), this.make_payment_request, __("Make"));
- cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_bank_entry, __("Make"));
+ cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_payment_entry, __("Make"));
}
// maintenance
- if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
+ if(flt(doc.per_delivered, 2) < 100 &&
+ ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
cur_frm.add_custom_button(__('Maintenance Visit'), this.make_maintenance_visit, __("Make"));
cur_frm.add_custom_button(__('Maintenance Schedule'), this.make_maintenance_schedule, __("Make"));
}
@@ -157,19 +158,6 @@
})
},
- make_bank_entry: function() {
- return frappe.call({
- method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_order",
- args: {
- "dt": "Sales Order",
- "dn": cur_frm.doc.name
- },
- callback: function(r) {
- var doclist = frappe.model.sync(r.message);
- frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
- }
- });
- },
make_purchase_order: function(){
var dialog = new frappe.ui.Dialog({
title: __("For Supplier"),