diff --git a/controllers/stock_controller.py b/controllers/stock_controller.py index 54b6d9f983..359dc9e86f 100644 --- a/controllers/stock_controller.py +++ b/controllers/stock_controller.py @@ -12,18 +12,17 @@ from accounts.general_ledger import make_gl_entries, delete_gl_entries class StockController(AccountsController): def make_gl_entries(self): - if not cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")): - return - - warehouse_account = self.get_warehouse_account() - - if self.doc.docstatus==1: - gl_entries = self.get_gl_entries_for_stock(warehouse_account) - make_gl_entries(gl_entries) - else: + if self.doc.docstatus == 2: delete_gl_entries(voucher_type=self.doc.doctype, voucher_no=self.doc.name) + + if cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")): + warehouse_account = self.get_warehouse_account() - self.update_gl_entries_after(warehouse_account) + if self.doc.docstatus==1: + gl_entries = self.get_gl_entries_for_stock(warehouse_account) + make_gl_entries(gl_entries) + + self.update_gl_entries_after(warehouse_account) def get_gl_entries_for_stock(self, warehouse_account=None, default_expense_account=None, default_cost_center=None): @@ -96,7 +95,6 @@ class StockController(AccountsController): return warehouse_account def update_gl_entries_after(self, warehouse_account=None): - from accounts.utils import get_stock_and_account_difference future_stock_vouchers = self.get_future_stock_vouchers() gle = self.get_voucherwise_gl_entries(future_stock_vouchers) if not warehouse_account: diff --git a/patches/october_2013/p05_delete_gl_entries_for_cancelled_vouchers.py b/patches/october_2013/p05_delete_gl_entries_for_cancelled_vouchers.py new file mode 100644 index 0000000000..ebe7a695f3 --- /dev/null +++ b/patches/october_2013/p05_delete_gl_entries_for_cancelled_vouchers.py @@ -0,0 +1,17 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +# License: GNU General Public License v3. See license.txt + +def execute(): + import webnotes + entries = webnotes.conn.sql("""select voucher_type, voucher_no + from `tabGL Entry` group by voucher_type, voucher_no""", as_dict=1) + for entry in entries: + try: + cancelled_voucher = webnotes.conn.sql("""select name from `tab%s` where name = %s + and docstatus=2""" % (entry['voucher_type'], "%s"), entry['voucher_no']) + if cancelled_voucher: + print entry + webnotes.conn.sql("""delete from `tabGL Entry` where voucher_type = %s and + voucher_no = %s""", (entry['voucher_type'], entry['voucher_no'])) + except: + pass \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 11bb8dc7fd..565ff9915f 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -226,4 +226,5 @@ patch_list = [ "execute:webnotes.delete_doc('Report', 'Item-wise Price List')", "patches.october_2013.p03_remove_sales_and_purchase_return_tool", "patches.october_2013.p04_update_report_permission", + "patches.october_2013.p05_delete_gl_entries_for_cancelled_vouchers", ] \ No newline at end of file