Merge branch 'responsive' of github.com:webnotes/erpnext into responsive

This commit is contained in:
Nabin Hait 2013-07-10 19:12:14 +05:30
commit eddd4a1674
23 changed files with 100 additions and 320 deletions

View File

@ -52,6 +52,22 @@ wn.module_page["Accounts"] = [
}, },
] ]
}, },
{
title: wn._("Setup"),
icon: "icon-wrench",
items: [
{
label: wn._("Company"),
description: wn._("Company Master."),
doctype:"Company"
},
{
label: wn._("Fiscal Year"),
description: wn._("Accounting Year."),
doctype:"Fiscal Year"
},
]
},
{ {
title: wn._("Tools"), title: wn._("Tools"),
icon: "icon-wrench", icon: "icon-wrench",

View File

@ -21,7 +21,7 @@ wn.pages['latest-updates'].onload = function(wrapper) {
var $tbody = $('<table class="table table-bordered"><tbody></tbody></table>') var $tbody = $('<table class="table table-bordered"><tbody></tbody></table>')
.appendTo(parent).find("tbody"); .appendTo(parent).find("tbody");
$.each(r.message, function(i, log) { $.each(r.message, function(i, log) {
if(log.message.indexOf("[")!==-1) { if(log.message.indexOf("minor")!==-1 && log.message.indexOf("[")!==-1) {
log.message = log.message.replace(/(\[[^\]]*\])/g, log.message = log.message.replace(/(\[[^\]]*\])/g,
function(match, p1, offset, string) { function(match, p1, offset, string) {
match = match.toLowerCase(); match = match.toLowerCase();

View File

@ -44,7 +44,7 @@ $.extend(erpnext.complete_setup, {
{fieldname:'timezone', label: 'Time Zone', reqd:1, {fieldname:'timezone', label: 'Time Zone', reqd:1,
options: "", fieldtype: 'Select'}, options: "", fieldtype: 'Select'},
{fieldname:'industry', label: 'Industry', reqd:1, {fieldname:'industry', label: 'Industry', reqd:1,
options: erpnext.complete_setup.industry_list.join('\n'), fieldtype: 'Select'}, options: erpnext.complete_setup.domains.join('\n'), fieldtype: 'Select'},
{fieldname:'update', label:'Setup',fieldtype:'Button'}, {fieldname:'update', label:'Setup',fieldtype:'Button'},
], ],
}); });
@ -129,11 +129,5 @@ $.extend(erpnext.complete_setup, {
fy_start_list: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'], fy_start_list: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'],
industry_list: ['', 'Aerospace and Defence', 'Agriculture', 'Apparel', 'Automobile', domains: ['', "Manufacturing", "Retail", "Distribution", "Services"],
'Banking', 'Biotechnology', 'Chemical', 'Communications', 'Consulting', 'Customer Service',
'Education', 'Electronics', 'Energy', 'Engineering', 'Entertainment', 'Environmental',
'Finance', 'Food and Beverage', 'Government', 'Healthcare', 'Hospitality',
'Information Technology', 'Insurance', 'Machinery', 'Manufacturing', 'Media',
'Not For Profit', 'Recreation', 'Retail', 'Shipping', 'Technology',
'Telecommunications', 'Transportation', 'Trading', 'Utilities', 'Other'],
}); });

View File

@ -33,9 +33,28 @@ class DocType:
if self.doc.fields.get('__islocal') and len(self.doc.abbr) > 5: if self.doc.fields.get('__islocal') and len(self.doc.abbr) > 5:
webnotes.msgprint("Abbreviation cannot have more than 5 characters", webnotes.msgprint("Abbreviation cannot have more than 5 characters",
raise_exception=1) raise_exception=1)
# Create default accounts def on_update(self):
# --------------------------------------------------- if not webnotes.conn.sql("""select name from tabAccount
where company=%s and docstatus<2 limit 1""", self.doc.name):
self.create_default_accounts()
self.create_default_warehouses()
if not self.doc.cost_center:
self.create_default_cost_center()
self.set_default_accounts()
if self.doc.default_currency:
webnotes.conn.set_value("Currency", self.doc.default_currency, "enabled", 1)
def create_default_warehouses(self):
for whname in ("Stores", "Work In Progress", "Finished Goods"):
webnotes.bean({
"doctype":"Warehouse",
"company": self.doc.name
}).insert()
def create_default_accounts(self): def create_default_accounts(self):
self.fld_dict = {'account_name':0,'parent_account':1,'group_or_ledger':2,'is_pl_account':3,'account_type':4,'debit_or_credit':5,'company':6,'tax_rate':7} self.fld_dict = {'account_name':0,'parent_account':1,'group_or_ledger':2,'is_pl_account':3,'account_type':4,'debit_or_credit':5,'company':6,'tax_rate':7}
acc_list_common = [ acc_list_common = [
@ -162,32 +181,16 @@ class DocType:
for d in acc_list_india: for d in acc_list_india:
self.add_acc(d) self.add_acc(d)
# Create account
# ---------------------------------------------------
def add_acc(self,lst): def add_acc(self,lst):
ac = Document('Account') account = webnotes.bean({
"doctype": "Account",
"freeze_account": "No",
"master_type": "",
})
for d in self.fld_dict.keys(): for d in self.fld_dict.keys():
ac.fields[d] = (d == 'parent_account' and lst[self.fld_dict[d]]) and lst[self.fld_dict[d]] +' - '+ self.doc.abbr or lst[self.fld_dict[d]] account.doc.fields[d] = (d == 'parent_account' and lst[self.fld_dict[d]]) and lst[self.fld_dict[d]] +' - '+ self.doc.abbr or lst[self.fld_dict[d]]
ac_obj = get_obj(doc=ac)
ac_obj.doc.freeze_account='No' account.insert()
ac_obj.doc.master_type = ''
ac_obj.validate()
ac_obj.doc.save(1)
ac_obj.on_update()
# Set letter head
# ---------------------------------------------------
def set_letter_head(self):
if not self.doc.letter_head:
if self.doc.address:
header = """
<div><h3> %(comp)s </h3> %(add)s </div>
""" % {'comp':self.doc.name,
'add':self.doc.address.replace("\n",'<br>')}
self.doc.letter_head = header
def set_default_accounts(self): def set_default_accounts(self):
accounts = { accounts = {
@ -209,8 +212,6 @@ class DocType:
if not self.doc.stock_adjustment_cost_center: if not self.doc.stock_adjustment_cost_center:
webnotes.conn.set(self.doc, "stock_adjustment_cost_center", self.doc.cost_center) webnotes.conn.set(self.doc, "stock_adjustment_cost_center", self.doc.cost_center)
# Create default cost center
# ---------------------------------------------------
def create_default_cost_center(self): def create_default_cost_center(self):
cc_list = [ cc_list = [
{ {
@ -237,21 +238,6 @@ class DocType:
cc_bean.insert() cc_bean.insert()
webnotes.conn.set(self.doc, "cost_center", "Main - " + self.doc.abbr) webnotes.conn.set(self.doc, "cost_center", "Main - " + self.doc.abbr)
def on_update(self):
self.set_letter_head()
if not webnotes.conn.sql("""select name from tabAccount
where company=%s and docstatus<2 limit 1""", self.doc.name):
self.create_default_accounts()
if not self.doc.cost_center:
self.create_default_cost_center()
self.set_default_accounts()
if self.doc.default_currency:
webnotes.conn.set_value("Currency", self.doc.default_currency, "enabled", 1)
def on_trash(self): def on_trash(self):
""" """

View File

@ -2,7 +2,7 @@
{ {
"creation": "2013-04-10 08:35:39", "creation": "2013-04-10 08:35:39",
"docstatus": 0, "docstatus": 0,
"modified": "2013-07-08 17:34:21", "modified": "2013-07-10 18:17:55",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -52,6 +52,17 @@
"oldfieldtype": "Section Break", "oldfieldtype": "Section Break",
"read_only": 0 "read_only": 0
}, },
{
"doctype": "DocField",
"fieldname": "company_name",
"fieldtype": "Data",
"label": "Company",
"no_copy": 0,
"oldfieldname": "company_name",
"oldfieldtype": "Data",
"read_only": 0,
"reqd": 1
},
{ {
"description": "Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.", "description": "Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.",
"doctype": "DocField", "doctype": "DocField",
@ -72,13 +83,10 @@
}, },
{ {
"doctype": "DocField", "doctype": "DocField",
"fieldname": "company_name", "fieldname": "domain",
"fieldtype": "Data", "fieldtype": "Select",
"label": "Company", "label": "Domain",
"no_copy": 0, "options": "Distribution\nManufacturing\nRetail\nServices",
"oldfieldname": "company_name",
"oldfieldtype": "Data",
"read_only": 0,
"reqd": 1 "reqd": 1
}, },
{ {

View File

@ -1 +0,0 @@
Warehouse classification.

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,6 +0,0 @@
test_records = [
[{
"doctype": "Warehouse Type",
"warehouse_type": "_Test Warehouse Type"
}]
]

View File

@ -1,26 +0,0 @@
// 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 <http://www.gnu.org/licenses/>.
//--------- ONLOAD -------------
cur_frm.cscript.onload = function(doc, cdt, cdn) {
}
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
}

View File

@ -1,22 +0,0 @@
# 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 <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@ -1,82 +0,0 @@
[
{
"creation": "2013-01-10 16:34:24",
"docstatus": 0,
"modified": "2013-07-05 15:02:15",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "field:warehouse_type",
"doctype": "DocType",
"icon": "icon-flag",
"istable": 0,
"module": "Setup",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Warehouse Type",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"amend": 0,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Warehouse Type",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "Warehouse Type"
},
{
"doctype": "DocField",
"fieldname": "trash_reason",
"fieldtype": "Small Text",
"label": "Trash Reason",
"oldfieldname": "trash_reason",
"oldfieldtype": "Small Text",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "warehouse_type",
"fieldtype": "Data",
"in_filter": 1,
"label": "Warehouse Type",
"oldfieldname": "warehouse_type",
"oldfieldtype": "Data",
"reqd": 1,
"search_index": 1
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Material Master Manager",
"write": 1
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Material Manager",
"write": 0
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Material User",
"write": 0
}
]

View File

@ -10,9 +10,9 @@ def pre_import():
def make_modules(): def make_modules():
modules = [ modules = [
" Home", " System", " Utilities", " Website", " Setup", "Home", "System", "Utilities", "Website", "Setup",
" Selling", " Buying", " Projects", " Accounts", " Stock", "Selling", "Buying", "Projects", "Accounts", "Stock",
" Support", " HR", " Manufacturing"] "Support", "HR", "Manufacturing"]
for m in modules: for m in modules:
doc = webnotes.doc(fielddata = { doc = webnotes.doc(fielddata = {
@ -100,8 +100,10 @@ def import_country_and_currency():
def import_defaults(): def import_defaults():
records = [ records = [
# item group # item group
{'doctype': 'Item Group', 'item_group_name': 'All Item Groups', 'is_group': 'Yes', 'name': 'All Item Groups', 'parent_item_group': ''}, {'doctype': 'Item Group', 'item_group_name': 'All Item Groups', 'is_group': 'Yes', 'parent_item_group': ''},
{'doctype': 'Item Group', 'item_group_name': 'Default', 'is_group': 'No', 'name': 'Default', 'parent_item_group': 'All Item Groups'}, {'doctype': 'Item Group', 'item_group_name': 'Products', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
{'doctype': 'Item Group', 'item_group_name': 'Raw Material', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
{'doctype': 'Item Group', 'item_group_name': 'Services', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
# deduction type # deduction type
{'doctype': 'Deduction Type', 'name': 'Income Tax', 'description': 'Income Tax', 'deduction_name': 'Income Tax'}, {'doctype': 'Deduction Type', 'name': 'Income Tax', 'description': 'Income Tax', 'deduction_name': 'Income Tax'},
@ -131,37 +133,30 @@ def import_defaults():
# customer group # customer group
{'doctype': 'Customer Group', 'customer_group_name': 'All Customer Groups', 'is_group': 'Yes', 'name': 'All Customer Groups', 'parent_customer_group': ''}, {'doctype': 'Customer Group', 'customer_group_name': 'All Customer Groups', 'is_group': 'Yes', 'name': 'All Customer Groups', 'parent_customer_group': ''},
{'doctype': 'Customer Group', 'customer_group_name': 'Default', 'is_group': 'No', 'name': 'Default Customer Group', 'parent_customer_group': 'All Customer Groups'}, {'doctype': 'Customer Group', 'customer_group_name': 'Individual', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
{'doctype': 'Customer Group', 'customer_group_name': 'Commercial', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
{'doctype': 'Customer Group', 'customer_group_name': 'Non Profit', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
{'doctype': 'Customer Group', 'customer_group_name': 'Government', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
# supplier type # supplier type
{'doctype': 'Supplier Type', 'name': 'Default Supplier Type', 'supplier_type': 'Default Supplier Type'}, {'doctype': 'Supplier Type', 'supplier_type': 'Services'},
{'doctype': 'Supplier Type', 'supplier_type': 'Local'},
# warehouse type {'doctype': 'Supplier Type', 'supplier_type': 'Raw Material'},
{'doctype': 'Warehouse Type', 'name': 'Default Warehouse Type', 'warehouse_type': 'Default Warehouse Type'}, {'doctype': 'Supplier Type', 'supplier_type': 'Electrical'},
{'doctype': 'Warehouse Type', 'name': 'Fixed Asset', 'warehouse_type': 'Fixed Asset'}, {'doctype': 'Supplier Type', 'supplier_type': 'Hardware'},
{'doctype': 'Warehouse Type', 'name': 'Reserved', 'warehouse_type': 'Reserved'}, {'doctype': 'Supplier Type', 'supplier_type': 'Pharmaceutical'},
{'doctype': 'Warehouse Type', 'name': 'Rejected', 'warehouse_type': 'Rejected'}, {'doctype': 'Supplier Type', 'supplier_type': 'Distributor'},
{'doctype': 'Warehouse Type', 'name': 'Sample', 'warehouse_type': 'Sample'},
{'doctype': 'Warehouse Type', 'name': 'Stores', 'warehouse_type': 'Stores'},
{'doctype': 'Warehouse Type', 'name': 'WIP Warehouse', 'warehouse_type': 'WIP Warehouse'},
# warehouse
{'doctype': 'Warehouse', 'warehouse_name': 'Default Warehouse', 'name': 'Default Warehouse', 'warehouse_type': 'Default Warehouse Type'},
# Workstation # Workstation
{'doctype': 'Workstation', 'name': 'Default Workstation', 'workstation_name': 'Default Workstation', 'warehouse': 'Default Warehouse'}, {'doctype': 'Workstation', 'name': 'Default Workstation', 'workstation_name': 'Default Workstation', 'warehouse': 'Default Warehouse'},
# Sales Person # Sales Person
{'doctype': 'Sales Person', 'name': 'All Sales Persons', 'sales_person_name': 'All Sales Persons', 'is_group': "Yes", "parent_sales_person": ""}, {'doctype': 'Sales Person', 'sales_person_name': 'Sales Team', 'is_group': "Yes", "parent_sales_person": ""},
# UOM # UOM
{'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Unit'}, {'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Unit'},
{'uom_name': 'Box', 'doctype': 'UOM', 'name': 'Box'}, {'uom_name': 'Box', 'doctype': 'UOM', 'name': 'Box'},
{'uom_name': 'Ft', 'doctype': 'UOM', 'name': 'Ft'},
{'uom_name': 'Kg', 'doctype': 'UOM', 'name': 'Kg'}, {'uom_name': 'Kg', 'doctype': 'UOM', 'name': 'Kg'},
{'uom_name': 'Ltr', 'doctype': 'UOM', 'name': 'Ltr'},
{'uom_name': 'Meter', 'doctype': 'UOM', 'name': 'Meter'},
{'uom_name': 'Mtr', 'doctype': 'UOM', 'name': 'Mtr'},
{'uom_name': 'Nos', 'doctype': 'UOM', 'name': 'Nos'}, {'uom_name': 'Nos', 'doctype': 'UOM', 'name': 'Nos'},
{'uom_name': 'Pair', 'doctype': 'UOM', 'name': 'Pair'}, {'uom_name': 'Pair', 'doctype': 'UOM', 'name': 'Pair'},
{'uom_name': 'Set', 'doctype': 'UOM', 'name': 'Set'}, {'uom_name': 'Set', 'doctype': 'UOM', 'name': 'Set'},

View File

@ -31,11 +31,7 @@ class DocType:
def validate(self): def validate(self):
if not self.doc.stock_uom: if not self.doc.stock_uom:
self.doc.stock_uom = webnotes.conn.get_value('Item', self.doc.item_code, 'stock_uom') self.doc.stock_uom = webnotes.conn.get_value('Item', self.doc.item_code, 'stock_uom')
if not self.doc.warehouse_type:
self.doc.warehouse_type = webnotes.conn.get_value("Warehouse", self.doc.warehouse,
"warehouse_type")
self.validate_mandatory() self.validate_mandatory()
self.doc.projected_qty = flt(self.doc.actual_qty) + flt(self.doc.ordered_qty) + \ self.doc.projected_qty = flt(self.doc.actual_qty) + flt(self.doc.ordered_qty) + \

View File

@ -2,7 +2,7 @@
{ {
"creation": "2013-01-10 16:34:25", "creation": "2013-01-10 16:34:25",
"docstatus": 0, "docstatus": 0,
"modified": "2013-07-10 14:54:04", "modified": "2013-07-10 18:32:13",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -52,15 +52,6 @@
"options": "Warehouse", "options": "Warehouse",
"search_index": 1 "search_index": 1
}, },
{
"doctype": "DocField",
"fieldname": "warehouse_type",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Warehouse Type",
"oldfieldname": "warehouse_type",
"oldfieldtype": "Data"
},
{ {
"doctype": "DocField", "doctype": "DocField",
"fieldname": "item_code", "fieldname": "item_code",

View File

@ -51,7 +51,6 @@ class DocType(DocListController):
self.fill_customer_code() self.fill_customer_code()
self.check_item_tax() self.check_item_tax()
self.validate_barcode() self.validate_barcode()
self.check_non_asset_warehouse()
self.cant_change() self.cant_change()
self.validate_item_type_for_reorder() self.validate_item_type_for_reorder()
@ -185,18 +184,7 @@ class DocType(DocListController):
if duplicate: if duplicate:
msgprint("Barcode: %s already used in item: %s" % msgprint("Barcode: %s already used in item: %s" %
(self.doc.barcode, cstr(duplicate[0][0])), raise_exception = 1) (self.doc.barcode, cstr(duplicate[0][0])), raise_exception = 1)
def check_non_asset_warehouse(self):
if not self.doc.__islocal and self.doc.is_asset_item == "Yes":
existing_qty = webnotes.conn.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)
for e in existing_qty:
msgprint("%s Units exist in Warehouse %s, which is not an Asset Warehouse." %
(e[1],e[0]))
if existing_qty:
self.doc.is_asset_item = 'No'
msgprint(_("""Please transfer the above quantities to an asset warehouse \
before changing this item to an asset item"""), raise_exception=1)
def cant_change(self): def cant_change(self):
if not self.doc.fields.get("__islocal"): if not self.doc.fields.get("__islocal"):
vals = webnotes.conn.get_value("Item", self.doc.name, vals = webnotes.conn.get_value("Item", self.doc.name,

View File

@ -222,9 +222,6 @@ class DocType:
def make_entry(self, args): def make_entry(self, args):
args.update({"doctype": "Stock Ledger Entry"}) args.update({"doctype": "Stock Ledger Entry"})
if args.get("warehouse"):
args["warehouse_type"] = webnotes.conn.get_value('Warehouse' , args["warehouse"],
'warehouse_type')
sle = webnotes.bean([args]) sle = webnotes.bean([args])
sle.ignore_permissions = 1 sle.ignore_permissions = 1
sle.insert() sle.insert()

View File

@ -2,7 +2,7 @@
{ {
"creation": "2013-01-29 19:25:42", "creation": "2013-01-29 19:25:42",
"docstatus": 0, "docstatus": 0,
"modified": "2013-07-05 14:56:15", "modified": "2013-07-10 18:34:09",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -91,18 +91,6 @@
"search_index": 1, "search_index": 1,
"width": "100px" "width": "100px"
}, },
{
"doctype": "DocField",
"fieldname": "warehouse_type",
"fieldtype": "Select",
"in_filter": 1,
"label": "Warehouse Type",
"oldfieldname": "warehouse_type",
"oldfieldtype": "Select",
"options": "link:Warehouse Type",
"read_only": 1,
"search_index": 0
},
{ {
"description": "The date at which current entry will get or has actually executed.", "description": "The date at which current entry will get or has actually executed.",
"doctype": "DocField", "doctype": "DocField",

View File

@ -2,19 +2,16 @@ test_records = [
[{ [{
"doctype": "Warehouse", "doctype": "Warehouse",
"warehouse_name": "_Test Warehouse", "warehouse_name": "_Test Warehouse",
"warehouse_type": "_Test Warehouse Type",
"company": "_Test Company" "company": "_Test Company"
}], }],
[{ [{
"doctype": "Warehouse", "doctype": "Warehouse",
"warehouse_name": "_Test Warehouse 1", "warehouse_name": "_Test Warehouse 1",
"warehouse_type": "_Test Warehouse Type",
"company": "_Test Company" "company": "_Test Company"
}], }],
[{ [{
"doctype": "Warehouse", "doctype": "Warehouse",
"warehouse_name": "_Test Warehouse 2", "warehouse_name": "_Test Warehouse 2",
"warehouse_type": "_Test Warehouse Type",
"company": "_Test Company 1" "company": "_Test Company 1"
}] }]
] ]

View File

@ -27,7 +27,12 @@ class DocType:
def __init__(self, doc, doclist=[]): def __init__(self, doc, doclist=[]):
self.doc = doc self.doc = doc
self.doclist = doclist self.doclist = doclist
def autoname(self):
suffix = " - " + webnotes.conn.get_value("Company", self.doc.company, "abbr")
if not self.doc.warehouse_name.endswith(suffix):
self.doc.name = self.doc.warehouse_name + suffix
def get_bin(self, item_code, warehouse=None): def get_bin(self, item_code, warehouse=None):
warehouse = warehouse or self.doc.name warehouse = warehouse or self.doc.name
bin = sql("select name from tabBin where item_code = %s and \ bin = sql("select name from tabBin where item_code = %s and \
@ -47,15 +52,7 @@ class DocType:
bin_obj = get_obj('Bin', bin) bin_obj = get_obj('Bin', bin)
return bin_obj return bin_obj
def validate_asset(self, item_code):
if webnotes.conn.get_value("Item", item_code, "is_asset_item") == 'Yes' \
and self.doc.warehouse_type != 'Fixed Asset':
msgprint("""Fixed Asset Item %s can only be transacted in a
Fixed Asset type Warehouse""" % item_code, raise_exception=1)
def update_bin(self, args): def update_bin(self, args):
self.validate_asset(args.get("item_code"))
is_stock_item = webnotes.conn.get_value('Item', args.get("item_code"), 'is_stock_item') is_stock_item = webnotes.conn.get_value('Item', args.get("item_code"), 'is_stock_item')
if is_stock_item == 'Yes': if is_stock_item == 'Yes':
bin = self.get_bin(args.get("item_code")) bin = self.get_bin(args.get("item_code"))
@ -68,14 +65,7 @@ class DocType:
def validate(self): def validate(self):
if self.doc.email_id and not validate_email_add(self.doc.email_id): if self.doc.email_id and not validate_email_add(self.doc.email_id):
msgprint("Please enter valid Email Id", raise_exception=1) msgprint("Please enter valid Email Id", raise_exception=1)
if not self.doc.warehouse_type:
msgprint("Warehouse Type is Mandatory", raise_exception=1)
wt = sql("select warehouse_type from `tabWarehouse` where name ='%s'" % self.doc.name)
if wt and cstr(self.doc.warehouse_type) != cstr(wt[0][0]):
sql("""update `tabStock Ledger Entry` set warehouse_type = %s
where warehouse = %s""", (self.doc.warehouse_type, self.doc.name))
def merge_warehouses(self): def merge_warehouses(self):
webnotes.conn.auto_commit_on_many_writes = 1 webnotes.conn.auto_commit_on_many_writes = 1

View File

@ -2,20 +2,18 @@
{ {
"creation": "2013-03-07 18:50:32", "creation": "2013-03-07 18:50:32",
"docstatus": 0, "docstatus": 0,
"modified": "2013-07-05 15:02:12", "modified": "2013-07-10 18:46:40",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
{ {
"allow_rename": 1, "allow_rename": 1,
"autoname": "field:warehouse_name",
"description": "A logical Warehouse against which stock entries are made.", "description": "A logical Warehouse against which stock entries are made.",
"doctype": "DocType", "doctype": "DocType",
"document_type": "Master", "document_type": "Master",
"icon": "icon-building", "icon": "icon-building",
"module": "Stock", "module": "Stock",
"name": "__common__", "name": "__common__"
"search_fields": "warehouse_type"
}, },
{ {
"doctype": "DocField", "doctype": "DocField",
@ -57,19 +55,6 @@
"permlevel": 0, "permlevel": 0,
"reqd": 1 "reqd": 1
}, },
{
"doctype": "DocField",
"fieldname": "warehouse_type",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "Warehouse Type",
"oldfieldname": "warehouse_type",
"oldfieldtype": "Link",
"options": "Warehouse Type",
"permlevel": 0,
"reqd": 1
},
{ {
"doctype": "DocField", "doctype": "DocField",
"fieldname": "company", "fieldname": "company",
@ -80,12 +65,13 @@
"oldfieldtype": "Link", "oldfieldtype": "Link",
"options": "Company", "options": "Company",
"permlevel": 0, "permlevel": 0,
"reqd": 1,
"search_index": 1 "search_index": 1
}, },
{ {
"doctype": "DocField", "doctype": "DocField",
"fieldname": "column_break_4", "fieldname": "column_break_4",
"fieldtype": "Column Break", "fieldtype": "Section Break",
"permlevel": 0 "permlevel": 0
}, },
{ {

View File

@ -123,11 +123,6 @@ wn.module_page["Stock"] = [
"doctype":"Brand", "doctype":"Brand",
"label": wn._("Brand"), "label": wn._("Brand"),
"description": wn._("Brand master.") "description": wn._("Brand master.")
},
{
"label": wn._("Warehouse Type"),
"doctype":"Warehouse Type",
"description": wn._("Types of warehouse")
} }
] ]
}, },

View File

@ -42,8 +42,6 @@ def delete_masters():
print "Deleting masters...." print "Deleting masters...."
masters = { masters = {
'Workstation': ['Default Workstation'], 'Workstation': ['Default Workstation'],
'Warehouse Type': ['Default Warehouse Type', 'Fixed Asset', 'Rejected', 'Reserved',
'Sample', 'Stores', 'WIP Warehouse'],
'Warehouse': ['Default Warehouse'], 'Warehouse': ['Default Warehouse'],
'UOM': ['Kg', 'Mtr', 'Box', 'Ltr', 'Nos', 'Ft', 'Pair', 'Set'], 'UOM': ['Kg', 'Mtr', 'Box', 'Ltr', 'Nos', 'Ft', 'Pair', 'Set'],
'Territory': ['All Territories', 'Default Territory'], 'Territory': ['All Territories', 'Default Territory'],
@ -139,7 +137,6 @@ def reset_global_defaults():
'default_item_group': 'Default', 'default_item_group': 'Default',
'default_stock_uom': 'Nos', 'default_stock_uom': 'Nos',
'default_valuation_method': 'FIFO', 'default_valuation_method': 'FIFO',
'default_warehouse_type': 'Default Warehouse Type',
'tolerance': None, 'tolerance': None,
'acc_frozen_upto': None, 'acc_frozen_upto': None,
'bde_auth_role': None, 'bde_auth_role': None,

View File

@ -77,12 +77,6 @@ wn.module_page["Website"] = [
icon: "icon-wrench", icon: "icon-wrench",
right: true, right: true,
items: [ items: [
{
"route":"Form/Product Settings",
"label":wn._("Product Settings"),
"description":wn._("Settings for Product Catalog on the website."),
doctype:"Product Settings"
},
{ {
"route":"Form/About Us Settings", "route":"Form/About Us Settings",
"label":wn._("About Us Settings"), "label":wn._("About Us Settings"),