diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js index 471fe7e9b67..e39d77bcd35 100644 --- a/erpnext/accounts/doctype/account/account.js +++ b/erpnext/accounts/doctype/account/account.js @@ -54,7 +54,6 @@ cur_frm.add_fetch('parent_account', 'root_type', 'root_type'); cur_frm.cscript.account_type = function(doc, cdt, cdn) { if(doc.group_or_ledger=='Ledger') { cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax'); - cur_frm.toggle_display('master_type', cstr(doc.account_type)==''); cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' || in_list(['Customer', 'Supplier'], doc.master_type)); } diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index b1edaf4df41..014dde51e92 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -11,8 +11,9 @@ class Account(Document): nsm_parent_field = 'parent_account' def onload(self): - frozen_accounts_modifier = frappe.db.get_value("Accounts Settings", "Accounts Settings", "frozen_accounts_modifier") - if frozen_accounts_modifier in frappe.user.get_roles(): + frozen_accounts_modifier = frappe.db.get_value("Accounts Settings", "Accounts Settings", + "frozen_accounts_modifier") + if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.user.get_roles(): self.get("__onload").can_freeze_account = True diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 348543ee28d..262ac223862 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -383,20 +383,20 @@ class SalesInvoice(SellingController): def get_warehouse(self): - w = frappe.db.sql("""select warehouse from `tabPOS Setting` - where ifnull(user,'') = %s and company = %s""", - (frappe.session['user'], self.company)) - w = w and w[0][0] or '' - if not w: - ps = frappe.db.sql("""select name, warehouse from `tabPOS Setting` + user_pos_setting = frappe.db.sql("""select name, warehouse from `tabPOS Setting` + where ifnull(user,'') = %s and company = %s""", (frappe.session['user'], self.company)) + warehouse = user_pos_setting[0][1] if user_pos_setting else None + + if not warehouse: + global_pos_setting = frappe.db.sql("""select name, warehouse from `tabPOS Setting` where ifnull(user,'') = '' and company = %s""", self.company) - if not ps: + + if global_pos_setting: + warehouse = global_pos_setting[0][1] + elif not user_pos_setting: msgprint(_("POS Setting required to make POS Entry"), raise_exception=True) - elif not ps[0][1]: - msgprint(_("Warehouse required in POS Setting")) - else: - w = ps[0][1] - return w + + return warehouse def on_update(self): if cint(self.update_stock) == 1: @@ -747,7 +747,7 @@ def assign_task_to_owner(inv, msg, users): 'doctype' : 'Sales Invoice', 'name' : inv, 'description' : msg, - 'priority' : 'Urgent' + 'priority' : 'High' } assign_to.add(args) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 83cec985ca7..bb3ab69ca13 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -238,7 +238,11 @@ class StockController(AccountsController): frappe.throw(_("Expense or Difference account is mandatory for Item {0} as it impacts overall stock value").format(item.item_code)) else: - is_expense_account = frappe.db.get_value("Account", item.get("expense_account"), "report_type")=="Profit and Loss" + is_expense_account = frappe.db.get_value("Account", + item.get("expense_account"), "report_type")=="Profit and Loss" + if self.doctype != "Purchase Receipt" and not is_expense_account: + frappe.throw(_("Expense / Difference account ({0}) must be a 'Profit or Loss' account") + .format(item.get("expense_account"))) if is_expense_account and not item.get("cost_center"): frappe.throw(_("{0} {1}: Cost Center is mandatory for Item {2}").format( _(self.doctype), self.name, item.get("item_code"))) diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py index a59e0e9fd92..e96dcbb0381 100644 --- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -370,10 +370,8 @@ class ProductionPlanningTool(Document): if items_to_be_requested: for item in items_to_be_requested: item_wrapper = frappe.get_doc("Item", item) - pr_doc = frappe.get_doc({ - "doctype": "Material Request", - "__islocal": 1, - "naming_series": "IDT", + pr_doc = frappe.new_doc("Material Request") + pr_doc.update({ "transaction_date": nowdate(), "status": "Draft", "company": self.company, diff --git a/erpnext/stock/doctype/serial_no/serial_no.json b/erpnext/stock/doctype/serial_no/serial_no.json index 3316582e0d9..8de04f03b43 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.json +++ b/erpnext/stock/doctype/serial_no/serial_no.json @@ -155,7 +155,7 @@ "fieldtype": "Select", "label": "Creation Document Type", "no_copy": 1, - "options": "\nPurchase Receipt\nStock Entry", + "options": "\nPurchase Receipt\nStock Entry\nSerial No", "permlevel": 0, "read_only": 1 }, @@ -418,7 +418,7 @@ "icon": "icon-barcode", "idx": 1, "in_create": 0, - "modified": "2014-05-27 03:49:19.131746", + "modified": "2014-06-26 12:33:49.911829", "modified_by": "Administrator", "module": "Stock", "name": "Serial No",