fix: not able to submit LCV entry (#42303)
This commit is contained in:
@@ -481,6 +481,43 @@ class TestJournalEntry(unittest.TestCase):
|
|||||||
for field in self.fields:
|
for field in self.fields:
|
||||||
self.assertEqual(self.expected_gle[i][field], gl_entries[i][field])
|
self.assertEqual(self.expected_gle[i][field], gl_entries[i][field])
|
||||||
|
|
||||||
|
def test_negative_debit_and_credit_with_same_account_head(self):
|
||||||
|
from erpnext.accounts.general_ledger import process_gl_map
|
||||||
|
|
||||||
|
# Create JV with defaut cost center - _Test Cost Center
|
||||||
|
frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0)
|
||||||
|
|
||||||
|
jv = make_journal_entry("_Test Bank - _TC", "_Test Bank - _TC", 100 * -1, save=True)
|
||||||
|
jv.append(
|
||||||
|
"accounts",
|
||||||
|
{
|
||||||
|
"account": "_Test Cash - _TC",
|
||||||
|
"debit": 100 * -1,
|
||||||
|
"credit": 100 * -1,
|
||||||
|
"debit_in_account_currency": 100 * -1,
|
||||||
|
"credit_in_account_currency": 100 * -1,
|
||||||
|
"exchange_rate": 1,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
jv.flags.ignore_validate = True
|
||||||
|
jv.save()
|
||||||
|
|
||||||
|
self.assertEqual(len(jv.accounts), 3)
|
||||||
|
|
||||||
|
gl_map = jv.build_gl_map()
|
||||||
|
|
||||||
|
for row in gl_map:
|
||||||
|
if row.account == "_Test Cash - _TC":
|
||||||
|
self.assertEqual(row.debit_in_account_currency, 100 * -1)
|
||||||
|
self.assertEqual(row.credit_in_account_currency, 100 * -1)
|
||||||
|
|
||||||
|
gl_map = process_gl_map(gl_map, False)
|
||||||
|
|
||||||
|
for row in gl_map:
|
||||||
|
if row.account == "_Test Cash - _TC":
|
||||||
|
self.assertEqual(row.debit_in_account_currency, 100)
|
||||||
|
self.assertEqual(row.credit_in_account_currency, 100)
|
||||||
|
|
||||||
|
|
||||||
def make_journal_entry(
|
def make_journal_entry(
|
||||||
account1,
|
account1,
|
||||||
|
|||||||
@@ -311,6 +311,18 @@ def check_if_in_list(gle, gl_map):
|
|||||||
def toggle_debit_credit_if_negative(gl_map):
|
def toggle_debit_credit_if_negative(gl_map):
|
||||||
for entry in gl_map:
|
for entry in gl_map:
|
||||||
# toggle debit, credit if negative entry
|
# toggle debit, credit if negative entry
|
||||||
|
if flt(entry.debit) < 0 and flt(entry.credit) < 0 and flt(entry.debit) == flt(entry.credit):
|
||||||
|
entry.credit *= -1
|
||||||
|
entry.debit *= -1
|
||||||
|
|
||||||
|
if (
|
||||||
|
flt(entry.debit_in_account_currency) < 0
|
||||||
|
and flt(entry.credit_in_account_currency) < 0
|
||||||
|
and flt(entry.debit_in_account_currency) == flt(entry.credit_in_account_currency)
|
||||||
|
):
|
||||||
|
entry.credit_in_account_currency *= -1
|
||||||
|
entry.debit_in_account_currency *= -1
|
||||||
|
|
||||||
if flt(entry.debit) < 0:
|
if flt(entry.debit) < 0:
|
||||||
entry.credit = flt(entry.credit) - flt(entry.debit)
|
entry.credit = flt(entry.credit) - flt(entry.debit)
|
||||||
entry.debit = 0.0
|
entry.debit = 0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user