Merge pull request #1638 from anandpdoshi/hotfix
Improved Item maker in Setup Wizard. Fixes #1501 and #1601
This commit is contained in:
commit
b1f212d653
@ -1,6 +1,5 @@
|
|||||||
execute:import unidecode # new requirement
|
execute:import unidecode # new requirement
|
||||||
|
|
||||||
execute:frappe.db.sql("""update `tabPatch Log` set patch=replace(patch, '.4_0.', '.v4_0.')""") #2014-05-12
|
|
||||||
erpnext.patches.v4_0.validate_v3_patch
|
erpnext.patches.v4_0.validate_v3_patch
|
||||||
erpnext.patches.v4_0.update_user_properties
|
erpnext.patches.v4_0.update_user_properties
|
||||||
erpnext.patches.v4_0.move_warehouse_user_to_restrictions
|
erpnext.patches.v4_0.move_warehouse_user_to_restrictions
|
||||||
|
@ -7,8 +7,14 @@
|
|||||||
}
|
}
|
||||||
.setup-wizard-wrapper {
|
.setup-wizard-wrapper {
|
||||||
margin: 0px auto;
|
margin: 0px auto;
|
||||||
width: 600px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.setup-wizard-wrapper {
|
||||||
|
width: 720px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#page-setup-wizard .panel {
|
#page-setup-wizard .panel {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
|||||||
{"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
|
{"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
|
||||||
options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski",
|
options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski",
|
||||||
"italiano", "nederlands", "português brasileiro", "português", "српски", "தமிழ்",
|
"italiano", "nederlands", "português brasileiro", "português", "српски", "தமிழ்",
|
||||||
"ไทย", "中国(简体", "中國(繁體"], reqd:1},
|
"ไทย", "中国(简体)", "中國(繁體)"], reqd:1},
|
||||||
],
|
],
|
||||||
help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
|
help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
|
||||||
onload: function(slide) {
|
onload: function(slide) {
|
||||||
@ -237,12 +237,13 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
|||||||
{
|
{
|
||||||
icon: "icon-money",
|
icon: "icon-money",
|
||||||
"title": __("Add Taxes"),
|
"title": __("Add Taxes"),
|
||||||
"help": __("List your tax heads (e.g. VAT, Excise) (upto 3) and their standard rates. This will create a standard template, you can edit and add more later."),
|
"help": __("List your tax heads (e.g. VAT, Excise; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
|
||||||
"fields": [],
|
"fields": [],
|
||||||
before_load: function(slide) {
|
before_load: function(slide) {
|
||||||
for(var i=1; i<4; i++) {
|
for(var i=1; i<4; i++) {
|
||||||
slide.fields = slide.fields.concat([
|
slide.fields = slide.fields.concat([
|
||||||
{fieldtype:"Data", fieldname:"tax_"+ i, label:__("Tax") + " " + i, placeholder:__("e.g. VAT")},
|
{fieldtype:"Data", fieldname:"tax_"+ i, label:__("Tax") + " " + i,
|
||||||
|
placeholder:__("e.g. VAT") + " " + i},
|
||||||
{fieldtype:"Column Break"},
|
{fieldtype:"Column Break"},
|
||||||
{fieldtype:"Float", fieldname:"tax_rate_" + i, label:__("Rate (%)"), placeholder:__("e.g. 5")},
|
{fieldtype:"Float", fieldname:"tax_rate_" + i, label:__("Rate (%)"), placeholder:__("e.g. 5")},
|
||||||
{fieldtype:"Section Break"},
|
{fieldtype:"Section Break"},
|
||||||
@ -264,33 +265,7 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
|||||||
placeholder:__("Customer Name")},
|
placeholder:__("Customer Name")},
|
||||||
{fieldtype:"Column Break"},
|
{fieldtype:"Column Break"},
|
||||||
{fieldtype:"Data", fieldname:"customer_contact_" + i,
|
{fieldtype:"Data", fieldname:"customer_contact_" + i,
|
||||||
label:__("Contact"), placeholder:__("Contact Name")},
|
label:__("Contact Name") + " " + i, placeholder:__("Contact Name")},
|
||||||
{fieldtype:"Section Break"}
|
|
||||||
])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Items to Sell
|
|
||||||
{
|
|
||||||
icon: "icon-barcode",
|
|
||||||
"title": __("Your Products or Services"),
|
|
||||||
"help": __("List your products or services that you sell to your customers. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
|
|
||||||
"fields": [],
|
|
||||||
before_load: function(slide) {
|
|
||||||
for(var i=1; i<6; i++) {
|
|
||||||
slide.fields = slide.fields.concat([
|
|
||||||
{fieldtype:"Data", fieldname:"item_" + i, label:__("Item") + " " + i,
|
|
||||||
placeholder:__("A Product or Service")},
|
|
||||||
{fieldtype:"Column Break"},
|
|
||||||
{fieldtype:"Attach", fieldname:"item_img_" + i, label:__("Attach Image")},
|
|
||||||
{fieldtype:"Section Break"},
|
|
||||||
{fieldtype:"Column Break"},
|
|
||||||
{fieldtype:"Select", label:"Group", fieldname:"item_group_" + i,
|
|
||||||
options:[__("Products"), __("Services")]},
|
|
||||||
{fieldtype:"Column Break"},
|
|
||||||
{fieldtype:"Select", fieldname:"item_uom_" + i, label:"UOM",
|
|
||||||
options:[__("Unit"), __("Nos"), __("Box"), __("Pair"), __("Kg"), __("Set"), __("Hour"), __("Minute")]},
|
|
||||||
{fieldtype:"Section Break"}
|
{fieldtype:"Section Break"}
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
@ -307,41 +282,42 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
|||||||
for(var i=1; i<6; i++) {
|
for(var i=1; i<6; i++) {
|
||||||
slide.fields = slide.fields.concat([
|
slide.fields = slide.fields.concat([
|
||||||
{fieldtype:"Data", fieldname:"supplier_" + i, label:__("Supplier")+" " + i,
|
{fieldtype:"Data", fieldname:"supplier_" + i, label:__("Supplier")+" " + i,
|
||||||
placeholder:"Supplier Name"},
|
placeholder:__("Supplier Name")},
|
||||||
{fieldtype:"Column Break"},
|
{fieldtype:"Column Break"},
|
||||||
{fieldtype:"Data", fieldname:"supplier_contact_" + i,
|
{fieldtype:"Data", fieldname:"supplier_contact_" + i,
|
||||||
label:"Contact", placeholder:__("Contact Name")},
|
label:__("Contact Name") + " " + i, placeholder:__("Contact Name")},
|
||||||
{fieldtype:"Section Break"}
|
{fieldtype:"Section Break"}
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Items to Buy
|
// Items to Sell
|
||||||
{
|
{
|
||||||
icon: "icon-barcode",
|
icon: "icon-barcode",
|
||||||
"title": __("Products or Services You Buy"),
|
"title": __("Your Products or Services"),
|
||||||
"help": __("List a few products or services you buy from your suppliers or vendors. If these are same as your products, then do not add them."),
|
"help": __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
|
||||||
"fields": [],
|
"fields": [],
|
||||||
before_load: function(slide) {
|
before_load: function(slide) {
|
||||||
for(var i=1; i<6; i++) {
|
for(var i=1; i<6; i++) {
|
||||||
slide.fields = slide.fields.concat([
|
slide.fields = slide.fields.concat([
|
||||||
{fieldtype:"Data", fieldname:"item_buy_" + i, label: __("Item") + " " + i,
|
{fieldtype:"Section Break", show_section_border: true},
|
||||||
|
{fieldtype:"Data", fieldname:"item_" + i, label:__("Item") + " " + i,
|
||||||
placeholder:__("A Product or Service")},
|
placeholder:__("A Product or Service")},
|
||||||
|
{fieldtype: "Check", fieldname: "is_sales_item_" + i, label:__("We sell this Item")},
|
||||||
|
{fieldtype: "Check", fieldname: "is_purchase_item_" + i, label:__("We buy this Item")},
|
||||||
{fieldtype:"Column Break"},
|
{fieldtype:"Column Break"},
|
||||||
{fieldtype:"Section Break"},
|
{fieldtype:"Select", label:"Group", fieldname:"item_group_" + i,
|
||||||
{fieldtype:"Column Break"},
|
options:[__("Products"), __("Services"),
|
||||||
{fieldtype:"Select", fieldname:"item_buy_group_" + i, label: __("Group"),
|
__("Raw Material"), __("Consumable"), __("Sub Assemblies")]},
|
||||||
options:[__("Raw Material"), __("Consumable"), __("Sub Assemblies"), __("Services"), __("Products")]},
|
{fieldtype:"Select", fieldname:"item_uom_" + i, label:"UOM",
|
||||||
{fieldtype:"Column Break"},
|
options:[__("Unit"), __("Nos"), __("Box"), __("Pair"), __("Kg"), __("Set"),
|
||||||
{fieldtype:"Select", fieldname:"item_buy_uom_" + i, label: __("UOM"),
|
__("Hour"), __("Minute")]},
|
||||||
options:[__("Unit"), __("Nos"), __("Box"), __("Pair"), __("Kg"), __("Set"), __("Hour"), __("Minute")]},
|
{fieldtype:"Attach", fieldname:"item_img_" + i, label:__("Attach Image")},
|
||||||
{fieldtype:"Section Break"},
|
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,7 +437,7 @@ frappe.wiz.WizardSlide = Class.extend({
|
|||||||
</div>\
|
</div>\
|
||||||
<div class="row">\
|
<div class="row">\
|
||||||
<div class="col-sm-12">\
|
<div class="col-sm-12">\
|
||||||
<p class="text-muted">%(help)s</p><br>\
|
<p>%(help)s</p><br>\
|
||||||
<div class="form"></div>\
|
<div class="form"></div>\
|
||||||
</div>\
|
</div>\
|
||||||
</div>\
|
</div>\
|
||||||
@ -503,6 +479,8 @@ frappe.wiz.WizardSlide = Class.extend({
|
|||||||
me.values = me.form.get_values();
|
me.values = me.form.get_values();
|
||||||
if(me.values===null)
|
if(me.values===null)
|
||||||
return;
|
return;
|
||||||
|
if(me.validate && !me.validate())
|
||||||
|
return;
|
||||||
frappe.set_route(me.wiz.page_name, me.id+1 + "");
|
frappe.set_route(me.wiz.page_name, me.id+1 + "");
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -511,6 +489,8 @@ frappe.wiz.WizardSlide = Class.extend({
|
|||||||
me.values = me.form.get_values();
|
me.values = me.form.get_values();
|
||||||
if(me.values===null)
|
if(me.values===null)
|
||||||
return;
|
return;
|
||||||
|
if(me.validate && !me.validate())
|
||||||
|
return;
|
||||||
me.wiz.on_complete(me.wiz);
|
me.wiz.on_complete(me.wiz);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -291,17 +291,28 @@ def create_items(args):
|
|||||||
item = args.get("item_" + str(i))
|
item = args.get("item_" + str(i))
|
||||||
if item:
|
if item:
|
||||||
item_group = args.get("item_group_" + str(i))
|
item_group = args.get("item_group_" + str(i))
|
||||||
|
is_sales_item = args.get("is_sales_item_" + str(i))
|
||||||
|
is_purchase_item = args.get("is_purchase_item_" + str(i))
|
||||||
|
is_stock_item = item_group!=_("Services")
|
||||||
|
default_warehouse = ""
|
||||||
|
if is_stock_item:
|
||||||
|
if is_sales_item:
|
||||||
|
default_warehouse = _("Finished Goods") + " - " + args.get("company_abbr")
|
||||||
|
else:
|
||||||
|
default_warehouse = _("Stores") + " - " + args.get("company_abbr")
|
||||||
|
|
||||||
frappe.get_doc({
|
frappe.get_doc({
|
||||||
"doctype":"Item",
|
"doctype":"Item",
|
||||||
"item_code": item,
|
"item_code": item,
|
||||||
"item_name": item,
|
"item_name": item,
|
||||||
"description": item,
|
"description": item,
|
||||||
"is_sales_item": "Yes",
|
"is_sales_item": "Yes" if is_sales_item else "No",
|
||||||
|
"is_purchase_item": "Yes" if is_purchase_item else "No",
|
||||||
"show_in_website": 1,
|
"show_in_website": 1,
|
||||||
"is_stock_item": item_group!=_("Services") and "Yes" or "No",
|
"is_stock_item": is_stock_item and "Yes" or "No",
|
||||||
"item_group": item_group,
|
"item_group": item_group,
|
||||||
"stock_uom": args.get("item_uom_" + str(i)),
|
"stock_uom": args.get("item_uom_" + str(i)),
|
||||||
"default_warehouse": item_group!=_("Service") and (_("Finished Goods") + " - " + args.get("company_abbr")) or ""
|
"default_warehouse": default_warehouse
|
||||||
}).insert()
|
}).insert()
|
||||||
|
|
||||||
if args.get("item_img_" + str(i)):
|
if args.get("item_img_" + str(i)):
|
||||||
@ -309,28 +320,6 @@ def create_items(args):
|
|||||||
fileurl = save_file(filename, content, "Item", item, decode=True).file_url
|
fileurl = save_file(filename, content, "Item", item, decode=True).file_url
|
||||||
frappe.db.set_value("Item", item, "image", fileurl)
|
frappe.db.set_value("Item", item, "image", fileurl)
|
||||||
|
|
||||||
for i in xrange(1,6):
|
|
||||||
item = args.get("item_buy_" + str(i))
|
|
||||||
if item:
|
|
||||||
item_group = args.get("item_buy_group_" + str(i))
|
|
||||||
frappe.get_doc({
|
|
||||||
"doctype":"Item",
|
|
||||||
"item_code": item,
|
|
||||||
"item_name": item,
|
|
||||||
"description": item,
|
|
||||||
"is_sales_item": "No",
|
|
||||||
"is_stock_item": item_group!=_("Services") and "Yes" or "No",
|
|
||||||
"item_group": item_group,
|
|
||||||
"stock_uom": args.get("item_buy_uom_" + str(i)),
|
|
||||||
"default_warehouse": item_group!=_("Services") and (_("Stores") + " - " + args.get("company_abbr")) or ""
|
|
||||||
}).insert()
|
|
||||||
|
|
||||||
if args.get("item_img_" + str(i)):
|
|
||||||
filename, filetype, content = args.get("item_img_" + str(i)).split(",")
|
|
||||||
fileurl = save_file(filename, content, "Item", item, decode=True).file_url
|
|
||||||
frappe.db.set_value("Item", item, "image", fileurl)
|
|
||||||
|
|
||||||
|
|
||||||
def create_customers(args):
|
def create_customers(args):
|
||||||
for i in xrange(1,6):
|
for i in xrange(1,6):
|
||||||
customer = args.get("customer_" + str(i))
|
customer = args.get("customer_" + str(i))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user