From fdefe0750aae179a6afe93e8c01582dd25ef9eb4 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 May 2013 13:59:24 +0530 Subject: [PATCH 1/4] [fixes] item valuation rate in pur cycle --- controllers/buying_controller.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index 28d2db646b..25efe4dbd3 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -367,13 +367,14 @@ class BuyingController(StockController): if d.item_code and d.qty: # if no item code, which is sometimes the case in purchase invoice, # then it is not possible to track valuation against it - d.valuation_rate = flt((flt(d.purchase_rate, self.precision.item.purchase_rate) or - flt(d.rate, self.precision.item.rate) + + d.valuation_rate = flt(((flt(d.purchase_rate, self.precision.item.purchase_rate) or + flt(d.rate, self.precision.item.rate)) + (flt(d.item_tax_amount, self.precision.item.item_tax_amount) + flt(d.rm_supp_cost, self.precision.item.rm_supp_cost)) / flt(d.qty, self.precision.item.qty)) / flt(d.conversion_factor, self.precision.item.conversion_factor), - self.precision.item.valuation_rate) + self.precision.item.valuation_rate) + else: d.valuation_rate = 0.0 From 9053cbc9f83b2ec70372d24d93ecba45bb0b7043 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 May 2013 15:28:44 +0530 Subject: [PATCH 2/4] [fixes][patch] update valuation rate in purchase cycle and repost patch --- controllers/buying_controller.py | 1 - patches/may_2013/p02_update_valuation_rate.py | 48 +++++++++++++++++++ patches/patch_list.py | 1 + 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 patches/may_2013/p02_update_valuation_rate.py diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index 25efe4dbd3..3deda0284b 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -374,7 +374,6 @@ class BuyingController(StockController): flt(d.qty, self.precision.item.qty)) / flt(d.conversion_factor, self.precision.item.conversion_factor), self.precision.item.valuation_rate) - else: d.valuation_rate = 0.0 diff --git a/patches/may_2013/p02_update_valuation_rate.py b/patches/may_2013/p02_update_valuation_rate.py new file mode 100644 index 0000000000..d538d609dd --- /dev/null +++ b/patches/may_2013/p02_update_valuation_rate.py @@ -0,0 +1,48 @@ +# ERPNext - web based ERP (http://erpnext.com) +# Copyright (C) 2012 Web Notes Technologies Pvt Ltd +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from __future__ import unicode_literals +import webnotes +def execute(): + from stock.stock_ledger import update_entries_after + item_warehouse = [] + # update valuation_rate in transaction + doctypes = {"Purchase Receipt": "purchase_receipt_details", + "Purchase Invoice": "entries"} + + for dt in doctypes: + for d in webnotes.conn.sql("""select name from `tab%s` + where modified >= '2013-05-09' and docstatus=1""" % dt): + rec = webnotes.get_obj(dt, d[0]) + rec.update_valuation_rate(doctypes[dt]) + + for item in rec.doclist.get({"parentfield": doctypes[dt]}): + webnotes.conn.sql("""update `tab%s Item` set valuation_rate = %s + where name = %s"""% (dt, '%s', '%s'), tuple([item.valuation_rate, item.name])) + + if dt == "Purchase Receipt": + webnotes.conn.sql("""update `tabStock Ledger Entry` set incoming_rate = %s + where voucher_detail_no = %s""", (item.valuation_rate, item.name)) + if [item.item_code, item.warehouse] not in item_warehouse: + item_warehouse.append([item.item_code, item.warehouse]) + + for d in item_warehouse: + try: + update_entries_after({"item_code": d[0], "warehouse": d[1], + "posting_date": "2013-01-01", "posting_time": "00:05:00"}) + webnotes.conn.commit() + except: + pass \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 16100097ce..bd7acb2fc6 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -248,4 +248,5 @@ patch_list = [ "patches.april_2013.p08_price_list_country", "patches.may_2013.repost_stock_for_no_posting_time", "patches.may_2013.p01_conversion_factor_and_aii", + "patches.may_2013.p02_update_valuation_rate", ] \ No newline at end of file From f8525fea063665a7078dc1a2ef43eaece34ec169 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 May 2013 15:30:02 +0530 Subject: [PATCH 3/4] [fixes][patch] update valuation rate in purchase cycle and repost patch --- patches/may_2013/p02_update_valuation_rate.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patches/may_2013/p02_update_valuation_rate.py b/patches/may_2013/p02_update_valuation_rate.py index d538d609dd..280473ccef 100644 --- a/patches/may_2013/p02_update_valuation_rate.py +++ b/patches/may_2013/p02_update_valuation_rate.py @@ -20,8 +20,7 @@ def execute(): from stock.stock_ledger import update_entries_after item_warehouse = [] # update valuation_rate in transaction - doctypes = {"Purchase Receipt": "purchase_receipt_details", - "Purchase Invoice": "entries"} + doctypes = {"Purchase Receipt": "purchase_receipt_details", "Purchase Invoice": "entries"} for dt in doctypes: for d in webnotes.conn.sql("""select name from `tab%s` From a35466b00862d0c5feb05443b37b8c665ce25e61 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 20 May 2013 18:32:06 +0530 Subject: [PATCH 4/4] [price list] on deletion of price list, delete all item price record for the same price list --- setup/doctype/price_list/price_list.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup/doctype/price_list/price_list.py b/setup/doctype/price_list/price_list.py index ae49bf868d..5c03a3a853 100644 --- a/setup/doctype/price_list/price_list.py +++ b/setup/doctype/price_list/price_list.py @@ -33,3 +33,6 @@ class DocType: msgprint(_("""Please check "Valid For All Countries" or \ enter atlease one row in the "Countries" table."""), raise_exception=True) + def on_trash(self): + webnotes.conn.sql("""delete from `tabItem Price` where price_list_name = %s""", + self.doc.name) \ No newline at end of file