diff --git a/accounts/doctype/journal_voucher/journal_voucher.txt b/accounts/doctype/journal_voucher/journal_voucher.txt index dc857c8ce19..471b9f233a0 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.txt +++ b/accounts/doctype/journal_voucher/journal_voucher.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-03-07 12:35:57", + "creation": "2013-03-25 10:53:52", "docstatus": 0, - "modified": "2013-03-21 13:02:27", + "modified": "2013-04-05 11:10:35", "modified_by": "Administrator", "owner": "Administrator" }, @@ -24,9 +24,6 @@ "permlevel": 0 }, { - "amend": 1, - "cancel": 1, - "create": 1, "doctype": "DocPerm", "name": "__common__", "parent": "Journal Voucher", @@ -34,9 +31,7 @@ "parenttype": "DocType", "permlevel": 0, "read": 1, - "report": 1, - "submit": 1, - "write": 1 + "report": 1 }, { "doctype": "DocType", @@ -47,6 +42,7 @@ "fieldname": "column_break0", "fieldtype": "Column Break", "oldfieldtype": "Column Break", + "read_only": 0, "width": "50%" }, { @@ -60,6 +56,7 @@ "oldfieldtype": "Select", "options": "JV", "print_hide": 1, + "read_only": 0, "reqd": 1 }, { @@ -73,6 +70,7 @@ "oldfieldtype": "Select", "options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher", "print_hide": 0, + "read_only": 0, "search_index": 1 }, { @@ -80,6 +78,7 @@ "fieldname": "column_break1", "fieldtype": "Column Break", "oldfieldtype": "Column Break", + "read_only": 0, "width": "50%" }, { @@ -93,6 +92,7 @@ "no_copy": 1, "oldfieldname": "posting_date", "oldfieldtype": "Date", + "read_only": 0, "reqd": 1, "search_index": 1 }, @@ -102,7 +102,8 @@ "fieldtype": "Section Break", "label": "Journal Entries", "oldfieldtype": "Section Break", - "options": "Simple" + "options": "Simple", + "read_only": 0 }, { "allow_on_submit": 1, @@ -113,13 +114,15 @@ "oldfieldname": "entries", "oldfieldtype": "Table", "options": "Journal Voucher Detail", - "print_hide": 0 + "print_hide": 0, + "read_only": 0 }, { "doctype": "DocField", "fieldname": "section_break99", "fieldtype": "Section Break", - "options": "Simple" + "options": "Simple", + "read_only": 0 }, { "doctype": "DocField", @@ -149,7 +152,8 @@ { "doctype": "DocField", "fieldname": "column_break99", - "fieldtype": "Column Break" + "fieldtype": "Column Break", + "read_only": 0 }, { "doctype": "DocField", @@ -168,13 +172,15 @@ "fieldname": "get_balance", "fieldtype": "Button", "label": "Make Difference Entry", - "oldfieldtype": "Button" + "oldfieldtype": "Button", + "read_only": 0 }, { "doctype": "DocField", "fieldname": "reference", "fieldtype": "Section Break", - "label": "Reference" + "label": "Reference", + "read_only": 0 }, { "description": "eg. Cheque Number", @@ -187,6 +193,7 @@ "no_copy": 1, "oldfieldname": "cheque_no", "oldfieldtype": "Data", + "read_only": 0, "search_index": 1 }, { @@ -196,7 +203,8 @@ "label": "Reference Date", "no_copy": 1, "oldfieldname": "cheque_date", - "oldfieldtype": "Date" + "oldfieldtype": "Date", + "read_only": 0 }, { "doctype": "DocField", @@ -214,7 +222,8 @@ { "doctype": "DocField", "fieldname": "column_break98", - "fieldtype": "Column Break" + "fieldtype": "Column Break", + "read_only": 0 }, { "doctype": "DocField", @@ -224,7 +233,8 @@ "label": "User Remark", "no_copy": 1, "oldfieldname": "user_remark", - "oldfieldtype": "Small Text" + "oldfieldtype": "Small Text", + "read_only": 0 }, { "description": "User Remark will be added to Auto Remark", @@ -247,7 +257,8 @@ "label": "Bill No", "oldfieldname": "bill_no", "oldfieldtype": "Data", - "print_hide": 1 + "print_hide": 1, + "read_only": 0 }, { "doctype": "DocField", @@ -256,7 +267,8 @@ "label": "Bill Date", "oldfieldname": "bill_date", "oldfieldtype": "Date", - "print_hide": 1 + "print_hide": 1, + "read_only": 0 }, { "doctype": "DocField", @@ -265,20 +277,23 @@ "label": "Due Date", "oldfieldname": "due_date", "oldfieldtype": "Date", - "print_hide": 0 + "print_hide": 0, + "read_only": 0 }, { "doctype": "DocField", "fieldname": "addtional_info", "fieldtype": "Section Break", "label": "More Info", - "oldfieldtype": "Section Break" + "oldfieldtype": "Section Break", + "read_only": 0 }, { "doctype": "DocField", "fieldname": "column_break2", "fieldtype": "Column Break", "oldfieldtype": "Column Break", + "read_only": 0, "width": "50%" }, { @@ -293,6 +308,7 @@ "oldfieldtype": "Select", "options": "No\nYes", "print_hide": 1, + "read_only": 0, "search_index": 1 }, { @@ -304,7 +320,8 @@ "no_copy": 0, "oldfieldname": "aging_date", "oldfieldtype": "Date", - "print_hide": 1 + "print_hide": 1, + "read_only": 0 }, { "default": "Accounts Receivable", @@ -315,6 +332,7 @@ "label": "Write Off Based On", "options": "Accounts Receivable\nAccounts Payable", "print_hide": 1, + "read_only": 0, "report_hide": 1 }, { @@ -325,6 +343,7 @@ "label": "Write Off Amount <=", "options": "Company:company:default_currency", "print_hide": 1, + "read_only": 0, "report_hide": 1 }, { @@ -334,13 +353,22 @@ "fieldtype": "Button", "label": "Get Outstanding Invoices", "options": "get_outstanding_invoices", - "print_hide": 1 + "print_hide": 1, + "read_only": 0 + }, + { + "doctype": "DocField", + "fieldname": "letter_head", + "fieldtype": "Link", + "label": "Letter Head", + "options": "Letter Head" }, { "doctype": "DocField", "fieldname": "column_break3", "fieldtype": "Column Break", "oldfieldtype": "Column Break", + "read_only": 0, "width": "50%" }, { @@ -351,6 +379,7 @@ "label": "Pay To / Recd From", "no_copy": 1, "print_hide": 0, + "read_only": 0, "report_hide": 1 }, { @@ -386,6 +415,7 @@ "oldfieldtype": "Select", "options": "link:Fiscal Year", "print_hide": 1, + "read_only": 0, "reqd": 1, "search_index": 1 }, @@ -399,6 +429,7 @@ "oldfieldtype": "Link", "options": "Company", "print_hide": 1, + "read_only": 0, "reqd": 1, "search_index": 1 }, @@ -413,6 +444,7 @@ "oldfieldtype": "Link", "options": "Print Heading", "print_hide": 1, + "read_only": 0, "report_hide": 1 }, { @@ -436,7 +468,8 @@ "no_copy": 1, "oldfieldname": "amendment_date", "oldfieldtype": "Date", - "print_hide": 1 + "print_hide": 1, + "read_only": 0 }, { "doctype": "DocField", @@ -450,11 +483,30 @@ "read_only": 1 }, { + "amend": 1, + "cancel": 1, + "create": 1, "doctype": "DocPerm", - "role": "Accounts Manager" + "role": "Accounts User", + "submit": 1, + "write": 1 }, { + "amend": 1, + "cancel": 1, + "create": 1, "doctype": "DocPerm", - "role": "Accounts User" + "role": "Accounts Manager", + "submit": 1, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "role": "Auditor", + "submit": 0, + "write": 0 } ] \ No newline at end of file diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js index e93a206de23..7863306de1a 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.js +++ b/accounts/doctype/sales_invoice/sales_invoice.js @@ -363,13 +363,15 @@ cur_frm.set_query("income_account", "entries", function(doc) { }) // expense account -cur_frm.fields_dict['entries'].grid.get_field('expense_account').get_query = function(doc) { - return { - "query": "accounts.utils.get_account_list", - "filters": { - "is_pl_account": "Yes", - "debit_or_credit": "Debit", - "company": doc.company +if (sys_defaults.auto_inventory_accounting) { + cur_frm.fields_dict['entries'].grid.get_field('expense_account').get_query = function(doc) { + return { + "query": "accounts.utils.get_account_list", + "filters": { + "is_pl_account": "Yes", + "debit_or_credit": "Debit", + "company": doc.company + } } } } diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index 6658db31356..0137504b306 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -142,11 +142,11 @@ class DocType(TransactionBase): return '' def delete_supplier_address(self): - for rec in sql("select * from `tabAddress` where supplier='%s'" %(self.doc.name), as_dict=1): + for rec in sql("select * from `tabAddress` where supplier=%s", (self.doc.name,), as_dict=1): sql("delete from `tabAddress` where name=%s",(rec['name'])) def delete_supplier_contact(self): - for rec in sql("select * from `tabContact` where supplier='%s'" %(self.doc.name), as_dict=1): + for rec in sql("select * from `tabContact` where supplier=%s", (self.doc.name,), as_dict=1): sql("delete from `tabContact` where name=%s",(rec['name'])) def delete_supplier_communication(self): diff --git a/patches/patch_list.py b/patches/patch_list.py index 1ee7c02aeb9..6caeb6f86e1 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -17,6 +17,7 @@ from __future__ import unicode_literals patch_list = [ "execute:webnotes.reload_doc('core', 'doctype', 'docfield')", + "execute:webnotes.reload_doc('core', 'doctype', 'docperm') # 2013-04-07", "execute:webnotes.reload_doc('core', 'doctype', 'report')", "execute:webnotes.reload_doc('core', 'doctype', 'doctype')", "patches.mar_2012.so_rv_mapper_fix", @@ -237,6 +238,10 @@ patch_list = [ 'execute:webnotes.reload_doc("selling", "Print Format", "Quotation Classic") # 2013-04-02', 'execute:webnotes.reload_doc("selling", "Print Format", "Quotation Modern") # 2013-04-02', 'execute:webnotes.reload_doc("selling", "Print Format", "Quotation Spartan") # 2013-04-02', +<<<<<<< HEAD "patches.april_2013.p04_reverse_modules_list", "execute:webnotes.delete_doc('Search Criteria', 'time_log_summary')" +======= + "execute:webnotes.delete_doc('Search Criteria', 'time_log_summary')", +>>>>>>> master ] \ No newline at end of file diff --git a/projects/report/daily_time_log_summary/daily_time_log_summary.js b/projects/report/daily_time_log_summary/daily_time_log_summary.js index 81476767047..ba87d0d2f76 100644 --- a/projects/report/daily_time_log_summary/daily_time_log_summary.js +++ b/projects/report/daily_time_log_summary/daily_time_log_summary.js @@ -3,13 +3,13 @@ wn.query_reports["Daily Time Log Summary"] = { { "fieldname":"from_date", "label": "From Date", - "fieldtype": "Datetime", + "fieldtype": "Date", "default": wn.datetime.get_today() }, { "fieldname":"to_date", "label": "To Date", - "fieldtype": "Datetime", + "fieldtype": "Date", "default": wn.datetime.get_today() }, ] diff --git a/projects/report/daily_time_log_summary/daily_time_log_summary.py b/projects/report/daily_time_log_summary/daily_time_log_summary.py index 0309977a8cb..22e48077b59 100644 --- a/projects/report/daily_time_log_summary/daily_time_log_summary.py +++ b/projects/report/daily_time_log_summary/daily_time_log_summary.py @@ -2,27 +2,33 @@ from __future__ import unicode_literals import webnotes def execute(filters=None): - if not filters: filters = {} - columns = ["Employee::150", "From Datetime::120", "To Datetime::120", "Hours::70", "Task::150", - "Project:Link/Project:120", "Status::70"] + if not filters: + filters = {} + elif filters.get("to_date"): + filters["to_date"] = filters.get("to_date") + "24:00:00" + + columns = ["Time Log:Link/Time Log:120", "Employee::150", "From Datetime::140", + "To Datetime::140", "Hours::70", "Activity Type::120", "Task:Link/Task:150", + "Task Subject::180", "Project:Link/Project:120", "Status::70"] profile_map = get_profile_map() + task_map = get_task_map() conditions = build_conditions(filters) time_logs = webnotes.conn.sql("""select * from `tabTime Log` - where docstatus < 2 %s order by owner asc""" % (conditions,), filters, as_dict=1) - - data = [] - profiles = [time_logs[0].owner] + where docstatus < 2 %s order by owner asc""" % (conditions, ), filters, as_dict=1) + + data = [] + if time_logs: + profiles = [time_logs[0].owner] for tl in time_logs: - if tl.owner not in profiles: profiles.append(tl.owner) data.append([]) - data.append([profile_map[tl.owner], tl.from_time, tl.to_time, tl.hours, - tl.task, tl.project, tl.status]) + data.append([tl.name, profile_map[tl.owner], tl.from_time, tl.to_time, tl.hours, + tl.activity_type, tl.task, task_map.get(tl.task), tl.project, tl.status]) return columns, data @@ -36,11 +42,24 @@ def get_profile_map(): return profile_map +def get_task_map(): + tasks = webnotes.conn.sql("""select name, subject from tabTask""", as_dict=1) + task_map = {} + for t in tasks: + task_map.setdefault(t.name, []).append(t.subject) + + return task_map + def build_conditions(filters): conditions = "" if filters.get("from_date"): conditions += " and from_time >= %(from_date)s" if filters.get("to_date"): conditions += " and to_time <= %(to_date)s" + + from webnotes.widgets.reportview import build_match_conditions + match_conditions = build_match_conditions("Time Log") + if match_conditions: + conditions += " and %s" % match_conditions return conditions \ No newline at end of file diff --git a/setup/doctype/company/company.js b/setup/doctype/company/company.js index 463b9227457..489ed0ce68b 100644 --- a/setup/doctype/company/company.js +++ b/setup/doctype/company/company.js @@ -63,46 +63,47 @@ cur_frm.fields_dict.payables_group.get_query = function(doc) { return 'SELECT `tabAccount`.name FROM `tabAccount` WHERE `tabAccount`.company = "'+doc.name+'" AND `tabAccount`.group_or_ledger = "Group" AND `tabAccount`.docstatus != 2 AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.name LIMIT 50'; } - -cur_frm.fields_dict["stock_in_hand_account"].get_query = function(doc) { - return { - "query": "accounts.utils.get_account_list", - "filters": { - "is_pl_account": "No", - "debit_or_credit": "Debit", - "company": doc.name +if (sys_defaults.auto_inventory_accounting) { + cur_frm.fields_dict["stock_in_hand_account"].get_query = function(doc) { + return { + "query": "accounts.utils.get_account_list", + "filters": { + "is_pl_account": "No", + "debit_or_credit": "Debit", + "company": doc.name + } } } -} -cur_frm.fields_dict["stock_adjustment_account"].get_query = function(doc) { - return { - "query": "accounts.utils.get_account_list", - "filters": { - "is_pl_account": "Yes", - "debit_or_credit": "Debit", - "company": doc.name + cur_frm.fields_dict["stock_adjustment_account"].get_query = function(doc) { + return { + "query": "accounts.utils.get_account_list", + "filters": { + "is_pl_account": "Yes", + "debit_or_credit": "Debit", + "company": doc.name + } } } -} -cur_frm.fields_dict["expenses_included_in_valuation"].get_query = - cur_frm.fields_dict["stock_adjustment_account"].get_query; - -cur_frm.fields_dict["stock_received_but_not_billed"].get_query = function(doc) { - return { - "query": "accounts.utils.get_account_list", - "filters": { - "is_pl_account": "No", - "debit_or_credit": "Credit", - "company": doc.name + cur_frm.fields_dict["expenses_included_in_valuation"].get_query = + cur_frm.fields_dict["stock_adjustment_account"].get_query; + + cur_frm.fields_dict["stock_received_but_not_billed"].get_query = function(doc) { + return { + "query": "accounts.utils.get_account_list", + "filters": { + "is_pl_account": "No", + "debit_or_credit": "Credit", + "company": doc.name + } } } -} -cur_frm.fields_dict["stock_adjustment_cost_center"].get_query = function(doc) { - return { - "query": "accounts.utils.get_cost_center_list", - "filters": {"company_name": doc.name} + cur_frm.fields_dict["stock_adjustment_cost_center"].get_query = function(doc) { + return { + "query": "accounts.utils.get_cost_center_list", + "filters": {"company": doc.name} + } } } \ No newline at end of file diff --git a/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt b/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt index 6459a0b89eb..79b17c2e107 100644 --- a/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt +++ b/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt @@ -1,71 +1,78 @@ [ { - "owner": "Administrator", + "creation": "2012-02-02 11:50:33", "docstatus": 0, - "creation": "2012-02-22 15:45:56", + "modified": "2013-04-05 16:08:22", "modified_by": "Administrator", - "modified": "2012-02-22 15:45:56" + "owner": "Administrator" }, { - "name": "__common__", - "parent": "Delivery Note-Packing Slip", "doctype": "Table Mapper Detail", - "parenttype": "DocType Mapper", - "parentfield": "table_mapper_details" - }, - { "name": "__common__", "parent": "Delivery Note-Packing Slip", + "parentfield": "table_mapper_details", + "parenttype": "DocType Mapper" + }, + { "doctype": "Field Mapper Detail", - "parenttype": "DocType Mapper", - "parentfield": "field_mapper_details" - }, - { "name": "__common__", - "to_doctype": "Packing Slip", - "module": "Stock", + "parent": "Delivery Note-Packing Slip", + "parentfield": "field_mapper_details", + "parenttype": "DocType Mapper" + }, + { "doctype": "DocType Mapper", + "from_doctype": "Delivery Note", + "module": "Stock", + "name": "__common__", "ref_doc_submitted": 0, - "from_doctype": "Delivery Note" + "to_doctype": "Packing Slip" }, { - "name": "Delivery Note-Packing Slip", - "doctype": "DocType Mapper" + "doctype": "DocType Mapper", + "name": "Delivery Note-Packing Slip" }, { + "doctype": "Field Mapper Detail", + "from_field": "name", "map": "Yes", "match_id": 0, - "to_field": "delivery_note", - "doctype": "Field Mapper Detail", - "from_field": "name" + "to_field": "delivery_note" }, { + "doctype": "Field Mapper Detail", + "from_field": "qty", "map": "No", "match_id": 1, - "to_field": "qty", - "doctype": "Field Mapper Detail", - "from_field": "qty" + "to_field": "qty" }, { + "doctype": "Field Mapper Detail", + "from_field": "naming_series", "map": "No", "match_id": 0, - "to_field": "naming_series", - "doctype": "Field Mapper Detail", - "from_field": "naming_series" + "to_field": "naming_series" + }, + { + "doctype": "Field Mapper Detail", + "from_field": "name", + "map": "Yes", + "match_id": 1, + "to_field": "dn_detail" }, { - "match_id": 0, "doctype": "Table Mapper Detail", "from_table": "Delivery Note", + "match_id": 0, "to_table": "Packing Slip", "validation_logic": "docstatus=0" }, { - "match_id": 1, - "to_field": "item_details", "doctype": "Table Mapper Detail", "from_field": "delivery_note_details", "from_table": "Delivery Note Item", + "match_id": 1, + "to_field": "item_details", "to_table": "Packing Slip Item", "validation_logic": "IFNULL(packed_qty, 0) < IFNULL(qty, 0)" } diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js index 88708326857..f47040d0d07 100644 --- a/stock/doctype/delivery_note/delivery_note.js +++ b/stock/doctype/delivery_note/delivery_note.js @@ -315,33 +315,36 @@ cur_frm.cscript.on_submit = function(doc, cdt, cdn) { } } -cur_frm.cscript.expense_account = function(doc, cdt, cdn){ - var d = locals[cdt][cdn]; - if(d.expense_account) { - var cl = getchildren('Delivery Note Item', doc.name, cur_frm.cscript.fname, doc.doctype); - for(var i = 0; i < cl.length; i++){ - if(!cl[i].expense_account) cl[i].expense_account = d.expense_account; +if (sys_defaults.auto_inventory_accounting) { + + cur_frm.cscript.expense_account = function(doc, cdt, cdn){ + var d = locals[cdt][cdn]; + if(d.expense_account) { + var cl = getchildren('Delivery Note Item', doc.name, cur_frm.cscript.fname, doc.doctype); + for(var i = 0; i < cl.length; i++){ + if(!cl[i].expense_account) cl[i].expense_account = d.expense_account; + } + } + refresh_field(cur_frm.cscript.fname); + } + + // expense account + cur_frm.fields_dict['delivery_note_details'].grid.get_field('expense_account').get_query = function(doc) { + return { + "query": "accounts.utils.get_account_list", + "filters": { + "is_pl_account": "Yes", + "debit_or_credit": "Debit", + "company": doc.company + } } } - refresh_field(cur_frm.cscript.fname); -} -// expense account -cur_frm.fields_dict['delivery_note_details'].grid.get_field('expense_account').get_query = function(doc) { - return { - "query": "accounts.utils.get_account_list", - "filters": { - "is_pl_account": "Yes", - "debit_or_credit": "Debit", - "company": doc.company + // cost center + cur_frm.fields_dict.delivery_note_details.grid.get_field("cost_center").get_query = function(doc) { + return { + query: "accounts.utils.get_cost_center_list", + filters: { company_name: doc.company} } } -} - -// cost center -cur_frm.fields_dict.delivery_note_details.grid.get_field("cost_center").get_query = function(doc) { - return { - query: "accounts.utils.get_cost_center_list", - filters: { company_name: doc.company} - } } \ No newline at end of file diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py index 5d52f846e02..55a0ae75ab5 100644 --- a/stock/doctype/item/item.py +++ b/stock/doctype/item/item.py @@ -40,7 +40,7 @@ class DocType(DocListController): self.update_website() bin = sql("select stock_uom from `tabBin` where item_code = '%s' " % self.doc.item_code) - if bin and cstr(bin[0][0]) != cstr(self.doc.stock_uom): + if bin and cstr(bin[0][0]) and cstr(bin[0][0]) != cstr(self.doc.stock_uom): msgprint("Please Update Stock UOM with the help of Stock UOM Replace Utility.") raise Exception check_list = [] @@ -181,7 +181,8 @@ class DocType(DocListController): self.check_item_tax() self.validate_barcode() self.check_non_asset_warehouse() - + self.cant_change() + if cstr(self.doc.is_manufactured_item) == "No": self.doc.is_pro_applicable = "No" @@ -193,9 +194,7 @@ class DocType(DocListController): if self.doc.name: self.old_page_name = webnotes.conn.get_value('Item', self.doc.name, 'page_name') - - self.validate_is_stock_item() - + def check_non_asset_warehouse(self): if self.doc.is_asset_item == "Yes": existing_qty = sql("select t1.warehouse, t1.actual_qty from tabBin t1, tabWarehouse t2 where t1.item_code=%s and (t2.warehouse_type!='Fixed Asset' or t2.warehouse_type is null) and t1.warehouse=t2.name and t1.actual_qty > 0", self.doc.name) @@ -215,14 +214,6 @@ class DocType(DocListController): } return ret - def validate_is_stock_item(self): - if not self.doc.fields.get("__islocal"): - if webnotes.conn.get_value("Item", self.doc.name, "is_stock_item")=="Yes" and \ - ((not self.doc.is_stock_item) or self.doc.is_stock_item == "No"): - if self.check_if_sle_exists() == "exists": - webnotes.msgprint(self.meta.get_label("is_stock_item") + ": " - + _("""Cannot change to Yes. Reason: Stock Ledger Entries exist for""") - + """ "%s" """ % self.doc.name, raise_exception=True) def check_if_sle_exists(self): sle = sql("select name from `tabStock Ledger Entry` where item_code = %s and ifnull(is_cancelled, 'No') = 'No'", self.doc.name) @@ -242,3 +233,16 @@ class DocType(DocListController): if self.doc.slideshow: from website.helpers.slideshow import get_slideshow get_slideshow(self) + + def cant_change(self): + if not self.doc.fields.get("__islocal"): + vals = webnotes.conn.get_value("Item", self.doc.name, + ["has_serial_no", "is_stock_item", "valuation_method"], as_dict=True) + + if vals and (vals.has_serial_no != self.doc.has_serial_no or + vals.is_stock_item != self.doc.is_stock_item or + vals.valuation_method != self.doc.valuation_method): + if self.check_if_sle_exists(): + webnotes.msgprint(_("As there are existing stock transactions for this \ + item, you can not change the values of 'Has Serial No', \ + 'Is Stock Item' and 'Valuation Method'"), raise_exception=1) diff --git a/stock/doctype/packing_slip/packing_slip.js b/stock/doctype/packing_slip/packing_slip.js index e9396d9edc5..4c20289af9b 100644 --- a/stock/doctype/packing_slip/packing_slip.js +++ b/stock/doctype/packing_slip/packing_slip.js @@ -35,7 +35,6 @@ cur_frm.add_fetch("item_code", "net_weight", "net_weight"); cur_frm.add_fetch("item_code", "weight_uom", "weight_uom"); cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) { - console.log(make_doclist(cdt, cdn)); if(doc.delivery_note && doc.__islocal) { var ps_detail = getchildren('Packing Slip Item', doc.name, 'item_details'); if(!(flt(ps_detail.net_weight) && cstr(ps_detail.weight_uom))) { @@ -100,7 +99,7 @@ cur_frm.cscript.validate_calculate_item_details = function(doc) { cur_frm.cscript.validate_duplicate_items = function(doc, ps_detail) { for(var i=0; i