diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py index c9376e242a6423ac4b99ecd8460826b5b5c3f022..de796be8df7aee1b0db8696bb6611853120de035 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py @@ -102,7 +102,7 @@ class BankTransaction(StatusUpdater): def on_submit(self): self.set_payment_entries_clearance_date() - self.set_status() + self.set_status(update=True) def before_update_after_submit(self): self.check_bank_account_head() @@ -248,7 +248,7 @@ class BankTransaction(StatusUpdater): frappe.get_doc(payment.payment_document, payment.payment_entry).set_status(update=True) def set_allocation_in_bank_transaction(self): - allocated_amount = ( + allocated_amount = flt( sum( [ flt(x.get("allocated_amount", 0)) * (1 if x.get("payment_type") == "Debit" else -1) @@ -256,17 +256,22 @@ class BankTransaction(StatusUpdater): ] ) if self.payment_entries - else 0 + else 0, + self.precision("allocated_amount"), ) transaction_amount = flt(self.credit) - flt(self.debit) - self.allocated_amount = flt(allocated_amount) if allocated_amount else 0 + self.allocated_amount = ( + flt(allocated_amount, self.precision("allocated_amount")) if allocated_amount else 0 + ) self.unallocated_amount = ( - (transaction_amount - flt(allocated_amount)) if allocated_amount else transaction_amount + flt(flt(transaction_amount) - flt(allocated_amount), self.precision("unallocated_amount")) + if allocated_amount + else flt(transaction_amount, self.precision("unallocated_amount")) ) - if transaction_amount == self.allocated_amount: + if self.unallocated_amount == 0.0: self.status = "Reconciled" def check_reconciliation_amounts(self):