[price list] Separated Default Price List for Selling and Buying and changed fieldnames

This commit is contained in:
Rushabh Mehta 2013-08-09 18:11:35 +05:30
parent 0b9954059c
commit 4a404e9299
36 changed files with 234 additions and 201 deletions

View File

@ -6,7 +6,7 @@ cur_frm.cscript.onload = function(doc,cdt,cdn){
if(r.message) set_field_options('naming_series', r.message); if(r.message) set_field_options('naming_series', r.message);
}); });
cur_frm.set_query("price_list_name", function() { cur_frm.set_query("selling_price_list", function() {
return { filters: { buying_or_selling: "Selling" } }; return { filters: { buying_or_selling: "Selling" } };
}); });
} }

View File

@ -250,7 +250,7 @@
"read_only": 0 "read_only": 0
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "price_list_currency", "fieldname": "price_list_currency",
"fieldtype": "Link", "fieldtype": "Link",
@ -260,7 +260,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "plc_conversion_rate", "fieldname": "plc_conversion_rate",
"fieldtype": "Float", "fieldtype": "Float",

View File

@ -18,8 +18,8 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
setup_queries: function() { setup_queries: function() {
var me = this; var me = this;
if(this.frm.fields_dict.price_list_name) { if(this.frm.fields_dict.buying_price_list) {
this.frm.set_query("price_list_name", function() { this.frm.set_query("buying_price_list", function() {
return{ return{
filters: { 'buying_or_selling': "Buying" } filters: { 'buying_or_selling': "Buying" }
} }
@ -29,7 +29,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
return{ return{
query: "controllers.queries.get_price_list_currency", query: "controllers.queries.get_price_list_currency",
filters: { filters: {
'price_list_name': me.frm.doc.price_list_name, 'price_list': me.frm.doc.buying_price_list,
'buying_or_selling': "Buying" 'buying_or_selling': "Buying"
} }
} }
@ -77,7 +77,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
msgprint(wn._("Please specify Company")); msgprint(wn._("Please specify Company"));
} else { } else {
var me = this; var me = this;
var price_list_name = this.frm.doc.price_list_name; var buying_price_list = this.frm.doc.buying_price_list;
return this.frm.call({ return this.frm.call({
doc: this.frm.doc, doc: this.frm.doc,
@ -85,7 +85,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
freeze: true, freeze: true,
callback: function(r) { callback: function(r) {
if(!r.exc) { if(!r.exc) {
if(me.frm.doc.price_list_name !== price_list_name) me.price_list_name(); if(me.frm.doc.buying_price_list !== buying_price_list) me.buying_price_list();
} }
} }
}); });
@ -132,7 +132,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
docname: me.frm.doc.name, docname: me.frm.doc.name,
supplier: me.frm.doc.supplier, supplier: me.frm.doc.supplier,
conversion_rate: me.frm.doc.conversion_rate, conversion_rate: me.frm.doc.conversion_rate,
price_list_name: me.frm.doc.price_list_name, buying_price_list: me.frm.doc.buying_price_list,
price_list_currency: me.frm.doc.price_list_currency, price_list_currency: me.frm.doc.price_list_currency,
plc_conversion_rate: me.frm.doc.plc_conversion_rate, plc_conversion_rate: me.frm.doc.plc_conversion_rate,
is_subcontracted: me.frm.doc.is_subcontracted, is_subcontracted: me.frm.doc.is_subcontracted,
@ -151,8 +151,8 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
} }
}, },
price_list_name: function() { buying_price_list: function() {
this._super("buying"); this.get_price_list_currency("buying");
}, },
import_ref_rate: function(doc, cdt, cdn) { import_ref_rate: function(doc, cdt, cdn) {

View File

@ -218,7 +218,7 @@
"print_hide": 1 "print_hide": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "price_list_currency", "fieldname": "price_list_currency",
"fieldtype": "Link", "fieldtype": "Link",
@ -228,7 +228,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "plc_conversion_rate", "fieldname": "plc_conversion_rate",
"fieldtype": "Float", "fieldtype": "Float",

View File

@ -10,7 +10,7 @@ class DocType(BuyingController):
def __init__(self, doc, doclist=None): def __init__(self, doc, doclist=None):
self.doc, self.doclist = doc, doclist or [] self.doc, self.doclist = doc, doclist or []
self.tname, self.fname = "Supplier Quotation Item", "quotation_items" self.tname, self.fname = "Supplier Quotation Item", "quotation_items"
def validate(self): def validate(self):
super(DocType, self).validate() super(DocType, self).validate()

View File

@ -215,7 +215,7 @@
"print_hide": 1 "print_hide": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "price_list_currency", "fieldname": "price_list_currency",
"fieldtype": "Link", "fieldtype": "Link",
@ -225,7 +225,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "plc_conversion_rate", "fieldname": "plc_conversion_rate",
"fieldtype": "Float", "fieldtype": "Float",

View File

@ -18,7 +18,7 @@ def get_item_details(args):
"supplier": None, "supplier": None,
"transaction_date": None, "transaction_date": None,
"conversion_rate": 1.0, "conversion_rate": 1.0,
"price_list_name": None, "buying_price_list": None,
"price_list_currency": None, "price_list_currency": None,
"plc_conversion_rate": 1.0, "plc_conversion_rate": 1.0,
"is_subcontracted": "Yes" / "No" "is_subcontracted": "Yes" / "No"
@ -88,10 +88,10 @@ def _get_price_list_rate(args, item_bean, meta):
out = webnotes._dict() out = webnotes._dict()
# try fetching from price list # try fetching from price list
if args.price_list_name and args.price_list_currency: if args.buying_price_list and args.price_list_currency:
price_list_rate = item_bean.doclist.get({ price_list_rate = item_bean.doclist.get({
"parentfield": "ref_rate_details", "parentfield": "ref_rate_details",
"price_list_name": args.price_list_name, "price_list": args.buying_price_list,
"ref_currency": args.price_list_currency, "ref_currency": args.price_list_currency,
"buying_or_selling": "Buying"}) "buying_or_selling": "Buying"})
if price_list_rate: if price_list_rate:

View File

@ -55,10 +55,11 @@ class AccountsController(TransactionBase):
def set_price_list_currency(self, buying_or_selling): def set_price_list_currency(self, buying_or_selling):
company_currency = get_company_currency(self.doc.company) company_currency = get_company_currency(self.doc.company)
fieldname = buying_or_selling.lower() + "_price_list"
# TODO - change this, since price list now has only one currency allowed # TODO - change this, since price list now has only one currency allowed
if self.meta.get_field("price_list_name") and self.doc.price_list_name and \ if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname) and \
not self.doc.price_list_currency: not self.doc.price_list_currency:
self.doc.fields.update(get_price_list_currency(self.doc.price_list_name)) self.doc.fields.update(get_price_list_currency(self.doc.fields.get(fieldname)))
if self.doc.price_list_currency: if self.doc.price_list_currency:
if not self.doc.plc_conversion_rate: if not self.doc.plc_conversion_rate:
@ -73,11 +74,14 @@ class AccountsController(TransactionBase):
self.doc.currency = self.doc.price_list_currency self.doc.currency = self.doc.price_list_currency
self.doc.conversion_rate = self.doc.plc_conversion_rate self.doc.conversion_rate = self.doc.plc_conversion_rate
if self.meta.get_field("currency") and self.doc.currency != company_currency and \ if self.meta.get_field("currency"):
not self.doc.conversion_rate: if self.doc.currency != company_currency:
exchange = self.doc.currency + "-" + company_currency if not self.doc.conversion_rate:
self.doc.conversion_rate = flt(webnotes.conn.get_value("Currency Exchange", exchange = self.doc.currency + "-" + company_currency
exchange, "exchange_rate")) self.doc.conversion_rate = flt(webnotes.conn.get_value("Currency Exchange",
exchange, "exchange_rate"))
else:
self.doc.conversion_rate = 1
def set_missing_item_details(self, get_item_details): def set_missing_item_details(self, get_item_details):
"""set missing item values""" """set missing item values"""

View File

@ -187,10 +187,10 @@ def get_project_name(doctype, txt, searchfield, start, page_len, filters):
def get_price_list_currency(doctype, txt, searchfield, start, page_len, filters): def get_price_list_currency(doctype, txt, searchfield, start, page_len, filters):
return webnotes.conn.sql("""select ref_currency from `tabItem Price` return webnotes.conn.sql("""select ref_currency from `tabItem Price`
where price_list_name = %s and buying_or_selling = %s where price_list = %s and buying_or_selling = %s
and `%s` like %s order by ref_currency asc limit %s, %s""" % and `%s` like %s order by ref_currency asc limit %s, %s""" %
("%s", "%s", searchfield, "%s", "%s", "%s"), ("%s", "%s", searchfield, "%s", "%s", "%s"),
(filters["price_list_name"], filters['buying_or_selling'], "%%%s%%" % txt, (filters["price_list"], filters['buying_or_selling'], "%%%s%%" % txt,
start, page_len)) start, page_len))
def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters): def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters):

View File

@ -122,7 +122,7 @@ in ERPNext.
"plc_conversion_rate": 1.0, "plc_conversion_rate": 1.0,
"posting_date": "2013-01-23", "posting_date": "2013-01-23",
"price_list_currency": "INR", "price_list_currency": "INR",
"price_list_name": "_Test Price List", "selling_price_list": "_Test Price List",
"territory": "_Test Territory" "territory": "_Test Territory"
}, },

