diff --git a/patches/september_2013/p01_fix_buying_amount_gl_entries.py b/patches/september_2013/p01_fix_buying_amount_gl_entries.py index 7812a2aaaa..0a25cd4faf 100644 --- a/patches/september_2013/p01_fix_buying_amount_gl_entries.py +++ b/patches/september_2013/p01_fix_buying_amount_gl_entries.py @@ -12,12 +12,12 @@ def execute(): # fix delivery note for dn in webnotes.conn.sql_list("""select name from `tabDelivery Note` where docstatus=1 - and posting_date >= "2013-08-06" """): + and posting_date >= "2013-08-06" order by posting_date"""): recreate_gl_entries("Delivery Note", dn, "delivery_note_details") # fix sales invoice for si in webnotes.conn.sql_list("""select name from `tabSales Invoice` where docstatus=1 - and update_stock=1 and posting_date >= "2013-08-06" """): + and update_stock=1 and posting_date >= "2013-08-06" order by posting_date"""): recreate_gl_entries("Sales Invoice", si, "entries") def recreate_gl_entries(doctype, name, parentfield): @@ -27,24 +27,34 @@ def recreate_gl_entries(doctype, name, parentfield): # update missing expense account and cost center for item in bean.doclist.get({"parentfield": parentfield}): - if item.buying_amount and not (item.expense_account and item.cost_center): + if item.buying_amount and not validate_item_values(item, bean.doc.company): res = webnotes.conn.sql("""select expense_account, cost_center from `tab%s` child where docstatus=1 and item_code=%s and ifnull(expense_account, '')!='' and ifnull(cost_center, '')!='' and (select company from `tabAccount` ac where ac.name=child.expense_account)=%s and - (select company from `tabCost Center` cc where cc.name=child.cost_center)=%s + (select company from `tabCost Center` cc where cc.name=child.cost_center)=%s and order by creation desc limit 1""" % (item.doctype, "%s", "%s", "%s"), (item.item_code, bean.doc.company, bean.doc.company)) if res: - if not item.expense_account: - item.expense_account = res[0][0] - if not item.cost_center: - item.cost_center = res[0][1] - + item.expense_account = res[0][0] + item.cost_center = res[0][1] + webnotes.conn.set_value(item.doctype, item.name, "expense_account", item.expense_account) webnotes.conn.set_value(item.doctype, item.name, "cost_center", item.cost_center) # remove gl entries webnotes.conn.sql("""delete from `tabGL Entry` where voucher_type=%s and voucher_no=%s""", (doctype, name)) - bean.run_method("make_gl_entries") \ No newline at end of file + bean.run_method("make_gl_entries") + +def validate_item_values(item, company): + if item.expense_account and \ + webnotes.conn.get_value("Account", item.expense_account, "company")!=company: + return False + elif item.cost_center and \ + webnotes.conn.get_value("Cost Center", item.cost_center, "company")!=company: + return False + elif not (item.expense_account and item.cost_center): + return False + + return True \ No newline at end of file