From 82a21beba04bde8ec5b1ee6402c2812b7cef2ecf Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 22 Jan 2014 16:55:32 +0530 Subject: [PATCH 01/11] Item List refresh when price list changed in POS --- accounts/doctype/sales_invoice/pos.js | 52 +++++++++++++++------------ 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/accounts/doctype/sales_invoice/pos.js b/accounts/doctype/sales_invoice/pos.js index b71b45e55b..21ccd01eaa 100644 --- a/accounts/doctype/sales_invoice/pos.js +++ b/accounts/doctype/sales_invoice/pos.js @@ -109,6 +109,7 @@ erpnext.POS = Class.extend({ this.party = party; this.price_list = (party == "Customer" ? this.frm.doc.selling_price_list : this.frm.doc.buying_price_list); + this.price_list_field = (party == "Customer" ? "selling_price_list" : "buying_price_list"); this.sales_or_purchase = (party == "Customer" ? "Sales" : "Purchase"); this.net_total = "net_total_" + export_or_import; this.grand_total = "grand_total_" + export_or_import; @@ -324,10 +325,12 @@ erpnext.POS = Class.extend({ } } }); - me.refresh(); + this.refresh(); }, refresh: function() { var me = this; + + this.refresh_item_list(); this.party_field.set_input(this.frm.doc[this.party.toLowerCase()]); this.barcode.set_input(""); @@ -350,6 +353,14 @@ erpnext.POS = Class.extend({ this.make_party(); } }, + refresh_item_list: function() { + var me = this; + // refresh item list on change of price list + if (this.frm.doc[this.price_list_field] != this.price_list) { + this.price_list = this.frm.doc[this.price_list_field]; + this.make_item_list(); + } + }, show_items_in_item_cart: function() { var me = this; var $items = this.wrapper.find("#cart tbody").empty(); @@ -383,9 +394,8 @@ erpnext.POS = Class.extend({ )).appendTo($items); }); - this.wrapper.find(".increase-qty, .decrease-qty").on("click", function() { - var item_code = $(this).closest("tr").attr("id"); - me.selected_item_qty_operation(item_code, $(this).attr("class")); + this.wrapper.find("input.qty").on("focus", function() { + $(this).select(); }); }, show_taxes: function() { @@ -422,10 +432,16 @@ erpnext.POS = Class.extend({ // append quantity to the respective item after change from input box $(this.wrapper).find("input.qty").on("change", function() { - var item_code = $(this).closest("tr")[0].id; + var item_code = $(this).closest("tr").attr("id"); me.update_qty(item_code, $(this).val()); }); + // increase/decrease qty on plus/minus button + $(this.wrapper).find(".increase-qty, .decrease-qty").on("click", function() { + var tr = $(this).closest("tr"); + me.increase_decrease_qty(tr, $(this).attr("class")); + }); + // on td click toggle the highlighting of row $(this.wrapper).find("#cart tbody tr td").on("click", function() { var row = $(this).closest("tr"); @@ -443,6 +459,15 @@ erpnext.POS = Class.extend({ me.refresh_delete_btn(); this.barcode.$input.focus(); }, + increase_decrease_qty: function(tr, operation) { + var item_code = tr.attr("id"); + var item_qty = cint(tr.find("input.qty").val()); + + if (operation == "increase-qty") + this.update_qty(item_code, item_qty + 1); + else if (operation == "decrease-qty" && item_qty != 1) + this.update_qty(item_code, item_qty - 1); + }, disable_text_box_and_button: function() { var me = this; // if form is submitted & cancelled then disable all input box & buttons @@ -518,23 +543,6 @@ erpnext.POS = Class.extend({ this.frm.script_manager.trigger("calculate_taxes_and_totals"); this.refresh(); }, - selected_item_qty_operation: function(item_code, operation) { - var me = this; - var child = wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, - this.frm.cscript.fname, this.frm.doctype); - - $.each(child, function(i, d) { - if (d.item_code == item_code) { - if (operation == "increase-qty") - d.qty += 1; - else if (operation == "decrease-qty") - d.qty != 1 ? d.qty -= 1 : d.qty = 1; - - me.frm.script_manager.trigger("qty", d.doctype, d.name); - me.refresh(); - } - }); - }, make_payment: function() { var me = this; var no_of_items = $(this.wrapper).find("#cart tbody tr").length; From 8589b1db2208ea0472480b41614a23066835d178 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 22 Jan 2014 19:25:51 +0530 Subject: [PATCH 02/11] Use model set_value for updating values from POS --- accounts/doctype/sales_invoice/pos.js | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/accounts/doctype/sales_invoice/pos.js b/accounts/doctype/sales_invoice/pos.js index 21ccd01eaa..a594f7f941 100644 --- a/accounts/doctype/sales_invoice/pos.js +++ b/accounts/doctype/sales_invoice/pos.js @@ -270,22 +270,17 @@ erpnext.POS = Class.extend({ this.frm.cscript.fname, this.frm.doctype), function(i, d) { if (d.item_code == item_code) { caught = true; - if (serial_no) { - d.serial_no += '\n' + serial_no; - me.frm.script_manager.trigger("serial_no", d.doctype, d.name); - } - else { - d.qty += 1; - me.frm.script_manager.trigger("qty", d.doctype, d.name); - } + if (serial_no) + wn.model.set_value(d.doctype, d.name, "serial_no", d.serial_no + '\n' + serial_no); + else + wn.model.set_value(d.doctype, d.name, "qty", d.qty + 1); } }); } // if item not found then add new item - if (!caught) { + if (!caught) this.add_new_item_to_grid(item_code, serial_no); - } this.refresh(); this.refresh_search_box(); @@ -320,8 +315,7 @@ erpnext.POS = Class.extend({ wn.model.clear_doc(d.doctype, d.name); me.refresh_grid(); } else { - d.qty = qty; - me.frm.script_manager.trigger("qty", d.doctype, d.name); + wn.model.set_value(d.doctype, d.name, "qty", qty); } } }); @@ -539,6 +533,7 @@ erpnext.POS = Class.extend({ this.refresh_grid(); }, refresh_grid: function() { + this.frm.dirty(); this.frm.fields_dict[this.frm.cscript.fname].grid.refresh(); this.frm.script_manager.trigger("calculate_taxes_and_totals"); this.refresh(); From 557abdebe09af858b21d2473af51bf113b0876cd Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 23 Jan 2014 13:25:26 +0530 Subject: [PATCH 03/11] order preview through customer login --- portal/templates/sale.html | 4 ++-- portal/utils.py | 12 +++++++----- selling/doctype/sales_order/templates/pages/order.py | 11 ++++++----- selling/utils/cart.py | 5 +++-- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/portal/templates/sale.html b/portal/templates/sale.html index 5dc72c793b..c0996cc4f1 100644 --- a/portal/templates/sale.html +++ b/portal/templates/sale.html @@ -10,9 +10,9 @@
  • {{ doc.name }}
  • {{ doc.name }}

    - {% if doc.name == "Not Allowed" -%} + {% if session_user == "Guest" -%} - {% else %} + {% elif doc.name != "Not Allowed"%}
    diff --git a/portal/utils.py b/portal/utils.py index 89800f3e1d..e210f1a020 100644 --- a/portal/utils.py +++ b/portal/utils.py @@ -41,21 +41,23 @@ def get_currency_context(): } def get_transaction_context(doctype, name): + context = {"session_user": webnotes.session.user} + customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, "customer") bean = webnotes.bean(doctype, name) if bean.doc.customer != customer: - return { - "doc": {"name": "Not Allowed"} - } + context.update({"doc": {"name": "Not Allowed"}}) else: - return { + context.update({ "doc": bean.doc, "doclist": bean.doclist, "webnotes": webnotes, "utils": webnotes.utils - } + }) + + return context @webnotes.whitelist(allow_guest=True) def send_message(subject="Website Query", message="", sender="", status="Open"): diff --git a/selling/doctype/sales_order/templates/pages/order.py b/selling/doctype/sales_order/templates/pages/order.py index d53a8b0f6f..9b4a83ce21 100644 --- a/selling/doctype/sales_order/templates/pages/order.py +++ b/selling/doctype/sales_order/templates/pages/order.py @@ -10,11 +10,12 @@ no_cache = True def get_context(): from portal.utils import get_transaction_context context = get_transaction_context("Sales Order", webnotes.form_dict.name) - modify_status(context.get("doc")) - context.update({ - "parent_link": "orders", - "parent_title": "My Orders" - }) + if context.get("doc").get("name") != "Not Allowed": + modify_status(context.get("doc")) + context.update({ + "parent_link": "orders", + "parent_title": "My Orders" + }) return context def modify_status(doc): diff --git a/selling/utils/cart.py b/selling/utils/cart.py index 3cd7b3c9f1..79046270a9 100644 --- a/selling/utils/cart.py +++ b/selling/utils/cart.py @@ -282,7 +282,7 @@ def apply_cart_settings(party=None, quotation=None): party = get_lead_or_customer() if not quotation: quotation = _get_cart_quotation(party) - + cart_settings = webnotes.get_obj("Shopping Cart Settings") billing_territory = get_address_territory(quotation.doc.customer_address) or \ @@ -310,7 +310,8 @@ def set_price_list_and_rate(quotation, cart_settings, billing_territory): quotation.run_method("set_price_list_and_item_details") # set it in cookies for using in product page - webnotes.local._response.set_cookie("selling_price_list", quotation.doc.selling_price_list) + if quotation.doc.selling_price_list: + webnotes.local._response.set_cookie("selling_price_list", quotation.doc.selling_price_list) def set_taxes(quotation, cart_settings, billing_territory): """set taxes based on billing territory""" From d9ba544e09e6ed87216d7a0a3e585d1a31ec2cb0 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 24 Jan 2014 15:59:05 +0530 Subject: [PATCH 04/11] Fix in Item Test Case --- stock/doctype/item/test_item.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stock/doctype/item/test_item.py b/stock/doctype/item/test_item.py index b8f6f9e246..47541749db 100644 --- a/stock/doctype/item/test_item.py +++ b/stock/doctype/item/test_item.py @@ -36,6 +36,7 @@ test_records = [ "stock_uom": "_Test UOM", "default_income_account": "Sales - _TC", "default_warehouse": "_Test Warehouse - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC" }, { "doctype": "Item Reorder", "parentfield": "item_reorder", @@ -64,6 +65,7 @@ test_records = [ "stock_uom": "_Test UOM", "default_income_account": "Sales - _TC", "default_warehouse": "_Test Warehouse - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC" }], [{ "doctype": "Item", @@ -73,6 +75,7 @@ test_records = [ "item_group": "_Test Item Group Desktops", "default_warehouse": "_Test Warehouse - _TC", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_stock_item": "Yes", "is_asset_item": "No", "has_batch_no": "No", @@ -99,6 +102,7 @@ test_records = [ "item_group": "_Test Item Group Desktops", "default_warehouse": "_Test Warehouse - _TC", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_stock_item": "Yes", "is_asset_item": "No", "has_batch_no": "No", @@ -119,6 +123,7 @@ test_records = [ "description": "_Test Sales BOM Item", "item_group": "_Test Item Group Desktops", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_stock_item": "No", "is_asset_item": "No", "has_batch_no": "No", @@ -140,6 +145,7 @@ test_records = [ "is_stock_item": "Yes", "default_warehouse": "_Test Warehouse - _TC", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_asset_item": "No", "has_batch_no": "No", "has_serial_no": "No", @@ -216,6 +222,7 @@ test_records = [ "item_group": "_Test Item Group Desktops", "default_warehouse": "_Test Warehouse - _TC", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_stock_item": "Yes", "is_asset_item": "No", "has_batch_no": "No", @@ -238,6 +245,7 @@ test_records = [ "is_stock_item": "Yes", "default_warehouse": "_Test Warehouse - _TC", "default_income_account": "Sales - _TC", + "purchase_account": "_Test Account Cost for Goods Sold - _TC", "is_asset_item": "No", "has_batch_no": "No", "has_serial_no": "No", From fc13b87fd56c6b9fa8ac8b8e9fcbf88f62c8749b Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 24 Jan 2014 18:54:50 +0530 Subject: [PATCH 05/11] Fixes in Make Demo --- accounts/doctype/sales_invoice/sales_invoice.py | 7 ++----- .../requested_items_to_be_ordered.txt | 4 ++-- utilities/demo/demo_docs/Fiscal_Year.csv | 3 ++- utilities/demo/make_demo.py | 15 +++++++++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index a39702b3fc..1768b9b02f 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -320,12 +320,9 @@ class DocType(SellingController): item = webnotes.conn.sql("select name,is_asset_item,is_sales_item from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now())"% d.item_code) acc = webnotes.conn.sql("select account_type from `tabAccount` where name = '%s' and docstatus != 2" % d.income_account) if not acc: - msgprint("Account: "+d.income_account+" does not exist in the system") - raise Exception + msgprint("Account: "+d.income_account+" does not exist in the system", raise_exception=True) elif item and item[0][1] == 'Yes' and not acc[0][0] == 'Fixed Asset Account': - msgprint("Please select income head with account type 'Fixed Asset Account' as Item %s is an asset item" % d.item_code) - raise Exception - + msgprint("Please select income head with account type 'Fixed Asset Account' as Item %s is an asset item" % d.item_code, raise_exception=True) def validate_with_previous_doc(self): super(DocType, self).validate_with_previous_doc(self.tname, { diff --git a/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.txt b/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.txt index 49c747854a..4d3558ca68 100644 --- a/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.txt +++ b/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-13 16:10:02", "docstatus": 0, - "modified": "2013-05-13 16:21:07", + "modified": "2014-01-24 18:19:11", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,7 +11,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select \n mr.name as \"Material Request:Link/Material Request:120\",\n\tmr.transaction_date as \"Date:Date:100\",\n\tmr_item.item_code as \"Item Code:Link/Item:120\",\n\tmr_item.qty as \"Qty:Float:100\",\n\tmr_item.ordered_qty as \"Ordered Qty:Float:100\", \n\t(mr_item.qty - ifnull(mr_item.ordered_qty, 0)) as \"Qty to Order:Float:100\",\n\tmr_item.item_name as \"Item Name::150\",\n\tmr_item.description as \"Description::200\"\nfrom\n\t`tabMaterial Request` mr, `tabMaterial Request Item` mr_item\nwhere\n\tmr_item.parent = mr.name\n\tand mr.material_request_type = \"Purchase\"\n\tand mr.docstatus = 1\n\tand mr.status != \"Stopped\"\n\tand ifnull(mr_item.ordered_qty, 0) < ifnull(mr_item.qty, 0)\norder by mr.transaction_date asc", + "query": "select \n mr.name as \"Material Request:Link/Material Request:120\",\n\tmr.transaction_date as \"Date:Date:100\",\n\tmr_item.item_code as \"Item Code:Link/Item:120\",\n\tsum(ifnull(mr_item.qty, 0)) as \"Qty:Float:100\",\n\tsum(ifnull(mr_item.ordered_qty, 0)) as \"Ordered Qty:Float:100\", \n\t(sum(mr_item.qty) - sum(ifnull(mr_item.ordered_qty, 0))) as \"Qty to Order:Float:100\",\n\tmr_item.item_name as \"Item Name::150\",\n\tmr_item.description as \"Description::200\"\nfrom\n\t`tabMaterial Request` mr, `tabMaterial Request Item` mr_item\nwhere\n\tmr_item.parent = mr.name\n\tand mr.material_request_type = \"Purchase\"\n\tand mr.docstatus = 1\n\tand mr.status != \"Stopped\"\ngroup by mr.name, mr_item.item_code\nhaving\n\tsum(ifnull(mr_item.ordered_qty, 0)) < sum(ifnull(mr_item.qty, 0))\norder by mr.transaction_date asc", "ref_doctype": "Purchase Order", "report_name": "Requested Items To Be Ordered", "report_type": "Query Report" diff --git a/utilities/demo/demo_docs/Fiscal_Year.csv b/utilities/demo/demo_docs/Fiscal_Year.csv index d56b1b9b94..1a06e872b8 100644 --- a/utilities/demo/demo_docs/Fiscal_Year.csv +++ b/utilities/demo/demo_docs/Fiscal_Year.csv @@ -20,4 +20,5 @@ Info:,,,,,"One of: No, Yes" Start entering data below this line,,,, ,,2009,01-01-2009,31-12-2009,No ,,2010,01-01-2010,31-12-2010,No -,,2011,01-01-2011,31-12-2011,No \ No newline at end of file +,,2011,01-01-2011,31-12-2011,No +,,2012,01-01-2012,31-12-2012,No \ No newline at end of file diff --git a/utilities/demo/make_demo.py b/utilities/demo/make_demo.py index b98fd7ac9c..99c3e8b7e8 100644 --- a/utilities/demo/make_demo.py +++ b/utilities/demo/make_demo.py @@ -19,7 +19,7 @@ company_abbr = "WP" country = "United States" currency = "USD" time_zone = "America/New_York" -start_date = '2013-01-01' +start_date = '2014-01-01' bank_name = "Citibank" runs_for = None prob = { @@ -105,6 +105,10 @@ def run_accounts(current_date): for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Sales Invoice")]: si = webnotes.bean(make_sales_invoice(so)) si.doc.posting_date = current_date + for d in si.doclist.get({"parentfield": "entries"}): + if not d.income_account: + d.income_account = "Sales - {}".format(company_abbr) + si.insert() si.submit() webnotes.conn.commit() @@ -170,6 +174,9 @@ def run_stock(current_date): dn = webnotes.bean(make_delivery_note(so)) dn.doc.posting_date = current_date dn.doc.fiscal_year = current_date.year + for d in dn.doclist.get({"parentfield": "delivery_note_details"}): + d.expense_account = "Cost of Goods Sold - {}".format(company_abbr) + dn.insert() try: dn.submit() @@ -236,7 +243,7 @@ def run_manufacturing(current_date): ppt = webnotes.bean("Production Planning Tool", "Production Planning Tool") ppt.doc.company = company ppt.doc.use_multi_level_bom = 1 - ppt.doc.purchase_request_for_warehouse = "Stores - WP" + ppt.doc.purchase_request_for_warehouse = "Stores - {}".format(company_abbr) ppt.run_method("get_open_sales_orders") ppt.run_method("get_items_from_so") ppt.run_method("raise_production_order") @@ -380,8 +387,8 @@ def complete_setup(): setup_account({ "first_name": "Test", "last_name": "User", - "fy_start_date": "2013-01-01", - "fy_end_date": "2013-12-31", + "fy_start_date": "2014-01-01", + "fy_end_date": "2014-12-31", "industry": "Manufacturing", "company_name": company, "company_abbr": company_abbr, From c4ee74857de0e41760d709e7c195baaec329808d Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 24 Jan 2014 21:53:11 +0530 Subject: [PATCH 06/11] BugFix: Production Planning Tool - get_raw_materials --- .../production_planning_tool/production_planning_tool.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py index 29232f5f51..90d9dc57cd 100644 --- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -243,10 +243,10 @@ class DocType: "item_code": [qty_required, description, stock_uom, min_order_qty] } """ - bom_wise_item_details = {} item_list = [] for bom, so_wise_qty in bom_dict.items(): + bom_wise_item_details = {} if self.doc.use_multi_level_bom: # get all raw materials with sub assembly childs for d in webnotes.conn.sql("""select fb.item_code, From 49e8e783e3e1b32f6e1f40dca59c5aef61f9a472 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Mon, 27 Jan 2014 11:12:24 +0530 Subject: [PATCH 07/11] webnotes/erpnext#1353 allow rename for price list --- stock/doctype/price_list/price_list.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stock/doctype/price_list/price_list.txt b/stock/doctype/price_list/price_list.txt index daa89d1cc5..cc70fd897e 100644 --- a/stock/doctype/price_list/price_list.txt +++ b/stock/doctype/price_list/price_list.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-25 11:35:09", "docstatus": 0, - "modified": "2014-01-17 13:29:39", + "modified": "2014-01-27 11:11:08", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,6 +11,7 @@ "allow_copy": 0, "allow_email": 1, "allow_print": 1, + "allow_rename": 1, "autoname": "field:price_list_name", "description": "Price List Master", "doctype": "DocType", From fa9fabaa49f749b7ec28611998b51d0ddb25ca50 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 27 Jan 2014 12:46:18 +0530 Subject: [PATCH 08/11] Serial no status fix: patch to set status not available where no sle exists --- .../1401/fix_serial_no_status_and_warehouse.py | 17 +++++++++++++++++ patches/patch_list.py | 1 + stock/doctype/serial_no/serial_no.py | 11 +++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 patches/1401/fix_serial_no_status_and_warehouse.py diff --git a/patches/1401/fix_serial_no_status_and_warehouse.py b/patches/1401/fix_serial_no_status_and_warehouse.py new file mode 100644 index 0000000000..fe43c282d8 --- /dev/null +++ b/patches/1401/fix_serial_no_status_and_warehouse.py @@ -0,0 +1,17 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes + +def execute(): + serial_nos = webnotes.conn.sql("""select name from `tabSerial No` where docstatus=0 + and status in ('Available', 'Sales Returned') and ifnull(warehouse, '') = ''""") + for sr in serial_nos: + try: + sr_bean = webnotes.bean("Serial No", sr[0]) + sr_bean.make_controller().via_stock_ledger = True + sr_bean.save() + webnotes.conn.commit() + except: + pass \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 89e33091bf..d87d3ad36f 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -267,4 +267,5 @@ patch_list = [ "patches.1401.p01_make_buying_selling_as_check_box_in_price_list", "patches.1401.update_billing_status_for_zero_value_order", "patches.1401.enable_all_price_list", + "patches.1401.fix_serial_no_status_and_warehouse", ] \ No newline at end of file diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py index bd2704d8ac..e6557b4284 100644 --- a/stock/doctype/serial_no/serial_no.py +++ b/stock/doctype/serial_no/serial_no.py @@ -87,6 +87,8 @@ class DocType(StockController): self.doc.status = "Sales Returned" else: self.doc.status = "Available" + if not self.doc.warehouse: + self.doc.warehouse = last_sle.warehouse else: if document_type == "Purchase Return": self.doc.status = "Purchase Returned" @@ -94,6 +96,8 @@ class DocType(StockController): self.doc.status = "Delivered" else: self.doc.status = "Not Available" + else: + self.doc.status = "Not Available" def set_purchase_details(self, purchase_sle): if purchase_sle: @@ -185,10 +189,9 @@ class DocType(StockController): def on_stock_ledger_entry(self): if self.via_stock_ledger and not self.doc.fields.get("__islocal"): last_sle = self.get_last_sle() - if last_sle: - self.set_status(last_sle.get("last_sle")) - self.set_purchase_details(last_sle.get("purchase_sle")) - self.set_sales_details(last_sle.get("delivery_sle")) + self.set_status(last_sle.get("last_sle")) + self.set_purchase_details(last_sle.get("purchase_sle")) + self.set_sales_details(last_sle.get("delivery_sle")) def on_communication(self): return From b3d26c08f609f22ca197fd815ccfe0f0f9749b24 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 27 Jan 2014 14:58:55 +0530 Subject: [PATCH 09/11] Fixed planned qty bug and patch to recalculate planned qty --- patches/patch_list.py | 1 + stock/doctype/stock_entry/stock_entry.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/patches/patch_list.py b/patches/patch_list.py index d87d3ad36f..30617205c8 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -268,4 +268,5 @@ patch_list = [ "patches.1401.update_billing_status_for_zero_value_order", "patches.1401.enable_all_price_list", "patches.1401.fix_serial_no_status_and_warehouse", + "patches.1401.fix_planned_qty", ] \ No newline at end of file diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 7dec8785c4..c322a1ac45 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -346,7 +346,8 @@ class DocType(StockController): pro_bean = webnotes.bean("Production Order", self.doc.production_order) _validate_production_order(pro_bean) self.update_produced_qty(pro_bean) - self.update_planned_qty(pro_bean) + if self.doc.purpose == "Manufacture/Repack": + self.update_planned_qty(pro_bean) def update_produced_qty(self, pro_bean): if self.doc.purpose == "Manufacture/Repack": From 44a40b860ed54fc6808d6328a5e6c1acb5702664 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 27 Jan 2014 15:02:30 +0530 Subject: [PATCH 10/11] Fixed planned qty bug and patch to recalculate planned qty --- patches/1401/fix_planned_qty.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 patches/1401/fix_planned_qty.py diff --git a/patches/1401/fix_planned_qty.py b/patches/1401/fix_planned_qty.py new file mode 100644 index 0000000000..96f56fb88a --- /dev/null +++ b/patches/1401/fix_planned_qty.py @@ -0,0 +1,10 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +import webnotes + +def execute(): + from utilities.repost_stock import repost_stock + for d in webnotes.conn.sql("""select distinct production_item, fg_warehouse + from `tabProduction Order` where docstatus>0""", as_dict=1): + repost_stock(d.production_item, d.fg_warehouse) \ No newline at end of file From 8821541f33de980d6e42780e42eb15a666b0075b Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Mon, 27 Jan 2014 17:49:45 +0600 Subject: [PATCH 11/11] bumped to version 3.7.0 --- config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index f71ed9b572..91c1624e13 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.6.6", + "app_version": "3.7.0", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": { @@ -74,5 +74,5 @@ "type": "module" } }, - "requires_framework_version": "==3.7.5" + "requires_framework_version": "==3.8.0" } \ No newline at end of file