Test Case Fixes
This commit is contained in:
parent
e196190d10
commit
ff2f3ef1b1
@ -70,7 +70,7 @@ class TestPaymentEntry(unittest.TestCase):
|
||||
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank USD - _TC")
|
||||
pe.reference_no = "1"
|
||||
pe.reference_date = "2016-01-01"
|
||||
pe.target_exchange_rate = 50
|
||||
pe.source_exchange_rate = 50
|
||||
pe.insert()
|
||||
pe.submit()
|
||||
|
||||
|
@ -6,11 +6,11 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import flt, get_url, nowdate, getdate
|
||||
from frappe.utils import flt, get_url, nowdate
|
||||
from erpnext.accounts.party import get_party_account
|
||||
from erpnext.accounts.utils import get_account_currency
|
||||
from erpnext.setup.utils import get_exchange_rate
|
||||
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry, get_company_defaults
|
||||
|
||||
class PaymentRequest(Document):
|
||||
def validate(self):
|
||||
@ -41,7 +41,6 @@ class PaymentRequest(Document):
|
||||
def on_submit(self):
|
||||
send_mail = True
|
||||
self.make_communication_entry()
|
||||
|
||||
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
|
||||
|
||||
if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart":
|
||||
@ -87,18 +86,22 @@ class PaymentRequest(Document):
|
||||
frappe.flags.ignore_account_permission = True
|
||||
|
||||
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
|
||||
|
||||
party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
|
||||
party_account_currency = get_account_currency(party_account)
|
||||
|
||||
if self.reference_doctype == "Sales Invoice":
|
||||
party_account = ref_doc.debit_to
|
||||
elif self.reference_doctype == "Purchase Invoice":
|
||||
party_account = ref_doc.credit_to
|
||||
else:
|
||||
party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
|
||||
|
||||
party_account_currency = ref_doc.get("party_account_currency") or get_account_currency(party_account)
|
||||
|
||||
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"))
|
||||
party_amount = self.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)
|
||||
|
||||
@ -108,6 +111,14 @@ class PaymentRequest(Document):
|
||||
"remarks": "Payment Entry against {0} {1} via Payment Request {2}".format(self.reference_doctype,
|
||||
self.reference_name, self.name)
|
||||
})
|
||||
|
||||
company_details = get_company_defaults(ref_doc.company)
|
||||
if payment_entry.difference_amount:
|
||||
payment_entry.append("deductions", {
|
||||
"account": company_details.exchange_gain_loss_account,
|
||||
"cost_center": company_details.cost_center,
|
||||
"amount": payment_entry.difference_amount
|
||||
})
|
||||
payment_entry.insert(ignore_permissions=True)
|
||||
payment_entry.submit()
|
||||
|
||||
@ -188,7 +199,6 @@ def make_payment_request(**args):
|
||||
|
||||
if args.return_doc:
|
||||
return pr
|
||||
|
||||
if args.submit_doc:
|
||||
pr.insert(ignore_permissions=True)
|
||||
pr.submit()
|
||||
|
@ -6,7 +6,7 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
import unittest
|
||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request, get_gateway_details
|
||||
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
|
||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||
from erpnext.setup.utils import get_exchange_rate
|
||||
# test_records = frappe.get_test_records('Payment Request')
|
||||
@ -62,27 +62,44 @@ class TestPaymentRequest(unittest.TestCase):
|
||||
self.assertEquals(pr.currency, "USD")
|
||||
|
||||
def test_payment_entry(self):
|
||||
frappe.db.set_value("Company", "_Test Company",
|
||||
"exchange_gain_loss_account", "_Test Exchange Gain/Loss - _TC")
|
||||
frappe.db.set_value("Company", "_Test Company",
|
||||
"write_off_account", "_Test Write Off - _TC")
|
||||
frappe.db.set_value("Company", "_Test Company",
|
||||
"cost_center", "_Test Cost Center - _TC")
|
||||
|
||||
so_inr = make_sales_order(currency="INR")
|
||||
pr = make_payment_request(dt="Sales Order", dn=so_inr.name, recipient_id="saurabh@erpnext.com",
|
||||
mute_email=1, submit_doc=1)
|
||||
jv = pr.set_as_paid()
|
||||
pe = pr.set_as_paid()
|
||||
|
||||
so_inr = frappe.get_doc("Sales Order", so_inr.name)
|
||||
|
||||
self.assertEquals(so_inr.advance_paid, jv.total_debit)
|
||||
|
||||
conversion_rate = get_exchange_rate("USD", "INR")
|
||||
self.assertEquals(so_inr.advance_paid, 1000)
|
||||
|
||||
si_usd = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
|
||||
currency="USD", conversion_rate=conversion_rate)
|
||||
currency="USD", conversion_rate=50)
|
||||
|
||||
pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com",
|
||||
mute_email=1, return_doc=1, payment_gateway="_Test Gateway - USD")
|
||||
mute_email=1, payment_gateway="_Test Gateway - USD", submit_doc=1)
|
||||
|
||||
pe = pr.set_as_paid()
|
||||
|
||||
expected_gle = dict((d[0], d) for d in [
|
||||
["_Test Receivable USD - _TC", 0, 5000, si_usd.name],
|
||||
[pr.payment_account, 6000.0, 0, None],
|
||||
["_Test Exchange Gain/Loss - _TC", 0, 1000, None]
|
||||
])
|
||||
|
||||
gl_entries = frappe.db.sql("""select account, debit, credit, against_voucher
|
||||
from `tabGL Entry` where voucher_type='Payment Entry' and voucher_no=%s
|
||||
order by account asc""", pe.name, as_dict=1)
|
||||
|
||||
jv = pr.set_as_paid()
|
||||
self.assertTrue(gl_entries)
|
||||
|
||||
payment_gateway_details = get_gateway_details({"payment_gateway": "_Test Gateway - USD"})
|
||||
|
||||
self.assertEquals(jv.accounts[0].account, "_Test Receivable USD - _TC")
|
||||
self.assertEquals(jv.accounts[1].account, payment_gateway_details.payment_account)
|
||||
|
||||
for i, gle in enumerate(gl_entries):
|
||||
self.assertEquals(expected_gle[gle.account][0], gle.account)
|
||||
self.assertEquals(expected_gle[gle.account][1], gle.debit)
|
||||
self.assertEquals(expected_gle[gle.account][2], gle.credit)
|
||||
self.assertEquals(expected_gle[gle.account][3], gle.against_voucher)
|
||||
|
@ -168,8 +168,8 @@ def delete_gl_entries(gl_entries=None, voucher_type=None, voucher_no=None,
|
||||
|
||||
if not gl_entries:
|
||||
gl_entries = frappe.db.sql("""
|
||||
select account, posting_date, party_type, party,
|
||||
voucher_type, voucher_no, against_voucher_type, against_voucher
|
||||
select account, posting_date, party_type, party, cost_center, fiscal_year,
|
||||
voucher_type, voucher_no, against_voucher_type, against_voucher, cost_center
|
||||
from `tabGL Entry`
|
||||
where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no), as_dict=True)
|
||||
|
||||
|
@ -348,10 +348,12 @@ class AccountsController(TransactionBase):
|
||||
"""
|
||||
|
||||
if self.doctype == "Sales Invoice":
|
||||
party_type = "Customer"
|
||||
party = self.customer
|
||||
party_account = self.debit_to
|
||||
dr_or_cr = "credit_in_account_currency"
|
||||
else:
|
||||
party_type = "Supplier"
|
||||
party = self.supplier
|
||||
party_account = self.credit_to
|
||||
dr_or_cr = "debit_in_account_currency"
|
||||
@ -366,7 +368,7 @@ class AccountsController(TransactionBase):
|
||||
'against_voucher_type' : self.doctype,
|
||||
'against_voucher' : self.name,
|
||||
'account' : party_account,
|
||||
'party_type': 'Customer',
|
||||
'party_type': party_type,
|
||||
'party': party,
|
||||
'is_advance' : 'Yes',
|
||||
'dr_or_cr' : dr_or_cr,
|
||||
@ -683,10 +685,10 @@ def get_advance_payment_entries(party_type, party, party_account,
|
||||
party_account_field = "paid_from" if party_type == "Customer" else "paid_to"
|
||||
payment_type = "Receive" if party_type == "Customer" else "Pay"
|
||||
payment_entries_against_order, unallocated_payment_entries = [], []
|
||||
|
||||
|
||||
if order_list or against_all_orders:
|
||||
if order_list:
|
||||
reference_condition = " and t2.reference_name in ({1})"\
|
||||
reference_condition = " and t2.reference_name in ({0})"\
|
||||
.format(', '.join(['%s'] * len(order_list)))
|
||||
else:
|
||||
reference_condition = ""
|
||||
|
Loading…
x
Reference in New Issue
Block a user