View File

@ -119,9 +119,9 @@ class DocType:
elif self.doc.rm_cost_as_per == 'Last Purchase Rate': elif self.doc.rm_cost_as_per == 'Last Purchase Rate':
rate = arg['last_purchase_rate'] rate = arg['last_purchase_rate']
elif self.doc.rm_cost_as_per == "Price List": elif self.doc.rm_cost_as_per == "Price List":
if not self.doc.price_list: if not self.doc.buying_price_list:
webnotes.throw(_("Please select Price List")) webnotes.throw(_("Please select Price List"))
rate = webnotes.conn.get_value("Item Price", {"price_list_name": self.doc.price_list, rate = webnotes.conn.get_value("Item Price", {"price_list": self.doc.buying_price_list,
"parent": arg["item_code"]}, "ref_rate") or 0 "parent": arg["item_code"]}, "ref_rate") or 0
elif self.doc.rm_cost_as_per == 'Standard Rate': elif self.doc.rm_cost_as_per == 'Standard Rate':
rate = arg['standard_rate'] rate = arg['standard_rate']
@ -255,7 +255,7 @@ class DocType:
(bom_no, item), as_dict =1) (bom_no, item), as_dict =1)
if not bom: if not bom:
msgprint("""Incorrect BOM No: %s against item: %s at row no: %s. msgprint("""Incorrect BOM No: %s against item: %s at row no: %s.
It may be inactive or cancelled or for some other item.""" % It may be inactive or not submitted or does not belong to this item.""" %
(bom_no, item, idx), raise_exception = 1) (bom_no, item, idx), raise_exception = 1)
def check_if_item_repeated(self, item, op, check_list): def check_if_item_repeated(self, item, op, check_list):

View File

@ -105,7 +105,8 @@ class DocType:
def get_items(self): def get_items(self):
so_list = filter(None, [d.sales_order for d in getlist(self.doclist, 'pp_so_details')]) so_list = filter(None, [d.sales_order for d in getlist(self.doclist, 'pp_so_details')])
if not so_list: if not so_list:
msgprint("Please enter sales order in the above table", raise_exception=1) msgprint("Please enter sales order in the above table")
return []
items = sql("""select distinct parent, item_code, reserved_warehouse, items = sql("""select distinct parent, item_code, reserved_warehouse,
(qty - ifnull(delivered_qty, 0)) as pending_qty (qty - ifnull(delivered_qty, 0)) as pending_qty
@ -294,8 +295,12 @@ class DocType:
webnotes.msgprint("Please enter Warehouse for which Material Request will be raised", webnotes.msgprint("Please enter Warehouse for which Material Request will be raised",
raise_exception=1) raise_exception=1)
bom_dict = self.get_distinct_items_and_boms()[0] bom_dict = self.get_distinct_items_and_boms()[0]
self.get_raw_materials(bom_dict) self.get_raw_materials(bom_dict)
if not self.item_dict:
return
item_projected_qty = self.get_projected_qty() item_projected_qty = self.get_projected_qty()
from accounts.utils import get_fiscal_year from accounts.utils import get_fiscal_year
@ -315,7 +320,6 @@ class DocType:
def get_projected_qty(self): def get_projected_qty(self):
items = self.item_dict.keys() items = self.item_dict.keys()
item_projected_qty = webnotes.conn.sql("""select item_code, sum(projected_qty) item_projected_qty = webnotes.conn.sql("""select item_code, sum(projected_qty)
from `tabBin` where item_code in (%s) group by item_code""" % from `tabBin` where item_code in (%s) group by item_code""" %
(", ".join(["%s"]*len(items)),), tuple(items)) (", ".join(["%s"]*len(items)),), tuple(items))

View File

@ -15,9 +15,19 @@ def execute():
("Item Price", "price_list_name", "price_list"), ("Item Price", "price_list_name", "price_list"),
("BOM", "price_list", "buying_price_list"), ("BOM", "price_list", "buying_price_list"),
]: ]:
webnotes.conn.sql_ddl("alter table `tab%s` change `%s` `%s` varchar(180)" % t) if t[2] in webnotes.conn.get_table_columns(t[0]):
# already reloaded, so copy into new column and drop old column
webnotes.conn.sql("""update `tab%s` set `%s`=`%s`""" % (t[0], t[2], t[1]))
webnotes.conn.sql("""alter table `tab%s` drop column `%s`""" % (t[0], t[1]))
else:
webnotes.conn.sql_ddl("alter table `tab%s` change `%s` `%s` varchar(180)" % t)
webnotes.reload_doc(webnotes.conn.get_value("DocType", t[0], "module"), "DocType", t[0])
webnotes.conn.sql("""update tabSingles set field='selling_price_list' webnotes.conn.sql("""update tabSingles set field='selling_price_list'
where field='price_list_name' and doctype='Selling Settings'""") where field='price_list_name' and doctype='Selling Settings'""")
webnotes.bean("Selling Settings").save() webnotes.reload_doc("Selling", "DocType", "Selling Settings")
webnotes.bean("Selling Settings").save()

View File

