Merge branch 'develop' into fix/scr/return

This commit is contained in:
Sagar Sharma 2022-11-05 16:36:07 +05:30 committed by GitHub
commit 5665d1afa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 7 deletions

View File

@ -804,15 +804,12 @@ class AccountsController(TransactionBase):
self.set("advances", [])
advance_allocated = 0
for d in res:
if d.against_order:
allocated_amount = flt(d.amount)
if self.get("party_account_currency") == self.company_currency:
amount = self.get("base_rounded_total") or self.base_grand_total
else:
if self.get("party_account_currency") == self.company_currency:
amount = self.get("base_rounded_total") or self.base_grand_total
else:
amount = self.get("rounded_total") or self.grand_total
amount = self.get("rounded_total") or self.grand_total
allocated_amount = min(amount - advance_allocated, d.amount)
allocated_amount = min(amount - advance_allocated, d.amount)
advance_allocated += flt(allocated_amount)
advance_row = {

View File

@ -1774,6 +1774,69 @@ class TestSalesOrder(FrappeTestCase):
sales_order.save()
self.assertEqual(sales_order.taxes[0].tax_amount, 0)
def test_sales_order_partial_advance_payment(self):
from erpnext.accounts.doctype.payment_entry.test_payment_entry import (
create_payment_entry,
get_payment_entry,
)
from erpnext.selling.doctype.customer.test_customer import get_customer_dict
# Make a customer
customer = get_customer_dict("QA Logistics")
frappe.get_doc(customer).insert()
# Make a Sales Order
so = make_sales_order(
customer="QA Logistics",
item_list=[
{"item_code": "_Test Item", "qty": 1, "rate": 200},
{"item_code": "_Test Item 2", "qty": 1, "rate": 300},
],
)
# Create a advance payment against that Sales Order
pe = get_payment_entry("Sales Order", so.name, bank_account="_Test Bank - _TC")
pe.reference_no = "1"
pe.reference_date = nowdate()
pe.paid_from_account_currency = so.currency
pe.paid_to_account_currency = so.currency
pe.source_exchange_rate = 1
pe.target_exchange_rate = 1
pe.paid_amount = so.grand_total
pe.save(ignore_permissions=True)
pe.submit()
# Make standalone advance payment entry
create_payment_entry(
payment_type="Receive",
party_type="Customer",
party="QA Logistics",
paid_from="Debtors - _TC",
paid_to="_Test Bank - _TC",
save=1,
submit=1,
)
si = make_sales_invoice(so.name)
item = si.get("items")[1]
si.remove(item)
si.allocate_advances_automatically = 1
si.save()
self.assertEqual(len(si.get("advances")), 1)
self.assertEqual(si.get("advances")[0].allocated_amount, 200)
self.assertEqual(si.get("advances")[0].reference_name, pe.name)
si.submit()
pe.load_from_db()
self.assertEqual(pe.references[0].reference_name, si.name)
self.assertEqual(pe.references[0].allocated_amount, 200)
self.assertEqual(pe.references[1].reference_name, so.name)
self.assertEqual(pe.references[1].allocated_amount, 300)
def automatically_fetch_payment_terms(enable=1):
accounts_settings = frappe.get_doc("Accounts Settings")