|
|
@ -28,7 +28,7 @@ class JournalEntry(AccountsController): |
|
|
|
self.validate_entries_for_advance() |
|
|
|
self.validate_multi_currency() |
|
|
|
self.set_amounts_in_company_currency() |
|
|
|
self.validate_debit_and_credit() |
|
|
|
self.validate_total_debit_and_credit() |
|
|
|
self.validate_against_jv() |
|
|
|
self.validate_reference_doc() |
|
|
|
self.set_against_account() |
|
|
@ -252,7 +252,13 @@ class JournalEntry(AccountsController): |
|
|
|
if flt(d.debit > 0): d.against_account = ", ".join(list(set(accounts_credited))) |
|
|
|
if flt(d.credit > 0): d.against_account = ", ".join(list(set(accounts_debited))) |
|
|
|
|
|
|
|
def validate_debit_and_credit(self): |
|
|
|
def validate_total_debit_and_credit(self): |
|
|
|
self.set_total_debit_credit() |
|
|
|
if self.difference: |
|
|
|
frappe.throw(_("Total Debit must be equal to Total Credit. The difference is {0}") |
|
|
|
.format(self.difference)) |
|
|
|
|
|
|
|
def set_total_debit_credit(self): |
|
|
|
self.total_debit, self.total_credit, self.difference = 0, 0, 0 |
|
|
|
for d in self.get("accounts"): |
|
|
|
if d.debit and d.credit: |
|
|
@ -264,10 +270,6 @@ class JournalEntry(AccountsController): |
|
|
|
self.difference = flt(self.total_debit, self.precision("total_debit")) - \ |
|
|
|
flt(self.total_credit, self.precision("total_credit")) |
|
|
|
|
|
|
|
if self.difference: |
|
|
|
frappe.throw(_("Total Debit must be equal to Total Credit. The difference is {0}") |
|
|
|
.format(self.difference)) |
|
|
|
|
|
|
|
def validate_multi_currency(self): |
|
|
|
alternate_currency = [] |
|
|
|
for d in self.get("accounts"): |
|
|
@ -404,7 +406,7 @@ class JournalEntry(AccountsController): |
|
|
|
blank_row.debit_in_account_currency = abs(diff) |
|
|
|
blank_row.debit = abs(diff) |
|
|
|
|
|
|
|
self.validate_debit_and_credit() |
|
|
|
self.validate_total_debit_and_credit() |
|
|
|
|
|
|
|
def get_outstanding_invoices(self): |
|
|
|
self.set('accounts', []) |
|
|
@ -432,7 +434,7 @@ class JournalEntry(AccountsController): |
|
|
|
elif self.write_off_based_on == 'Accounts Payable': |
|
|
|
jd2.credit = total |
|
|
|
|
|
|
|
self.validate_debit_and_credit() |
|
|
|
self.validate_total_debit_and_credit() |
|
|
|
|
|
|
|
|
|
|
|
def get_values(self): |
|
|
@ -562,11 +564,16 @@ def get_payment_entry_against_invoice(dt, dn): |
|
|
|
if dt == "Sales Invoice": |
|
|
|
party_type = "Customer" |
|
|
|
party_account = ref_doc.debit_to |
|
|
|
amount_field_party = "credit_in_account_currency" |
|
|
|
amount_field_bank = "debit_in_account_currency" |
|
|
|
else: |
|
|
|
party_type = "Supplier" |
|
|
|
party_account = ref_doc.credit_to |
|
|
|
|
|
|
|
|
|
|
|
if (dt=="Sales Invoice" and ref_doc.outstanding_amount > 0) \ |
|
|
|
or (dt=="Purchase Invoice" and ref_doc.outstanding_amount < 0): |
|
|
|
amount_field_party = "credit_in_account_currency" |
|
|
|
amount_field_bank = "debit_in_account_currency" |
|
|
|
else: |
|
|
|
amount_field_party = "debit_in_account_currency" |
|
|
|
amount_field_bank = "credit_in_account_currency" |
|
|
|
|
|
|
@ -576,7 +583,7 @@ def get_payment_entry_against_invoice(dt, dn): |
|
|
|
"party_account_currency": ref_doc.party_account_currency, |
|
|
|
"amount_field_party": amount_field_party, |
|
|
|
"amount_field_bank": amount_field_bank, |
|
|
|
"amount": ref_doc.outstanding_amount, |
|
|
|
"amount": abs(ref_doc.outstanding_amount), |
|
|
|
"remarks": 'Payment received against {0} {1}. {2}'.format(dt, dn, ref_doc.remarks), |
|
|
|
"is_advance": "No" |
|
|
|
}) |
|
|
@ -601,7 +608,7 @@ def get_payment_entry(ref_doc, args): |
|
|
|
"account_type": frappe.db.get_value("Account", args.get("party_account"), "account_type"), |
|
|
|
"account_currency": args.get("party_account_currency") or \ |
|
|
|
get_account_currency(args.get("party_account")), |
|
|
|
"account_balance": get_balance_on(args.get("party_account")), |
|
|
|
"balance": get_balance_on(args.get("party_account")), |
|
|
|
"party_balance": get_balance_on(party=args.get("party"), party_type=args.get("party_type")), |
|
|
|
"exchange_rate": exchange_rate, |
|
|
|
args.get("amount_field_party"): args.get("amount"), |
|
|
@ -630,6 +637,7 @@ def get_payment_entry(ref_doc, args): |
|
|
|
jv.multi_currency = 1 |
|
|
|
|
|
|
|
jv.set_amounts_in_company_currency() |
|
|
|
jv.set_total_debit_credit() |
|
|
|
|
|
|
|
return jv.as_dict() |
|
|
|
|
|
|
|