brotherton-erpnext/erpnext/patches/v5_0/recalculate_total_amount_in_jv.py

27 lines
1.1 KiB
Python

# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
from frappe.utils import money_in_words
def execute():
company_currency = dict(frappe.db.sql("select name, default_currency from `tabCompany`"))
bank_or_cash_accounts = frappe.db.sql_list("""select name from `tabAccount`
where account_type in ('Bank', 'Cash') and docstatus < 2""")
for je in frappe.db.sql_list("""select name from `tabJournal Entry` where docstatus < 2"""):
total_amount = 0
total_amount_in_words = ""
je_doc = frappe.get_doc('Journal Entry', je)
for d in je_doc.get("accounts"):
if (d.party_type and d.party) or d.account in bank_or_cash_accounts:
total_amount = d.debit or d.credit
if total_amount:
total_amount_in_words = money_in_words(total_amount, company_currency.get(je_doc.company))
if total_amount:
frappe.db.sql("""update `tabJournal Entry` set total_amount=%s, total_amount_in_words=%s
where name = %s""", (total_amount, total_amount_in_words, je))