diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 7d6eba8bc8..6971e0df1d 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -303,3 +303,4 @@ erpnext.patches.v7_0.migrate_schools_to_erpnext erpnext.patches.v7_0.remove_administrator_role_in_doctypes erpnext.patches.v7_0.rename_fee_amount_to_fee_component erpnext.patches.v7_0.calculate_total_costing_amount +erpnext.patches.v7_0.fix_nonwarehouse_ledger_gl_entries_for_transactions diff --git a/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py new file mode 100644 index 0000000000..af921dffed --- /dev/null +++ b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py @@ -0,0 +1,45 @@ +# 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 + +def execute(): + frappe.reload_doctype("Account") + + warehouses = frappe.db.sql_list("""select name from tabAccount + where ifnull(account_type, '') = 'Stock' and ifnull(is_group, 0) = 0 + and warehouse is null""") + if warehouses: + warehouses = set_warehouse_for_stock_account(warehouses) + + stock_vouchers = frappe.db.sql("""select distinct sle.voucher_type, sle.voucher_no + from `tabStock Ledger Entry` sle + where sle.warehouse in (%s) + order by sle.posting_date""" % + ', '.join(['%s']*len(warehouses)), tuple(warehouses)) + + rejected = [] + for voucher_type, voucher_no in stock_vouchers: + try: + frappe.db.sql("""delete from `tabGL Entry` + where voucher_type=%s and voucher_no=%s""", (voucher_type, voucher_no)) + + voucher = frappe.get_doc(voucher_type, voucher_no) + voucher.make_gl_entries() + frappe.db.commit() + except Exception, e: + print frappe.get_traceback() + rejected.append([voucher_type, voucher_no]) + frappe.db.rollback() + + print rejected + +def set_warehouse_for_stock_account(warehouse_account): + for account in warehouse_account: + if frappe.db.exists('Warehouse', account): + frappe.db.set_value("Account", account, "warehouse", account) + else: + warehouse_account.remove(account) + + return warehouse_account \ No newline at end of file