@ -114,13 +114,14 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
this.calculate_taxes_and_totals(); this.calculate_taxes_and_totals();
}, },
price_list_name: function(buying_or_selling) { get_price_list_currency: function(buying_or_selling) {
var me = this; var me = this;
if(this.frm.doc.price_list_name) { var fieldname = buying_or_selling.toLowerCase() + "_price_list";
if(this.frm.doc[fieldname]) {
return this.frm.call({ return this.frm.call({
method: "setup.utils.get_price_list_currency", method: "setup.utils.get_price_list_currency",
args: { args: {
price_list_name: this.frm.doc.price_list_name, price_list: this.frm.doc[fieldname],
}, },
callback: function(r) { callback: function(r) {
if(!r.exc) { if(!r.exc) {

View File

@ -44,7 +44,7 @@ test_records = [
"order_type": "Sales", "order_type": "Sales",
"plc_conversion_rate": 1.0, "plc_conversion_rate": 1.0,
"price_list_currency": "INR", "price_list_currency": "INR",
"price_list_name": "_Test Price List", "selling_price_list": "_Test Price List",
"territory": "_Test Territory", "territory": "_Test Territory",
"transaction_date": "2013-02-21", "transaction_date": "2013-02-21",
"grand_total": 1000.0, "grand_total": 1000.0,

View File

@ -32,7 +32,7 @@ class DocType:
det = webnotes.conn.sql("""select description, stock_uom from `tabItem` det = webnotes.conn.sql("""select description, stock_uom from `tabItem`
where name = %s""", name) where name = %s""", name)
rate = webnotes.conn.sql("""select ref_rate from `tabItem Price` rate = webnotes.conn.sql("""select ref_rate from `tabItem Price`
where price_list_name = %s and parent = %s where price_list = %s and parent = %s
and ref_currency = %s""", (self.doc.price_list, name, self.doc.currency)) and ref_currency = %s""", (self.doc.price_list, name, self.doc.currency))
return { return {
'description' : det and det[0][0] or '', 'description' : det and det[0][0] or '',

View File

@ -45,8 +45,8 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
}); });
} }
if(this.frm.fields_dict.price_list_name) { if(this.frm.fields_dict.selling_price_list) {
this.frm.set_query("price_list_name", function() { this.frm.set_query("selling_price_list", function() {
return { filters: { buying_or_selling: "Selling" } }; return { filters: { buying_or_selling: "Selling" } };
}); });
@ -54,7 +54,7 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
return { return {
query: "controllers.queries.get_price_list_currency", query: "controllers.queries.get_price_list_currency",
filters: { filters: {
price_list_name: me.frm.doc.price_list_name, price_list: me.frm.doc.selling_price_list,
buying_or_selling: "Selling" buying_or_selling: "Selling"
} }
}; };
@ -126,15 +126,15 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
this.frm.set_value("customer", null); this.frm.set_value("customer", null);
msgprint(wn._("Please specify Company")); msgprint(wn._("Please specify Company"));
} else { } else {
var price_list_name = this.frm.doc.price_list_name; var selling_price_list = this.frm.doc.selling_price_list;
return this.frm.call({ return this.frm.call({
doc: this.frm.doc, doc: this.frm.doc,
method: "set_customer_defaults", method: "set_customer_defaults",
freeze: true, freeze: true,
callback: function(r) { callback: function(r) {
if(!r.exc) { if(!r.exc) {
(me.frm.doc.price_list_name !== price_list_name) ? (me.frm.doc.selling_price_list !== selling_price_list) ?
me.price_list_name() : me.selling_price_list() :
me.price_list_currency(); me.price_list_currency();
} }
} }
@ -188,7 +188,7 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
customer: me.frm.doc.customer, customer: me.frm.doc.customer,
currency: me.frm.doc.currency, currency: me.frm.doc.currency,
conversion_rate: me.frm.doc.conversion_rate, conversion_rate: me.frm.doc.conversion_rate,
price_list_name: me.frm.doc.price_list_name, selling_price_list: me.frm.doc.selling_price_list,
price_list_currency: me.frm.doc.price_list_currency, price_list_currency: me.frm.doc.price_list_currency,
plc_conversion_rate: me.frm.doc.plc_conversion_rate, plc_conversion_rate: me.frm.doc.plc_conversion_rate,
company: me.frm.doc.company, company: me.frm.doc.company,
@ -206,8 +206,8 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
} }
}, },
price_list_name: function() { selling_price_list: function() {
this._super("Selling"); this.get_price_list_currency("Selling");
}, },
ref_rate: function(doc, cdt, cdn) { ref_rate: function(doc, cdt, cdn) {

View File

@ -289,7 +289,7 @@ test_records = [
"delivery_date": "2013-02-23", "delivery_date": "2013-02-23",
"plc_conversion_rate": 1.0, "plc_conversion_rate": 1.0,
"price_list_currency": "INR", "price_list_currency": "INR",
"price_list_name": "_Test Price List", "selling_price_list": "_Test Price List",
"territory": "_Test Territory", "territory": "_Test Territory",
"transaction_date": "2013-02-21", "transaction_date": "2013-02-21",
"grand_total": 1000.0, "grand_total": 1000.0,

View File

@ -29,7 +29,7 @@ def get_item_details(args):
"warehouse": None, "warehouse": None,
"customer": "", "customer": "",
"conversion_rate": 1.0, "conversion_rate": 1.0,
"price_list_name": None, "selling_price_list": None,
"price_list_currency": None, "price_list_currency": None,
"plc_conversion_rate": 1.0 "plc_conversion_rate": 1.0
} }
@ -57,7 +57,7 @@ def get_item_details(args):
if meta.get_field("currency"): if meta.get_field("currency"):
out.base_ref_rate = out.basic_rate = out.ref_rate = out.export_rate = 0.0 out.base_ref_rate = out.basic_rate = out.ref_rate = out.export_rate = 0.0
if args.price_list_name and args.price_list_currency: if args.selling_price_list and args.price_list_currency:
out.update(_get_price_list_rate(args, item_bean, meta)) out.update(_get_price_list_rate(args, item_bean, meta))
out.update(_get_item_discount(out.item_group, args.customer)) out.update(_get_item_discount(out.item_group, args.customer))
@ -129,7 +129,7 @@ def _get_basic_details(args, item_bean, warehouse_fieldname):
def _get_price_list_rate(args, item_bean, meta): def _get_price_list_rate(args, item_bean, meta):
base_ref_rate = item_bean.doclist.get({ base_ref_rate = item_bean.doclist.get({
"parentfield": "ref_rate_details", "parentfield": "ref_rate_details",
"price_list_name": args.price_list_name, "price_list": args.selling_price_list,
"ref_currency": args.price_list_currency, "ref_currency": args.price_list_currency,
"buying_or_selling": "Selling"}) "buying_or_selling": "Selling"})

View File

@ -19,7 +19,7 @@ $.extend(cur_frm.cscript, {
}, },
show_item_prices: function() { show_item_prices: function() {
var item_price = wn.model.get("Item Price", {price_list_name: cur_frm.doc.name}); var item_price = wn.model.get("Item Price", {price_list: cur_frm.doc.name});
var show = item_price && item_price.length; var show = item_price && item_price.length;

View File

@ -11,7 +11,7 @@ import webnotes.defaults
class DocType(DocListController): class DocType(DocListController):
def onload(self): def onload(self):
self.doclist.extend(webnotes.conn.sql("""select * from `tabItem Price` self.doclist.extend(webnotes.conn.sql("""select * from `tabItem Price`
where price_list_name=%s""", self.doc.name, as_dict=True, update={"doctype": "Item Price"})) where price_list=%s""", self.doc.name, as_dict=True, update={"doctype": "Item Price"}))
def validate(self): def validate(self):
if self.doc.buying_or_selling not in ["Buying", "Selling"]: if self.doc.buying_or_selling not in ["Buying", "Selling"]:
@ -31,10 +31,20 @@ class DocType(DocListController):
self.validate_table_has_rows("valid_for_territories") self.validate_table_has_rows("valid_for_territories")
def on_update(self): def on_update(self):
self.set_default_if_missing()
cart_settings = webnotes.get_obj("Shopping Cart Settings") cart_settings = webnotes.get_obj("Shopping Cart Settings")
if cint(cart_settings.doc.enabled): if cint(cart_settings.doc.enabled):
cart_settings.validate_price_lists() cart_settings.validate_price_lists()
def on_trash(self): def on_trash(self):
webnotes.conn.sql("""delete from `tabItem Price` where price_list_name = %s""", webnotes.conn.sql("""delete from `tabItem Price` where price_list = %s""",
self.doc.name) self.doc.name)
def set_default_if_missing(self):
if self.doc.buying_or_selling=="Selling":
if not webnotes.conn.get_value("Selling Settings", None, "selling_price_list"):
webnotes.set_value("Selling Settings", "Selling Settings", "selling_price_list", self.doc.name)
elif self.doc.buying_or_selling=="Buying":
if not webnotes.conn.get_value("Buying Settings", None, "buying_price_list"):
webnotes.set_value("Buying Settings", "Buying Settings", "buying_price_list", self.doc.name)

View File

@ -31,6 +31,6 @@ def get_ancestors_of(doctype, name):
return result or [] return result or []
@webnotes.whitelist() @webnotes.whitelist()
def get_price_list_currency(price_list_name): def get_price_list_currency(price_list):
return {"price_list_currency": webnotes.conn.get_value("Price List", price_list_name, return {"price_list_currency": webnotes.conn.get_value("Price List", price_list,
"currency")} "currency")}

View File

@ -111,7 +111,7 @@ test_records = [
"posting_date": "2013-02-21", "posting_date": "2013-02-21",
"posting_time": "9:00:00", "posting_time": "9:00:00",
"price_list_currency": "INR", "price_list_currency": "INR",
"price_list_name": "_Test Price List", "selling_price_list": "_Test Price List",
"status": "Draft", "status": "Draft",
"territory": "_Test Territory", "territory": "_Test Territory",
"net_total": 500.0, "net_total": 500.0,

View File

@ -5,16 +5,16 @@ wn.provide("erpnext.stock");
erpnext.stock.Item = wn.ui.form.Controller.extend({ erpnext.stock.Item = wn.ui.form.Controller.extend({
onload: function() { onload: function() {
this.frm.add_fetch("price_list_name", "currency", "ref_currency"); this.frm.add_fetch("price_list", "currency", "ref_currency");
this.frm.add_fetch("price_list_name", "buying_or_selling", "buying_or_selling"); this.frm.add_fetch("price_list", "buying_or_selling", "buying_or_selling");
}, },
ref_rate_details_add: function(doc, cdt, cdn) { ref_rate_details_add: function(doc, cdt, cdn) {
var row = wn.model.get_doc(cdt, cdn); var row = wn.model.get_doc(cdt, cdn);
if(row.price_list_name && !row.ref_currency) { if(row.price_list && !row.ref_currency) {
// execute fetch // execute fetch
var df = wn.meta.get_docfield(row.doctype, "price_list_name", row.parent); var df = wn.meta.get_docfield(row.doctype, "price_list", row.parent);
this.frm.script_manager.validate_link_and_fetch(df, row.name, row.price_list_name); this.frm.script_manager.validate_link_and_fetch(df, row.name, row.price_list);
} }
} }
}); });

View File

@ -130,16 +130,16 @@ class DocType(DocListController):
def validate_price_lists(self): def validate_price_lists(self):
price_lists=[] price_lists=[]
for d in getlist(self.doclist,'ref_rate_details'): for d in getlist(self.doclist,'ref_rate_details'):
if d.price_list_name in price_lists: if d.price_list in price_lists:
msgprint(_("Cannot have two prices for same Price List") + ": " + d.price_list_name, msgprint(_("Cannot have two prices for same Price List") + ": " + d.price_list,
raise_exception= webnotes.DuplicateEntryError) raise_exception= webnotes.DuplicateEntryError)
else: else:
price_list_currency = webnotes.conn.get_value("Price List", d.price_list_name, "currency") price_list_currency = webnotes.conn.get_value("Price List", d.price_list, "currency")
if price_list_currency and d.ref_currency != price_list_currency: if price_list_currency and d.ref_currency != price_list_currency:
msgprint(_("Currency does not match Price List Currency for Price List") \ msgprint(_("Currency does not match Price List Currency for Price List") \
+ ": " + d.price_list_name, raise_exception=PriceListCurrencyMismatch) + ": " + d.price_list, raise_exception=PriceListCurrencyMismatch)
price_lists.append(d.price_list_name) price_lists.append(d.price_list)
def fill_customer_code(self): def fill_customer_code(self):

View File

@ -61,7 +61,7 @@ test_records = [
}, { }, {
"doctype": "Item Price", "doctype": "Item Price",
"parentfield": "ref_rate_details", "parentfield": "ref_rate_details",
"price_list_name": "_Test Price List", "price_list": "_Test Price List",
"ref_rate": 100, "ref_rate": 100,
"ref_currency": "INR", "ref_currency": "INR",
"buying_or_selling": "Selling" "buying_or_selling": "Selling"

View File

@ -244,7 +244,7 @@
"print_hide": 1 "print_hide": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "price_list_currency", "fieldname": "price_list_currency",
"fieldtype": "Link", "fieldtype": "Link",
@ -255,7 +255,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "price_list_name", "depends_on": "buying_price_list",
"doctype": "DocField", "doctype": "DocField",
"fieldname": "plc_conversion_rate", "fieldname": "plc_conversion_rate",
"fieldtype": "Float", "fieldtype": "Float",

View File

@ -58,7 +58,7 @@ def get_price_list():
rate = {} rate = {}
price_list = webnotes.conn.sql("""select parent, selling, buying, price_list = webnotes.conn.sql("""select parent, selling, buying,
concat(price_list_name, " - ", ref_currency, " ", ref_rate) as price concat(price_list, " - ", ref_currency, " ", ref_rate) as price
from `tabItem Price` where docstatus<2""", as_dict=1) from `tabItem Price` where docstatus<2""", as_dict=1)
for j in price_list: for j in price_list:

View File

@ -2,7 +2,7 @@
{ {
"creation": "2013-02-22 18:01:55", "creation": "2013-02-22 18:01:55",
"docstatus": 0, "docstatus": 0,
"modified": "2013-05-07 11:50:46", "modified": "2013-05-07 11:52:00",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -10,7 +10,7 @@
"doctype": "Report", "doctype": "Report",
"is_standard": "Yes", "is_standard": "Yes",
"name": "__common__", "name": "__common__",
"query": "select\n item.name as \"ID:Link/Item:120\", \n item.item_name as \"Item Name::120\", \n item_price.price_list_name as \"Price List::80\",\n item_price.ref_currency as \"Currency::40\", \n item_price.ref_rate as \"Rate:Float:80\",\n item.description as \"Description::160\",\n item.item_group as \"Item Group:Link/Item Group:100\",\n item.brand as \"Brand::100\"\nfrom `tabItem` item, `tabItem Price` item_price\nwhere\n item_price.parent = item.name", "query": "select\n item.name as \"ID:Link/Item:120\", \n item.item_name as \"Item Name::120\", \n item_price.price_list as \"Price List::80\",\n item_price.ref_currency as \"Currency::40\", \n item_price.ref_rate as \"Rate:Float:80\",\n item.description as \"Description::160\",\n item.item_group as \"Item Group:Link/Item Group:100\",\n item.brand as \"Brand::100\"\nfrom `tabItem` item, `tabItem Price` item_price\nwhere\n item_price.parent = item.name",
"ref_doctype": "Item", "ref_doctype": "Item",
"report_name": "Item-Wise Price List", "report_name": "Item-Wise Price List",
"report_type": "Query Report" "report_type": "Query Report"

View File

@ -1,48 +1,47 @@
"Data Import Template" Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Table:","BOM" Table:,BOM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Notes:" Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Please do not change the template headings." Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"First data column must be blank." First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"If you are uploading new records, leave the ""name"" (ID) column blank." "If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"If you are uploading new records, ""Naming Series"" becomes mandatory, if present." "If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish." Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"For updating, you can update only selective columns." "For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"You can only upload upto 5000 records in one go. (may be less in some cases)" You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"DocType:","BOM","","","","","","","","","","","","","","","","-","BOM Operation","bom_operations","","","","","","-","BOM Item","bom_materials","","","","","","","","","-","BOM Explosion Item","flat_bom_details","","","","","","" DocType:,BOM,,,,,,,,,,,,,,,,-,BOM Operation,bom_operations,,,,,,-,BOM Item,bom_materials,,,,,,,,,-,BOM Explosion Item,flat_bom_details,,,,,,
"Column Labels:","ID","Last Updated On","Item","Quantity","Is Active","Is Default","With Operations","Rate Of Materials Based On","Price List","Total Cost","Total Raw Material Cost","Total Operating Cost","Item UOM","Project Name","Item Desription","Amended From","-","ID","Operation No","Operation Description","Workstation","Hour Rate","Operation Time (mins)","Operating Cost","-","ID","Item Code","Qty","Stock UOM","Operation No","BOM No","Rate","Amount","Scrap %","Item Description","-","ID","Item Code","Description","Qty","Rate","Amount","Stock UOM","Qty Consumed Per Unit" Column Labels:,ID,Last Updated On,Item,Quantity,Is Active,Is Default,With Operations,Rate Of Materials Based On,Price List,Total Cost,Total Raw Material Cost,Total Operating Cost,Item UOM,Project Name,Item Desription,Amended From,-,ID,Operation No,Operation Description,Workstation,Hour Rate,Operation Time (mins),Operating Cost,-,ID,Item Code,Qty,Stock UOM,Operation No,BOM No,Rate,Amount,Scrap %,Item Description,-,ID,Item Code,Description,Qty,Rate,Amount,Stock UOM,Qty Consumed Per Unit
"Column Name:","name","modified","item","quantity","is_active","is_default","with_operations","rm_cost_as_per","price_list","total_cost","raw_material_cost","operating_cost","uom","project_name","description","amended_from","-","name","operation_no","opn_description","workstation","hour_rate","time_in_mins","operating_cost","-","name","item_code","qty","stock_uom","operation_no","bom_no","rate","amount","scrap","description","-","name","item_code","description","qty","rate","amount","stock_uom","qty_consumed_per_unit" Column Name:,name,modified,item,quantity,is_active,is_default,with_operations,rm_cost_as_per,buying_price_list,total_cost,raw_material_cost,operating_cost,uom,project_name,description,amended_from,-,name,operation_no,opn_description,workstation,hour_rate,time_in_mins,operating_cost,-,name,item_code,qty,stock_uom,operation_no,bom_no,rate,amount,scrap,description,-,name,item_code,description,qty,rate,amount,stock_uom,qty_consumed_per_unit
"Mandatory:","Yes","Yes","Yes","Yes","No","No","No","No","No","No","No","No","No","No","No","No","-","Yes","Yes","Yes","No","No","No","No","-","Yes","Yes","Yes","Yes","No","No","No","No","No","No","-","Yes","No","No","No","No","No","No","No" Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,-,Yes,Yes,Yes,No,No,No,No,-,Yes,Yes,Yes,Yes,No,No,No,No,No,No,-,Yes,No,No,No,No,No,No,No
"Type:","Data (text)","Data","Link","Float","Check","Check","Check","Select","Link","Float","Float","Float","Select","Link","Small Text","Link","-","Data","Data","Text","Link","Float","Float","Float","-","Data","Link","Float","Link","Select","Link","Float","Float","Float","Text","-","Data","Link","Text","Float","Float","Float","Link","Float" Type:,Data (text),Data,Link,Float,Check,Check,Check,Select,Link,Float,Float,Float,Select,Link,Small Text,Link,-,Data,Data,Text,Link,Float,Float,Float,-,Data,Link,Float,Link,Select,Link,Float,Float,Float,Text,-,Data,Link,Text,Float,Float,Float,Link,Float
"Info:","","Don't change!","Valid Item","","0 or 1","0 or 1","0 or 1","One of: Valuation Rate, Last Purchase Rate, Price List","Valid Price List","","","","Valid UOM","Valid Project","","Valid BOM","-","Leave blank for new records","","","Valid Workstation","","","","-","Leave blank for new records","Valid Item","","Valid UOM","","Valid BOM","","","","","-","Leave blank for new records","Valid Item","","","","","Valid UOM","" Info:,,Don't change!,Valid Item,,0 or 1,0 or 1,0 or 1,"One of: Valuation Rate, Last Purchase Rate, Price List",Valid Price List,,,,Valid UOM,Valid Project,,Valid BOM,-,Leave blank for new records,,,Valid Workstation,,,,-,Leave blank for new records,Valid Item,,Valid UOM,,Valid BOM,,,,,-,Leave blank for new records,Valid Item,,,,,Valid UOM,
"Start entering data below this line" Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"","BOM/Bearing Assembly/001","""2013-08-07 16:58:00""","Bearing Assembly",1.0,1,"","","Price List","Standard Buying",130.0,130.0,0.0,"Nos","","Bearing Assembly","","","","","","","","","","","000000183","Base Bearing Plate",1.0,"Nos","","",15.0,15.0,"","1/4 in. x 6 in. x 6 in. Mild Steel Plate","","FBD/000039","Bearing Pipe","1.5 in. Diameter x 36 in. Mild Steel Tubing",1.0,15.0,15.0,"Nos",1.0 ,BOM/Bearing Assembly/001,"""2013-08-07 16:58:00""",Bearing Assembly,1.0,1,1,,Price List,Standard Buying,130.0,130.0,0.0,Nos,,Bearing Assembly,,,,,,,,,,,183,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000039,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000184","Bearing Block",1.0,"Nos","","",10.0,10.0,"","CAST IRON, MCMASTER PART NO. 3710T13","","FBD/000040","Bearing Collar","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar",2.0,20.0,40.0,"Nos",2.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,184,Bearing Block,1.0,Nos,,,10.0,10.0,,"CAST IRON, MCMASTER PART NO. 3710T13",,FBD/000040,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2.0,20.0,40.0,Nos,2.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000185","Bearing Collar",2.0,"Nos","","",20.0,40.0,"","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar","","FBD/000041","Bearing Block","CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,185,Bearing Collar,2.0,Nos,,,20.0,40.0,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,FBD/000041,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000186","Bearing Pipe",1.0,"Nos","","",15.0,15.0,"","1.5 in. Diameter x 36 in. Mild Steel Tubing","","FBD/000042","Upper Bearing Plate","3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate",1.0,50.0,50.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,186,Bearing Pipe,1.0,Nos,,,15.0,15.0,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,FBD/000042,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1.0,50.0,50.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000187","Upper Bearing Plate",1.0,"Nos","","",50.0,50.0,"","3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate","","FBD/000043","Base Bearing Plate","1/4 in. x 6 in. x 6 in. Mild Steel Plate",1.0,15.0,15.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,187,Upper Bearing Plate,1.0,Nos,,,50.0,50.0,,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,,FBD/000043,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0
"","BOM/Wind Mill A Series/001","""2013-08-07 16:47:02""","Wind Mill A Series",1.0,1,"","","Price List","Standard Buying",223.0,223.0,0.0,"Nos","","Wind Mill A Series for Home Use 9ft","","","","","","","","","","","000000163","Base Bearing Plate",1.0,"Nos","","",15.0,15.0,"","1/4 in. x 6 in. x 6 in. Mild Steel Plate","","FBD/000008","Shaft","1.25 in. Diameter x 6 ft. Mild Steel Tubing",1.0,30.0,30.0,"Nos",1.0 ,BOM/Wind Mill A Series/001,"""2013-08-07 16:47:02""",Wind Mill A Series,1.0,1,1,,Price List,Standard Buying,223.0,223.0,0.0,Nos,,Wind Mill A Series for Home Use 9ft,,,,,,,,,,,163,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000008,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1.0,30.0,30.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000164","Base Plate",1.0,"Nos","","",20.0,20.0,"","3/4 in. x 2 ft. x 4 ft. Pine Plywood","","FBD/000009","Base Bearing Plate","1/4 in. x 6 in. x 6 in. Mild Steel Plate",1.0,15.0,15.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,164,Base Plate,1.0,Nos,,,20.0,20.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000009,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000165","Bearing Block",1.0,"Nos","","",10.0,10.0,"","CAST IRON, MCMASTER PART NO. 3710T13","","FBD/000010","External Disc","15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing",1.0,45.0,45.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,165,Bearing Block,1.0,Nos,,,10.0,10.0,,"CAST IRON, MCMASTER PART NO. 3710T13",,FBD/000010,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1.0,45.0,45.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000166","Bearing Pipe",1.0,"Nos","","",15.0,15.0,"","1.5 in. Diameter x 36 in. Mild Steel Tubing","","FBD/000011","Bearing Pipe","1.5 in. Diameter x 36 in. Mild Steel Tubing",1.0,15.0,15.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,166,Bearing Pipe,1.0,Nos,,,15.0,15.0,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,FBD/000011,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000167","External Disc",1.0,"Nos","","",45.0,45.0,"","15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing","","FBD/000012","Wing Sheet","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet",4.0,22.0,88.0,"Nos",4.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,167,External Disc,1.0,Nos,,,45.0,45.0,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,FBD/000012,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,4.0,22.0,88.0,Nos,4.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000168","Shaft",1.0,"Nos","","",30.0,30.0,"","1.25 in. Diameter x 6 ft. Mild Steel Tubing","","FBD/000013","Base Plate","3/4 in. x 2 ft. x 4 ft. Pine Plywood",1.0,20.0,20.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,168,Shaft,1.0,Nos,,,30.0,30.0,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,FBD/000013,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1.0,20.0,20.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000169","Wing Sheet",4.0,"Nos","","",22.0,88.0,"","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet","","FBD/000014","Bearing Block","CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,169,Wing Sheet,4.0,Nos,,,22.0,88.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000014,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0
"","BOM/Wind MIll C Series/001","""2013-08-07 16:58:51""","Wind MIll C Series",1.0,1,"","","Price List","Standard Buying",314.0,314.0,0.0,"Nos","","Wind Mill C Series for Commercial Use 18ft","","","","","","","","","","","000000176","Base Plate",2.0,"Nos","","",20.0,40.0,"","3/4 in. x 2 ft. x 4 ft. Pine Plywood","","FBD/000061","Base Bearing Plate","1/4 in. x 6 in. x 6 in. Mild Steel Plate",1.0,15.0,15.0,"Nos",1.0 ,BOM/Wind MIll C Series/001,"""2013-08-07 16:58:51""",Wind MIll C Series,1.0,1,1,,Price List,Standard Buying,314.0,314.0,0.0,Nos,,Wind Mill C Series for Commercial Use 18ft,,,,,,,,,,,176,Base Plate,2.0,Nos,,,20.0,40.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000061,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000178","Internal Disc",1.0,"Nos","","",33.0,33.0,"","For Bearing Collar","","FBD/000062","Bearing Collar","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar",2.0,20.0,40.0,"Nos",2.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,178,Internal Disc,1.0,Nos,,,33.0,33.0,,For Bearing Collar,,FBD/000062,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2.0,20.0,40.0,Nos,2.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000179","External Disc",1.0,"Nos","","",45.0,45.0,"","15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing","","FBD/000063","Base Plate","3/4 in. x 2 ft. x 4 ft. Pine Plywood",2.0,20.0,40.0,"Nos",2.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,179,External Disc,1.0,Nos,,,45.0,45.0,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,FBD/000063,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,2.0,20.0,40.0,Nos,2.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000188","Bearing Assembly",1.0,"Nos","","BOM/Bearing Assembly/001",130.0,130.0,"","Bearing Assembly","","FBD/000064","Bearing Pipe","1.5 in. Diameter x 36 in. Mild Steel Tubing",1.0,15.0,15.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,188,Bearing Assembly,1.0,Nos,,BOM/Bearing Assembly/001,130.0,130.0,,Bearing Assembly,,FBD/000064,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000189","Wing Sheet",3.0,"Nos","","",22.0,66.0,"","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet","","FBD/000065","Internal Disc","For Bearing Collar",1.0,33.0,33.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,189,Wing Sheet,3.0,Nos,,,22.0,66.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000065,Internal Disc,For Bearing Collar,1.0,33.0,33.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","FBD/000066","Upper Bearing Plate","3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate",1.0,50.0,50.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000066,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1.0,50.0,50.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","FBD/000067","Wing Sheet","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet",3.0,22.0,66.0,"Nos",3.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000067,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,3.0,22.0,66.0,Nos,3.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","FBD/000068","External Disc","15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing",1.0,45.0,45.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000068,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1.0,45.0,45.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","FBD/000069","Bearing Block","CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,FBD/000069,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1.0,10.0,10.0,Nos,1.0
"","BOM/Wind Turbine/001","""2013-08-07 16:51:56""","Wind Turbine",1.0,1,"","","Price List","Standard Buying",139.0,139.0,0.0,"Nos","","Small Wind Turbine for Home Use","","","","","","","","","","","000000170","Base Bearing Plate",1.0,"Nos","","",15.0,15.0,"","1/4 in. x 6 in. x 6 in. Mild Steel Plate","","FBD/000021","Shaft","1.25 in. Diameter x 6 ft. Mild Steel Tubing",1.0,30.0,30.0,"Nos",1.0 ,BOM/Wind Turbine/001,"""2013-08-07 16:51:56""",Wind Turbine,1.0,1,1,,Price List,Standard Buying,139.0,139.0,0.0,Nos,,Small Wind Turbine for Home Use,,,,,,,,,,,170,Base Bearing Plate,1.0,Nos,,,15.0,15.0,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,FBD/000021,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1.0,30.0,30.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000171","Base Plate",1.0,"Nos","","",20.0,20.0,"","3/4 in. x 2 ft. x 4 ft. Pine Plywood","","FBD/000022","Bearing Collar","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar",1.0,20.0,20.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,171,Base Plate,1.0,Nos,,,20.0,20.0,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000022,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,1.0,20.0,20.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000172","Bearing Collar",1.0,"Nos","","",20.0,20.0,"","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar","","FBD/000023","Base Plate","3/4 in. x 2 ft. x 4 ft. Pine Plywood",1.0,20.0,20.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,172,Bearing Collar,1.0,Nos,,,20.0,20.0,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,FBD/000023,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1.0,20.0,20.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000173","Blade Rib",1.0,"Nos","","",10.0,10.0,"","1/2 in. x 2 ft. x 4 ft. Pine Plywood","","FBD/000024","Base Bearing Plate","1/4 in. x 6 in. x 6 in. Mild Steel Plate",1.0,15.0,15.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,173,Blade Rib,1.0,Nos,,,10.0,10.0,,1/2 in. x 2 ft. x 4 ft. Pine Plywood,,FBD/000024,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1.0,15.0,15.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000174","Shaft",1.0,"Nos","","",30.0,30.0,"","1.25 in. Diameter x 6 ft. Mild Steel Tubing","","FBD/000025","Blade Rib","1/2 in. x 2 ft. x 4 ft. Pine Plywood",1.0,10.0,10.0,"Nos",1.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,174,Shaft,1.0,Nos,,,30.0,30.0,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,FBD/000025,Blade Rib,1/2 in. x 2 ft. x 4 ft. Pine Plywood,1.0,10.0,10.0,Nos,1.0
"","","","","","","","","","","","","","","","","","","","","","","","","","","000000175","Wing Sheet",2.0,"Nos","","",22.0,44.0,"","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet","","FBD/000026","Wing Sheet","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet",2.0,22.0,44.0,"Nos",2.0 ,,,,,,,,,,,,,,,,,,,,,,,,,,175,Wing Sheet,2.0,Nos,,,22.0,44.0,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,FBD/000026,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,2.0,22.0,44.0,Nos,2.0
Can't render this file because it has a wrong number of fields in line 2.

View File

@ -1,38 +1,37 @@
"Data Import Template" Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Table:","Item" Table:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Notes:" Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Please do not change the template headings." Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"First data column must be blank." First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"If you are uploading new records, leave the ""name"" (ID) column blank." "If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"If you are uploading new records, ""Naming Series"" becomes mandatory, if present." "If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish." Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"For updating, you can update only selective columns." "For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"You can only upload upto 5000 records in one go. (may be less in some cases)" You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"DocType:","Item","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" DocType:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Column Labels:","ID","Item Name","Item Group","Default Unit of Measure","Description","Is Stock Item","Is Asset Item","Has Batch No","Has Serial No","Is Purchase Item","Is Sales Item","Is Service Item","Allow Samples","Inspection Required","Allow Bill of Materials","Allow Production Order","Is Sub Contracted Item","Document Numbering Series","Item Code","Brand","Barcode","Image","Description HTML","Default Warehouse","Allowance Percent","Valuation Method","Minimum Order Qty","Warranty Period (in days)","End of Life","Net Weight","Weight UOM","Re-Order Level","Re-Order Qty","Default Supplier","Lead Time Days","Default Expense Account","Default Cost Center","Last Purchase Rate","Standard Rate","Manufacturer","Manufacturer Part Number","Max Discount (%)","Default Income Account","Cost Center","Default BOM","Show in Website","Page Name","Weightage","Slideshow","Image","Website Warehouse","Website Description" Column Labels:,ID,Item Name,Item Group,Default Unit of Measure,Description,Is Stock Item,Is Asset Item,Has Batch No,Has Serial No,Is Purchase Item,Is Sales Item,Is Service Item,Allow Samples,Inspection Required,Allow Bill of Materials,Allow Production Order,Is Sub Contracted Item,Document Numbering Series,Item Code,Brand,Barcode,Image,Description HTML,Default Warehouse,Allowance Percent,Valuation Method,Minimum Order Qty,Warranty Period (in days),End of Life,Net Weight,Weight UOM,Re-Order Level,Re-Order Qty,Default Supplier,Lead Time Days,Default Expense Account,Default Cost Center,Last Purchase Rate,Standard Rate,Manufacturer,Manufacturer Part Number,Max Discount (%),Default Income Account,Cost Center,Default BOM,Show in Website,Page Name,Weightage,Slideshow,Image,Website Warehouse,Website Description
"Column Name:","name","item_name","item_group","stock_uom","description","is_stock_item","is_asset_item","has_batch_no","has_serial_no","is_purchase_item","is_sales_item","is_service_item","is_sample_item","inspection_required","is_manufactured_item","is_pro_applicable","is_sub_contracted_item","naming_series","item_code","brand","barcode","image","description_html","default_warehouse","tolerance","valuation_method","min_order_qty","warranty_period","end_of_life","net_weight","weight_uom","re_order_level","re_order_qty","default_supplier","lead_time_days","purchase_account","cost_center","last_purchase_rate","standard_rate","manufacturer","manufacturer_part_no","max_discount","default_income_account","default_sales_cost_center","default_bom","show_in_website","page_name","weightage","slideshow","website_image","website_warehouse","web_long_description" Column Name:,name,item_name,item_group,stock_uom,description,is_stock_item,is_asset_item,has_batch_no,has_serial_no,is_purchase_item,is_sales_item,is_service_item,is_sample_item,inspection_required,is_manufactured_item,is_pro_applicable,is_sub_contracted_item,naming_series,item_code,brand,barcode,image,description_html,default_warehouse,tolerance,valuation_method,min_order_qty,warranty_period,end_of_life,net_weight,weight_uom,re_order_level,re_order_qty,default_supplier,lead_time_days,purchase_account,cost_center,last_purchase_rate,standard_rate,manufacturer,manufacturer_part_no,max_discount,default_income_account,default_sales_cost_center,default_bom,show_in_website,page_name,weightage,slideshow,website_image,website_warehouse,web_long_description
"Mandatory:","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No","No" Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No
"Type:","Data (text)","Data","Link","Link","Small Text","Select","Select","Select","Select","Select","Select","Select","Select","Select","Select","Select","Select","Select","Data","Link","Data","Select","Small Text","Link","Float","Select","Float","Data","Date","Float","Link","Float","Float","Link","Int","Link","Link","Float","Float","Data","Data","Float","Link","Link","Link","Check","Data","Int","Link","Select","Link","Text Editor" Type:,Data (text),Data,Link,Link,Small Text,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Data,Link,Data,Select,Small Text,Link,Float,Select,Float,Data,Date,Float,Link,Float,Float,Link,Int,Link,Link,Float,Float,Data,Data,Float,Link,Link,Link,Check,Data,Int,Link,Select,Link,Text Editor
"Info:","","","Valid Item Group","Valid UOM","","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: ITEM","","Valid Brand","","One of: attach_files:","","Valid Warehouse","","One of: FIFO, Moving Average","","","","","Valid UOM","","","Valid Supplier","Integer","Valid Account","Valid Cost Center","","","","","","Valid Account","Valid Cost Center","Valid BOM","0 or 1","","Integer","Valid Website Slideshow","One of: attach_files:","Valid Warehouse","" Info:,,,Valid Item Group,Valid UOM,,"One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No",One of: ITEM,,Valid Brand,,One of: attach_files:,,Valid Warehouse,,"One of: FIFO, Moving Average",,,,,Valid UOM,,,Valid Supplier,Integer,Valid Account,Valid Cost Center,,,,,,Valid Account,Valid Cost Center,Valid BOM,0 or 1,,Integer,Valid Website Slideshow,One of: attach_files:,Valid Warehouse,
"Start entering data below this line" Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"","Base Bearing Plate","Base Bearing Plate","Raw Material","Nos","1/4 in. x 6 in. x 6 in. Mild Steel Plate","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Base Bearing Plate","","","","","Stores - WP","","","","","","","","","","Eagle Hardware","","","","","","","","","","","","","","","","","","" ,Base Bearing Plate,Base Bearing Plate,Raw Material,Nos,1/4 in. x 6 in. x 6 in. Mild Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Base Bearing Plate,,,,,Stores - WP,,,,,,,,,,Eagle Hardware,,,,,,,,,,,,,,,,,,
"","Base Plate","Base Plate","Raw Material","Nos","3/4 in. x 2 ft. x 4 ft. Pine Plywood","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Base Plate","","","","","Stores - WP","","","","","","","","","","HomeBase","","","","","","","","","","","","","","","","","","" ,Base Plate,Base Plate,Raw Material,Nos,3/4 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Base Plate,,,,,Stores - WP,,,,,,,,,,HomeBase,,,,,,,,,,,,,,,,,,
"","Bearing Assembly","Bearing Assembly","Sub Assemblies","Nos","Bearing Assembly","Yes","No","No","No","No","Yes","No","No","No","Yes","Yes","No","","Bearing Assembly","","","","","Stores - WP","","",0.0,"","","","","","","Asiatic Solutions","","","","","","","","","","","BOM/Bearing Assembly/001","","","","","","","" ,Bearing Assembly,Bearing Assembly,Sub Assemblies,Nos,Bearing Assembly,Yes,No,No,No,No,Yes,No,No,No,Yes,Yes,No,,Bearing Assembly,,,,,Stores - WP,,,0.0,,,,,,,Asiatic Solutions,,,,,,,,,,,,,,,,,,
"","Bearing Block","Bearing Block","Raw Material","Nos","CAST IRON, MCMASTER PART NO. 3710T13","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Bearing Block","","","","","Stores - WP","","","","","","","","","","Nan Duskin","","","","","","","","","","","","","","","","","","" ,Bearing Block,Bearing Block,Raw Material,Nos,"CAST IRON, MCMASTER PART NO. 3710T13",Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Block,,,,,Stores - WP,,,,,,,,,,Nan Duskin,,,,,,,,,,,,,,,,,,
"","Bearing Collar","Bearing Collar","Raw Material","Nos","1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Bearing Collar","","","","","Stores - WP","","","","","","","","","","Eagle Hardware","","","","","","","","","","","","","","","","","","" ,Bearing Collar,Bearing Collar,Raw Material,Nos,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Collar,,,,,Stores - WP,,,,,,,,,,Eagle Hardware,,,,,,,,,,,,,,,,,,
"","Bearing Pipe","Bearing Pipe","Raw Material","Nos","1.5 in. Diameter x 36 in. Mild Steel Tubing","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Bearing Pipe","","","","","Stores - WP","","","","","","","","","","HomeBase","","","","","","","","","","","","","","","","","","" ,Bearing Pipe,Bearing Pipe,Raw Material,Nos,1.5 in. Diameter x 36 in. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Bearing Pipe,,,,,Stores - WP,,,,,,,,,,HomeBase,,,,,,,,,,,,,,,,,,
"","Blade Rib","Blade Rib","Raw Material","Nos","1/2 in. x 2 ft. x 4 ft. Pine Plywood","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Blade Rib","","","","","Stores - WP","","","","","","","","","","Ks Merchandise","","","","","","","","","","","","","","","","","","" ,Blade Rib,Blade Rib,Raw Material,Nos,1/2 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Blade Rib,,,,,Stores - WP,,,,,,,,,,Ks Merchandise,,,,,,,,,,,,,,,,,,
"","Disc Collars","Disc Collars","Raw Material","Nos","For Upper Bearing","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Disc Collars","","","","","Stores - WP","","","","","","","","","","Asiatic Solutions","","","","","","","","","","","","","","","","","","" ,Disc Collars,Disc Collars,Raw Material,Nos,For Upper Bearing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Disc Collars,,,,,Stores - WP,,,,,,,,,,Asiatic Solutions,,,,,,,,,,,,,,,,,,
"","External Disc","External Disc","Raw Material","Nos","15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","External Disc","","","","","Stores - WP","","","","","","","","","","HomeBase","","","","","","","","","","","","","","","","","","" ,External Disc,External Disc,Raw Material,Nos,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,External Disc,,,,,Stores - WP,,,,,,,,,,HomeBase,,,,,,,,,,,,,,,,,,
"","Internal Disc","Internal Disc","Raw Material","Nos","For Bearing Collar","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Internal Disc","","","","","Stores - WP","","","","","","","","","","HomeBase","","","","","","","","","","","","","","","","","","" ,Internal Disc,Internal Disc,Raw Material,Nos,For Bearing Collar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Internal Disc,,,,,Stores - WP,,,,,,,,,,HomeBase,,,,,,,,,,,,,,,,,,
"","Shaft","Shaft","Raw Material","Nos","1.25 in. Diameter x 6 ft. Mild Steel Tubing","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Shaft","","","","","Stores - WP","","","","","","","","","","Eagle Hardware","","","","","","","","","","","","","","","","","","" ,Shaft,Shaft,Raw Material,Nos,1.25 in. Diameter x 6 ft. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Shaft,,,,,Stores - WP,,,,,,,,,,Eagle Hardware,,,,,,,,,,,,,,,,,,
"","Stand","Stand","Raw Material","Nos","N/A","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Stand","","","","","Stores - WP","","","","","","","","","","Scott Ties","","","","","","","","","","","","","","","","","","" ,Stand,Stand,Raw Material,Nos,N/A,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Stand,,,,,Stores - WP,,,,,,,,,,Scott Ties,,,,,,,,,,,,,,,,,,
"","Upper Bearing Plate","Upper Bearing Plate","Raw Material","Nos","3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Upper Bearing Plate","","","","","Stores - WP","","","","","","","","","","Eagle Hardware","","","","","","","","","","","","","","","","","","" ,Upper Bearing Plate,Upper Bearing Plate,Raw Material,Nos,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Upper Bearing Plate,,,,,Stores - WP,,,,,,,,,,Eagle Hardware,,,,,,,,,,,,,,,,,,
"","Wind Mill A Series","Wind Mill A Series","Products","Nos","Wind Mill A Series for Home Use 9ft","Yes","No","No","Yes","Yes","Yes","Yes","No","No","Yes","Yes","No","","Wind Mill A Series","","","","","Finished Goods - WP","","","","","","","","","","","","","","","","","","","","","BOM/Wind Mill A Series/001","","","","","","","" ,Wind Mill A Series,Wind Mill A Series,Products,Nos,Wind Mill A Series for Home Use 9ft,Yes,No,No,Yes,Yes,Yes,Yes,No,No,Yes,Yes,No,,Wind Mill A Series,,,,,Finished Goods - WP,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"","Wind MIll C Series","Wind MIll C Series","Products","Nos","Wind Mill C Series for Commercial Use 18ft","Yes","No","No","Yes","Yes","Yes","Yes","No","No","Yes","Yes","No","","Wind MIll C Series","","","","","Finished Goods - WP","","","","","","","","","","","","","","","","","","","","","BOM/Wind MIll C Series/001","","","","","","","" ,Wind MIll C Series,Wind MIll C Series,Products,Nos,Wind Mill C Series for Commercial Use 18ft,Yes,No,No,Yes,Yes,Yes,Yes,No,No,Yes,Yes,No,,Wind MIll C Series,,,,,Finished Goods - WP,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"","Wind Turbine","Wind Turbine","Products","Nos","Small Wind Turbine for Home Use","Yes","No","No","No","Yes","Yes","Yes","No","No","Yes","Yes","No","","Wind Turbine","","","","","Finished Goods - WP","","","","","","","","","","","","","","","","","","","","","BOM/Wind Turbine/001","","","","","","","" ,Wind Turbine,Wind Turbine,Products,Nos,Small Wind Turbine for Home Use,Yes,No,No,No,Yes,Yes,Yes,No,No,Yes,Yes,No,,Wind Turbine,,,,,Finished Goods - WP,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"","Wing Sheet","Wing Sheet","Raw Material","Nos","1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet","Yes","No","No","No","Yes","Yes","Yes","No","No","No","No","No","","Wing Sheet","","","","","Stores - WP","","","","","","","","","","New World Realty","","","","","","","","","","","","","","","","","","" ,Wing Sheet,Wing Sheet,Raw Material,Nos,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,No,,Wing Sheet,,,,,Stores - WP,,,,,,,,,,New World Realty,,,,,,,,,,,,,,,,,,
Can't render this file because it has a wrong number of fields in line 2.

View File

@ -14,7 +14,7 @@ You can only upload upto 5000 records in one go. (may be less in some cases),,,,
"If you are updating, please select ""Overwrite"" else existing rows will not be deleted.",,,,, "If you are updating, please select ""Overwrite"" else existing rows will not be deleted.",,,,,
,,,,, ,,,,,
Column Labels,ID,Price List Name,Valid for Buying or Selling?,Ref Rate,Currency Column Labels,ID,Price List Name,Valid for Buying or Selling?,Ref Rate,Currency
Column Name:,parent,price_list_name,buying_or_selling,ref_rate,ref_currency Column Name:,parent,price_list,buying_or_selling,ref_rate,ref_currency
Mandatory:,Yes,Yes,Yes,No,No Mandatory:,Yes,Yes,Yes,No,No
Type:,Data (text),Link,Select,Currency,Link Type:,Data (text),Link,Select,Currency,Link
Info:,,Valid Price List,"One of: Buying, Selling",,Valid Currency Info:,,Valid Price List,"One of: Buying, Selling",,Valid Currency

1 Data Import Template
14 If you are updating, please select "Overwrite" else existing rows will not be deleted.
15
16 Column Labels ID Price List Name Valid for Buying or Selling? Ref Rate Currency
17 Column Name: parent price_list_name price_list buying_or_selling ref_rate ref_currency
18 Mandatory: Yes Yes Yes No No
19 Type: Data (text) Link Select Currency Link
20 Info: Valid Price List One of: Buying, Selling Valid Currency

View File

@ -5,6 +5,7 @@ import webnotes, os, datetime
import webnotes.utils import webnotes.utils
from webnotes.widgets import query_report from webnotes.widgets import query_report
import random import random
import json
webnotes.session = webnotes._dict({"user":"Administrator"}) webnotes.session = webnotes._dict({"user":"Administrator"})
from core.page.data_import_tool.data_import_tool import upload from core.page.data_import_tool.data_import_tool import upload
@ -14,10 +15,10 @@ from core.page.data_import_tool.data_import_tool import upload
company = "Wind Power LLC" company = "Wind Power LLC"
start_date = '2010-01-01' start_date = '2010-01-01'
runs_for = 100 runs_for = 20
prob = { prob = {
"Quotation": { "make": 0.5, "qty": (1,3) }, "Quotation": { "make": 0.5, "qty": (1,5) },
"Sales Order": { "make": 0.5, "qty": (1,2) }, "Sales Order": { "make": 0.5, "qty": (1,4) },
"Supplier Quotation": { "make": 0.5, "qty": (1, 3) } "Supplier Quotation": { "make": 0.5, "qty": (1, 3) }
} }
@ -25,15 +26,15 @@ def make():
webnotes.connect() webnotes.connect()
webnotes.print_messages = True webnotes.print_messages = True
webnotes.mute_emails = True webnotes.mute_emails = True
# setup() #setup()
simulate() simulate()
def setup(): def setup():
install() install()
complete_setup() complete_setup()
make_items()
make_customers_suppliers_contacts() make_customers_suppliers_contacts()
make_items()
make_users_and_employees() make_users_and_employees()
# make_opening_stock() # make_opening_stock()
# make_opening_accounts() # make_opening_accounts()
@ -67,6 +68,7 @@ def run_sales(current_date):
make_sales_order(current_date) make_sales_order(current_date)
def run_stock(current_date): def run_stock(current_date):
pass
# make purchase requests # make purchase requests
# make delivery notes (if possible) # make delivery notes (if possible)
@ -79,24 +81,24 @@ def run_purchase(current_date):
from stock.doctype.material_request.material_request import make_supplier_quotation from stock.doctype.material_request.material_request import make_supplier_quotation
report = "Material Requests for which Supplier Quotations are not created" report = "Material Requests for which Supplier Quotations are not created"
for row in query_report.run(report)["result"][:how_many("Supplier Quotation")]: for row in query_report.run(report)["result"][:how_many("Supplier Quotation")]:
sq = webnotes.bean(make_supplier_quotation(row[0])) if row[0] != "Total":
sq.doc.transaction_date = current_date sq = webnotes.bean(make_supplier_quotation(row[0]))
sq.doc.fiscal_year = "2010" sq.doc.transaction_date = current_date
po.doc.price_list = "Standard Buying" sq.doc.fiscal_year = "2010"
sq.insert() sq.insert()
sq.submit() sq.submit()
# make purchase orders # make purchase orders
if can_make("Purchase Order"): if can_make("Purchase Order"):
from stock.doctype.material_request.material_request import make_purchase_order from stock.doctype.material_request.material_request import make_purchase_order
report = "Requested Items To Be Ordered" report = "Requested Items To Be Ordered"
for row in query_report.run(report)["result"][:how_many("Purchase Order")]: for row in query_report.run(report)["result"][:how_many("Purchase Order")]:
po = webnotes.bean(make_purchase_order(row[0])) if row[0] != "Total":
po.doc.transaction_date = current_date po = webnotes.bean(make_purchase_order(row[0]))
po.doc.fiscal_year = "2010" po.doc.transaction_date = current_date
po.doc.price_list = "Standard Buying" po.doc.fiscal_year = "2010"
po.insert() po.insert()
po.submit() po.submit()
def run_manufacturing(current_date): def run_manufacturing(current_date):
ppt = webnotes.bean("Production Planning Tool", "Production Planning Tool") ppt = webnotes.bean("Production Planning Tool", "Production Planning Tool")
@ -126,7 +128,6 @@ def make_quotation(current_date):
"quotation_to": "Customer", "quotation_to": "Customer",
"customer": get_random("Customer"), "customer": get_random("Customer"),
"order_type": "Sales", "order_type": "Sales",
"price_list_name": "Standard Selling",
"transaction_date": current_date, "transaction_date": current_date,
"fiscal_year": "2010" "fiscal_year": "2010"
}]) }])
@ -144,12 +145,13 @@ def make_quotation(current_date):
def make_sales_order(current_date): def make_sales_order(current_date):
q = get_random("Quotation", {"status": "Submitted"}) q = get_random("Quotation", {"status": "Submitted"})
from selling.doctype.quotation.quotation import make_sales_order if q:
so = webnotes.bean(make_sales_order(q)) from selling.doctype.quotation.quotation import make_sales_order
so.doc.transaction_date = current_date so = webnotes.bean(make_sales_order(q))
so.doc.delivery_date = webnotes.utils.add_days(current_date, 10) so.doc.transaction_date = current_date
so.insert() so.doc.delivery_date = webnotes.utils.add_days(current_date, 10)
so.submit() so.insert()
so.submit()
def add_random_children(bean, template, rows, randomize, unique=None): def add_random_children(bean, template, rows, randomize, unique=None):
for i in xrange(random.randrange(1, rows)): for i in xrange(random.randrange(1, rows)):
@ -177,9 +179,9 @@ def get_random(doctype, filters=None):
condition = "" condition = ""
out = webnotes.conn.sql("""select name from `tab%s` %s out = webnotes.conn.sql("""select name from `tab%s` %s
order by RAND() limit 0,1""" % (doctype, condition))[0][0] order by RAND() limit 0,1""" % (doctype, condition))
return out return out and out[0][0] or None
def can_make(doctype): def can_make(doctype):
return random.random() < prob.get(doctype, {"make": 0.5})["make"] return random.random() < prob.get(doctype, {"make": 0.5})["make"]
@ -210,7 +212,8 @@ def complete_setup():
import_data("Fiscal_Year") import_data("Fiscal_Year")
def make_items(): def make_items():
import_data(["Item", "Item_Price", "BOM"]) import_data(["Item", "Item_Price"])
import_data("BOM", submit=True)
def make_customers_suppliers_contacts(): def make_customers_suppliers_contacts():
import_data(["Customer", "Supplier", "Contact", "Address", "Lead"]) import_data(["Customer", "Supplier", "Contact", "Address", "Lead"])
@ -221,12 +224,15 @@ def make_users_and_employees():
import_data(["Profile", "Employee", "Salary_Structure"]) import_data(["Profile", "Employee", "Salary_Structure"])
def import_data(dt): def import_data(dt, submit=False):
if not isinstance(dt, (tuple, list)): if not isinstance(dt, (tuple, list)):
dt = [dt] dt = [dt]
for doctype in dt: for doctype in dt:
print "Importing", doctype.replace("_", " "), "..." print "Importing", doctype.replace("_", " "), "..."
webnotes.form_dict = {}
if submit:
webnotes.form_dict["params"] = json.dumps({"_submit": 1})
webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv") webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv")
upload() upload()

View File

@ -476,8 +476,8 @@ def validate_currency(args, item, meta=None):
webnotes._dict({"fields": args}))) webnotes._dict({"fields": args})))
# validate price list conversion rate # validate price list conversion rate
if meta.get_field("price_list_currency") and args.price_list_name and \ if meta.get_field("price_list_currency") and (args.selling_price_list or args.buying_price_list) \
args.price_list_currency: and args.price_list_currency:
validate_conversion_rate(args.price_list_currency, args.plc_conversion_rate, validate_conversion_rate(args.price_list_currency, args.plc_conversion_rate,
meta.get_label("plc_conversion_rate"), args.company) meta.get_label("plc_conversion_rate"), args.company)

View File

@ -297,7 +297,7 @@ def apply_cart_settings(party=None, quotation=None):
def set_price_list_and_rate(quotation, cart_settings, billing_territory): def set_price_list_and_rate(quotation, cart_settings, billing_territory):
"""set price list based on billing territory""" """set price list based on billing territory"""
quotation.doc.price_list_name = cart_settings.get_price_list(billing_territory) quotation.doc.selling_price_list = cart_settings.get_price_list(billing_territory)
# reset values # reset values
quotation.doc.price_list_currency = quotation.doc.currency = \ quotation.doc.price_list_currency = quotation.doc.currency = \
@ -309,7 +309,7 @@ def set_price_list_and_rate(quotation, cart_settings, billing_territory):
quotation.run_method("set_price_list_and_item_details") quotation.run_method("set_price_list_and_item_details")
# set it in cookies for using in product page # set it in cookies for using in product page
webnotes.cookies[b"price_list_name"] = quotation.doc.price_list_name webnotes.cookies[b"selling_price_list"] = quotation.doc.selling_price_list
def set_taxes(quotation, cart_settings, billing_territory): def set_taxes(quotation, cart_settings, billing_territory):
"""set taxes based on billing territory""" """set taxes based on billing territory"""

View File

@ -16,7 +16,7 @@ def get_product_info(item_code):
cart_quotation = _get_cart_quotation() cart_quotation = _get_cart_quotation()
price_list = webnotes.cookies.get("price_list_name").value price_list = webnotes.cookies.get("selling_price_list").value
warehouse = webnotes.conn.get_value("Item", item_code, "website_warehouse") warehouse = webnotes.conn.get_value("Item", item_code, "website_warehouse")
if warehouse: if warehouse:
@ -28,7 +28,7 @@ def get_product_info(item_code):
in_stock = -1 in_stock = -1
price = price_list and webnotes.conn.sql("""select ref_rate, ref_currency from price = price_list and webnotes.conn.sql("""select ref_rate, ref_currency from
`tabItem Price` where parent=%s and price_list_name=%s""", `tabItem Price` where parent=%s and price_list=%s""",
(item_code, price_list), as_dict=1) or [] (item_code, price_list), as_dict=1) or []
price = price and price[0] or None price = price and price[0] or None