Set your outgoing mail settings here. All system generated notifications, emails will go from this mail server
'
- },
-
- # DocField
- {
+ 'colour': u'White:FFF',
+ 'description': u'SMTP Server (e.g. smtp.gmail.com)',
'doctype': u'DocField',
'fieldname': u'outgoing_mail_server',
'fieldtype': u'Data',
'label': u'Outgoing Mail Server'
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'mail_port',
- 'fieldtype': u'Int',
- 'label': u'Mail Port'
- },
-
# DocField
{
'doctype': u'DocField',
@@ -111,6 +99,25 @@
# DocField
{
+ 'colour': u'White:FFF',
+ 'description': u'If non standard port (e.g. 587)',
+ 'doctype': u'DocField',
+ 'fieldname': u'mail_port',
+ 'fieldtype': u'Int',
+ 'label': u'Mail Port'
+ },
+
+ # DocField
+ {
+ 'doctype': u'DocField',
+ 'fieldname': u'cb0',
+ 'fieldtype': u'Column Break'
+ },
+
+ # DocField
+ {
+ 'colour': u'White:FFF',
+ 'description': u'Set Login and Password if authentication is required.',
'doctype': u'DocField',
'fieldname': u'mail_login',
'fieldtype': u'Data',
@@ -127,6 +134,8 @@
# DocField
{
+ 'colour': u'White:FFF',
+ 'description': u'System generated mails will be sent from this email id.',
'doctype': u'DocField',
'fieldname': u'auto_email_id',
'fieldtype': u'Data',
@@ -144,19 +153,12 @@
# DocField
{
- 'doctype': u'DocField',
- 'fieldname': u'html2',
- 'fieldtype': u'HTML',
- 'label': u'2',
- 'options': u'To automatically create Support Tickets from your incoming mail, set your pop3 settings here.
'
- },
-
- # DocField
- {
+ 'colour': u'White:FFF',
+ 'description': u'To automatically create Support Tickets from your incoming mail, set your POP3 settings here. You must ideally create a separate email id for the erp system so that all emails will be synced into the system from that mail id. If you are not sure, please contact your EMail Provider.',
'doctype': u'DocField',
'fieldname': u'section_break0',
'fieldtype': u'Section Break',
- 'options': u'Simple'
+ 'label': u'Incoming Mail Setting'
},
# DocField
@@ -216,7 +218,7 @@
# DocField
{
'doctype': u'DocField',
- 'fieldname': u'column_break0',
+ 'fieldname': u'cb1',
'fieldtype': u'Column Break'
},
diff --git a/erpnext/setup/doctype/features_setup/__init__.py b/erpnext/setup/doctype/features_setup/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/setup/doctype/features_setup/__init__.py
+++ b/erpnext/setup/doctype/features_setup/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/features_setup/features_setup.py b/erpnext/setup/doctype/features_setup/features_setup.py
index e26ca47b350..50b253585cf 100644
--- a/erpnext/setup/doctype/features_setup/features_setup.py
+++ b/erpnext/setup/doctype/features_setup/features_setup.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see \nWrite the list of series options in the list below. Each on a new line
\nAllowed special characters are "/" and "-"
\nExamples:
\nINV-
\nINV-10-
\nINVK-
\n
'
+ 'options': u'\nEdit list of Series in the box below. Each Series Prefix on a new line.
\nAllowed special characters are "/" and "-"
\nExamples:
\nINV-
\nINV-10-
\nINVK-
\n
'
},
# DocField
@@ -131,7 +131,7 @@
'doctype': u'DocField',
'fieldname': u'set_options',
'fieldtype': u'Text',
- 'label': u'Set Series'
+ 'label': u'Series List for this Transaction'
},
# DocField
@@ -146,16 +146,17 @@
# DocField
{
+ 'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'update',
'fieldtype': u'Button',
- 'label': u'Update',
- 'options': u'update_series'
+ 'label': u'Update'
},
# DocField
{
- 'description': u'Set starting number for series of your transactions',
+ 'colour': u'White:FFF',
+ 'description': u'Change the starting / current sequence number of an existing series.',
'doctype': u'DocField',
'fieldname': u'update_series',
'fieldtype': u'Section Break',
@@ -166,24 +167,27 @@
{
'doctype': u'DocField',
'fieldname': u'prefix',
- 'fieldtype': u'Data',
+ 'fieldtype': u'Select',
'label': u'Prefix'
},
# DocField
{
+ 'colour': u'White:FFF',
+ 'description': u'This is the number of the last created transaction with this prefix',
'doctype': u'DocField',
- 'fieldname': u'starts_from',
+ 'fieldname': u'current_value',
'fieldtype': u'Int',
- 'label': u'Starts From'
+ 'label': u'Current Value'
},
# DocField
{
+ 'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'update_series_start',
'fieldtype': u'Button',
- 'label': u'Update Series Start',
+ 'label': u'Update Series Number',
'options': u'update_series_start'
}
]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/naming_series_options/__init__.py b/erpnext/setup/doctype/naming_series_options/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/setup/doctype/naming_series_options/__init__.py
+++ b/erpnext/setup/doctype/naming_series_options/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/notification_control/__init__.py b/erpnext/setup/doctype/notification_control/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/setup/doctype/notification_control/__init__.py
+++ b/erpnext/setup/doctype/notification_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/notification_control/notification_control.py b/erpnext/setup/doctype/notification_control/notification_control.py
index 8602fe2ab1b..f8b0ee2ad5a 100644
--- a/erpnext/setup/doctype/notification_control/notification_control.py
+++ b/erpnext/setup/doctype/notification_control/notification_control.py
@@ -15,6 +15,7 @@
# along with this program. If not, see 1. Click on "Download Template" \
+ to download the template of all Items.
'
+ +'2. Update prices and Currency.
'
+ +'3. Save it as a CSV (.csv) file.
'
+ +'4. Upload the file.
');
+
+ cur_frm.add_custom_button('Download Template', function() {
+ $c_obj_csv(cur_frm.get_doclist(), 'download_template');
+ }, 'icon-download')
+
+ cur_frm.add_custom_button('Upload Price List', function() {
+ cur_frm.attachments.add_attachment();
+ }, 'icon-upload')
+
-cur_frm.cscript.clear_prices = function(doc, cdt, cdn) {
- if(confirm("This action will clear all rates for '"+ doc.name +"' from the Item Master and cannot be un-done. Are you sure you want to continue?")) {
- $c_obj(make_doclist(doc.doctype, doc.name), 'clear_prices', '', function(r, rt) { });
+ } else {
+ cur_frm.set_intro('To update prices from the attachment, click on "Update Prices". \
+ To reset prices, delete the attachment (in the sidebar) and upload again.');
+
+ // Update Prices
+ cur_frm.add_custom_button('Update Prices', function() {
+ cur_frm.call_server('update_prices');
+ }, 'icon-refresh')
}
}
diff --git a/erpnext/setup/doctype/price_list/price_list.py b/erpnext/setup/doctype/price_list/price_list.py
index 73ec12b216c..fed2768fd1d 100644
--- a/erpnext/setup/doctype/price_list/price_list.py
+++ b/erpnext/setup/doctype/price_list/price_list.py
@@ -14,23 +14,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
Email and Notifications
diff --git a/erpnext/setup/page/webforms/__init__.py b/erpnext/setup/page/webforms/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/setup/page/webforms/__init__.py
+++ b/erpnext/setup/page/webforms/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/startup/__init__.py b/erpnext/startup/__init__.py
index cd443a082c1..c763d9c0544 100644
--- a/erpnext/startup/__init__.py
+++ b/erpnext/startup/__init__.py
@@ -14,6 +14,15 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+# default settings that can be made for a profile.
+from __future__ import unicode_literals
+
+product_name = "ERPNext"
+profile_defaults = {
+ "Company": "company",
+ "Territory": "territory"
+}
+
# add startup propertes
mail_footer = """
"""
@@ -24,4 +33,4 @@ def get_monthly_bulk_mail_limit():
if webnotes.conn.get_value('Email Settings', None, 'outgoing_mail_server'):
return 999999
else:
- return 500
\ No newline at end of file
+ return 500
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 0c5eae18921..ffbf11373b0 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint
import home
@@ -40,8 +41,9 @@ def on_login_post_session(login_manager):
if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com'):
# create feed
from webnotes.utils import nowtime
+ from webnotes.profile import get_user_fullname
home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
- '%s logged in at %s' % (login_manager.user_fullname, nowtime()),
+ '%s logged in at %s' % (get_user_fullname, nowtime()),
login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
@@ -85,7 +87,7 @@ def boot_session(bootinfo):
# load subscription info
import conf
- for key in ['max_users', 'expires_on', 'max_space', 'status']:
+ for key in ['max_users', 'expires_on', 'max_space', 'status', 'developer_mode']:
if hasattr(conf, key): bootinfo[key] = getattr(conf, key)
company = webnotes.conn.sql("select name, default_currency from `tabCompany`", as_dict=1)
@@ -94,7 +96,7 @@ def boot_session(bootinfo):
company_dict.setdefault(c['name'], {}).update(c)
bootinfo['company'] = company_dict
-
+
def get_letter_heads():
"""load letter heads with startup"""
import webnotes
diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py
index aa23ade5216..38c2dd25c92 100644
--- a/erpnext/startup/report_data_map.py
+++ b/erpnext/startup/report_data_map.py
@@ -20,11 +20,16 @@ data_map = {
"company"],
"order_by": "lft"
},
+ "Cost Center": {
+ "columns": ["name", "parent_cost_center", "lft", "rgt", "debit_or_credit",
+ "company"],
+ "order_by": "lft"
+ },
"GL Entry": {
"columns": ["account", "posting_date", "cost_center", "debit", "credit", "is_opening",
- "company"],
+ "company", "voucher_type", "voucher_no", "remarks"],
"conditions": ["ifnull(is_cancelled, 'No')='No'"],
- "order_by": "posting_date"
+ "order_by": "posting_date, account"
},
"Company": {
"columns": ["name"],
@@ -32,6 +37,6 @@ data_map = {
},
"Fiscal Year": {
"columns": ["name", "year_start_date",
- "adddate(year_start_date, interval 1 year) as year_end_date"]
+ "adddate(adddate(year_start_date, interval 1 year), interval -1 day) as year_end_date"]
}
}
diff --git a/erpnext/startup/schedule_handlers.py b/erpnext/startup/schedule_handlers.py
index 2df7a5789d2..f3eb05a8245 100644
--- a/erpnext/startup/schedule_handlers.py
+++ b/erpnext/startup/schedule_handlers.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
"""will be called by scheduler"""
import webnotes
@@ -27,10 +28,6 @@ def execute_all():
# pull emails
from support.doctype.support_ticket import get_support_mails
run_fn(get_support_mails)
-
- # run recurring invoices
- from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
- run_fn(manage_recurring_invoices)
# bulk email
from webnotes.utils.email_lib.bulk import flush
@@ -41,6 +38,10 @@ def execute_daily():
from setup.doctype.email_digest.email_digest import send
run_fn(send)
+ # run recurring invoices
+ from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
+ run_fn(manage_recurring_invoices)
+
# send bulk emails
from webnotes.utils.email_lib.bulk import clear_outbox
run_fn(clear_outbox)
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 60104645b02..7fb48c12bf3 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -76,7 +76,7 @@ erpnext.startup.start = function() {
// complete registration
if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) {
- wn.require("js/complete_setup.js");
+ wn.require("js/app/complete_setup.js");
erpnext.complete_setup.show();
}
if(wn.boot.expires_on && in_list(user_roles, 'System Manager')) {
@@ -100,10 +100,6 @@ erpnext.startup.start = function() {
if(wn.control_panel.custom_startup_code)
eval(wn.control_panel.custom_startup_code);
}
-
-
- $('body').append('
')
}
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index f1714250066..7c2a0d4493b 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
install_docs = [
{"doctype":"Role", "role_name":"Material Manager", "name":"Material Manager"},
{"doctype":"Role", "role_name":"Material Master Manager", "name":"Material Master Manager"},
diff --git a/erpnext/stock/doctype/__init__.py b/erpnext/stock/doctype/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/__init__.py
+++ b/erpnext/stock/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/batch/__init__.py b/erpnext/stock/doctype/batch/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/batch/__init__.py
+++ b/erpnext/stock/doctype/batch/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/bin/__init__.py b/erpnext/stock/doctype/bin/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/bin/__init__.py
+++ b/erpnext/stock/doctype/bin/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index e413c028934..348ec13fc75 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/delivery_note/__init__.py b/erpnext/stock/doctype/delivery_note/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/delivery_note/__init__.py
+++ b/erpnext/stock/doctype/delivery_note/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 32315234bee..06f14d4acc7 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -196,51 +197,6 @@ class DocType(TransactionBase):
get_obj('DocType Mapper', 'Sales Order-Delivery Note', with_children = 1).validate_reference_value(self, self.doc.name)
- def validate_prevdoc_details(self):
- for d in getlist(self.doclist,'delivery_note_details'):
- prevdoc = d.prevdoc_doctype
- prevdoc_docname = d.prevdoc_docname
-
- if prevdoc_docname and prevdoc:
- # Validates Transaction Date of DN and previous doc (i.e. SO , PO, PR)
- trans_date = sql("select posting_date from `tab%s` where name = '%s'" %(prevdoc,prevdoc_docname))[0][0]
- if trans_date and getdate(self.doc.posting_date) < (trans_date):
- msgprint("Your Posting Date cannot be before "+cstr(prevdoc)+" Date.")
- raise Exception
- # Validates DN and previous doc details
- get_name = sql("select name from `tab%s` where name = '%s'" % (prevdoc, prevdoc_docname))
- name = get_name and get_name[0][0] or ''
- if name: #check for incorrect docname
- if prevdoc == 'Sales Order':
- dt = sql("select company, docstatus, customer, currency, sales_partner from `tab%s` where name = '%s'" % (prevdoc, name))
- cust_name = dt and dt[0][2] or ''
- if cust_name != self.doc.customer:
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " customer :" + cstr(cust_name) + " does not match with customer : " + cstr(self.doc.customer) + " of current document.")
- raise Exception, "Validation Error. "
- sal_partner = dt and dt[0][4] or ''
- if sal_partner != self.doc.sales_partner:
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " sales partner name :" + cstr(sal_partner) + " does not match with sales partner name : " + cstr(self.doc.sales_partner_name) + " of current document.")
- raise Exception, "Validation Error. "
- else:
- dt = sql("select company, docstatus, supplier, currency from `tab%s` where name = '%s'" % (prevdoc, name))
- supp_name = dt and dt[0][2] or ''
- company_name = dt and dt[0][0] or ''
- docstatus = dt and dt[0][1] or 0
- currency = dt and dt[0][3] or ''
- if (currency != self.doc.currency):
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " currency : "+ cstr(currency) + "does not match with Currency: " + cstr(self.doc.currency) + "of current document")
- raise Exception, "Validation Error."
- if (company_name != self.doc.company):
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " does not belong to the Company: " + cstr(self.doc.company_name))
- raise Exception, "Validation Error."
- if (docstatus != 1):
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " is not Submitted Document.")
- raise Exception, "Validation Error."
- else:
- msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " is not a valid " + cstr(prevdoc))
- raise Exception, "Validation Error."
-
-
def validate_for_items(self):
check_list, chk_dupl_itm = [], []
for d in getlist(self.doclist,'delivery_note_details'):
@@ -291,11 +247,22 @@ class DocType(TransactionBase):
set(self.doc, 'message', 'Items against your Order #%s have been delivered. Delivery #%s: ' % (self.doc.po_no, self.doc.name))
# Check for Approving Authority
get_obj('Authorization Control').validate_approving_authority(self.doc.doctype, self.doc.company, self.doc.grand_total, self)
+
+ # validate serial no for item table (non-sales-bom item) and packing list (sales-bom item)
sl_obj = get_obj("Stock Ledger")
+ sl_obj.validate_serial_no(self, 'delivery_note_details')
+ sl_obj.validate_serial_no_warehouse(self, 'delivery_note_details')
sl_obj.validate_serial_no(self, 'packing_details')
sl_obj.validate_serial_no_warehouse(self, 'packing_details')
+
+ # update delivery details in serial no
+ sl_obj.update_serial_record(self, 'delivery_note_details', is_submit = 1, is_incoming = 0)
sl_obj.update_serial_record(self, 'packing_details', is_submit = 1, is_incoming = 0)
+
+ # update delivered qty in sales order
get_obj("Sales Common").update_prevdoc_detail(1,self)
+
+ # create stock ledger entry
self.update_stock_ledger(update_stock = 1)
self.credit_limit()
@@ -331,10 +298,14 @@ class DocType(TransactionBase):
sales_com_obj = get_obj(dt = 'Sales Common')
sales_com_obj.check_stop_sales_order(self)
self.check_next_docstatus()
- get_obj('Stock Ledger').update_serial_record(self, 'packing_details', is_submit = 0, is_incoming = 0)
+
+ # remove delivery details from serial no
+ sl = get_obj('Stock Ledger')
+ sl.update_serial_record(self, 'delivery_note_details', is_submit = 0, is_incoming = 0)
+ sl.update_serial_record(self, 'packing_details', is_submit = 0, is_incoming = 0)
+
sales_com_obj.update_prevdoc_detail(0,self)
self.update_stock_ledger(update_stock = -1)
- # :::::: set DN status :::::::
set(self.doc, 'status', 'Cancelled')
self.cancel_packing_slips()
@@ -434,7 +405,7 @@ class DocType(TransactionBase):
def on_update(self):
self.doclist = get_obj('Sales Common').make_packing_list(self,'delivery_note_details')
- self.set_actual_qty()
- get_obj('Stock Ledger').scrub_serial_nos(self)
-
+ sl = get_obj('Stock Ledger')
+ sl.scrub_serial_nos(self)
+ sl.scrub_serial_nos(self, 'packing_details')
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.txt b/erpnext/stock/doctype/delivery_note/delivery_note.txt
index 7db951328be..2520c479922 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.txt
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-05-15 12:15:05',
+ 'creation': '2012-07-13 11:57:15',
'docstatus': 0,
- 'modified': '2012-05-18 18:06:26',
+ 'modified': '2012-07-16 16:24:46',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -58,68 +58,6 @@
'name': u'Delivery Note'
},
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material Master Manager',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material Manager',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 2,
- 'role': u'All'
- },
-
# DocField
{
'colour': u'White:FFF',
@@ -340,6 +278,7 @@
# DocField
{
'allow_on_submit': 1,
+ 'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'delivery_note_details',
'fieldtype': u'Table',
@@ -352,6 +291,16 @@
'print_hide': 0
},
+ # DocField
+ {
+ 'doctype': u'DocField',
+ 'fieldname': u'sales_bom_help',
+ 'fieldtype': u'HTML',
+ 'label': u'Sales BOM Help',
+ 'permlevel': 0,
+ 'print_hide': 1
+ },
+
# DocField
{
'doctype': u'DocField',
@@ -486,7 +435,7 @@
'description': u"Rate at which Price list currency is converted to company's base currency",
'doctype': u'DocField',
'fieldname': u'plc_conversion_rate',
- 'fieldtype': u'Currency',
+ 'fieldtype': u'Float',
'label': u'Price List Currency Conversion Rate',
'permlevel': 0,
'print_hide': 1,
@@ -525,7 +474,7 @@
'description': u"Rate at which customer's currency is converted to company's base currency",
'doctype': u'DocField',
'fieldname': u'conversion_rate',
- 'fieldtype': u'Currency',
+ 'fieldtype': u'Float',
'label': u'Conversion Rate',
'no_copy': 0,
'oldfieldname': u'conversion_rate',
@@ -1412,5 +1361,111 @@
'no_copy': 1,
'permlevel': 0,
'print_hide': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material Manager',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material Manager',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Sales User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Sales User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Accounts User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Accounts User'
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'match': u'customer_name',
+ 'permlevel': 0,
+ 'role': u'Customer'
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'permlevel': 2,
+ 'role': u'All',
+ 'write': 1
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/delivery_note_item/__init__.py b/erpnext/stock/doctype/delivery_note_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/delivery_note_item/__init__.py
+++ b/erpnext/stock/doctype/delivery_note_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/__init__.py b/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
+++ b/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt b/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
index 51001fc9a0f..db512c64c04 100644
--- a/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
+++ b/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-04-13 11:56:35',
+ 'creation': '2012-06-11 12:10:10',
'docstatus': 0,
- 'modified': '2012-05-09 12:55:23',
+ 'modified': '2012-07-10 12:05:31',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -111,7 +111,7 @@
'oldfieldname': u'warehouse',
'oldfieldtype': u'Link',
'options': u'Warehouse',
- 'permlevel': 1
+ 'permlevel': 0
},
# DocField
diff --git a/erpnext/stock/doctype/item/__init__.py b/erpnext/stock/doctype/item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item/__init__.py
+++ b/erpnext/stock/doctype/item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 572a790264c..0a255d1291b 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -35,8 +35,8 @@ cur_frm.cscript.refresh = function(doc) {
cur_frm.cscript.hide_website_fields = function(doc) {
var website_fields_list = ['page_name', 'website_image', 'web_short_description',
- 'web_long_description']
- if (cint(doc.show_in_website)) {
+ 'web_long_description'];
+ if (doc && cint(doc.show_in_website)) {
unhide_field(website_fields_list);
} else {
hide_field(website_fields_list);
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index c21b5522322..6a0f200698a 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -222,7 +223,7 @@ class DocType:
import website.utils
# if same name, do not repeat twice
- if self.doc.name == self.doc.item_name:
+ if self.doc.name == self.doc.item_name or not self.doc.item_name:
page_name = self.doc.name
else:
page_name = self.doc.name + " " + self.doc.item_name
diff --git a/erpnext/stock/doctype/item/item.txt b/erpnext/stock/doctype/item/item.txt
index d87f56d2f93..c624fc13798 100644
--- a/erpnext/stock/doctype/item/item.txt
+++ b/erpnext/stock/doctype/item/item.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-06-08 12:54:51',
+ 'creation': '2012-07-03 13:30:46',
'docstatus': 0,
- 'modified': '2012-07-04 11:10:51',
+ 'modified': '2012-07-11 09:57:42',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -196,7 +196,7 @@
# DocField
{
'colour': u'White:FFF',
- 'description': u'Classify your item in any one item group by clicking on the magnifying glass',
+ 'description': u'
Manage Item Groups',
'doctype': u'DocField',
'fieldname': u'item_group',
'fieldtype': u'Link',
@@ -209,17 +209,6 @@
'reqd': 1
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'ighelp',
- 'fieldtype': u'HTML',
- 'label': u'IGHelp',
- 'oldfieldtype': u'HTML',
- 'options': u'
To manage Item Groups, click here',
- 'permlevel': 0
- },
-
# DocField
{
'doctype': u'DocField',
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 43ace79fdbf..b48e2d27734 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import unittest
import webnotes
import copy
diff --git a/erpnext/stock/doctype/item_customer_detail/__init__.py b/erpnext/stock/doctype/item_customer_detail/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item_customer_detail/__init__.py
+++ b/erpnext/stock/doctype/item_customer_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_price/__init__.py b/erpnext/stock/doctype/item_price/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item_price/__init__.py
+++ b/erpnext/stock/doctype/item_price/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py b/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
+++ b/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_supplier/__init__.py b/erpnext/stock/doctype/item_supplier/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item_supplier/__init__.py
+++ b/erpnext/stock/doctype/item_supplier/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_tax/__init__.py b/erpnext/stock/doctype/item_tax/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/item_tax/__init__.py
+++ b/erpnext/stock/doctype/item_tax/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_item/__init__.py b/erpnext/stock/doctype/landed_cost_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/landed_cost_item/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_master/__init__.py b/erpnext/stock/doctype/landed_cost_master/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/landed_cost_master/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_master/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt b/erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt
index f84eafea100..7271b68d0b6 100644
--- a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt
+++ b/erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt
@@ -3,11 +3,11 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:36:34',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:36:34',
- 'modified_by': u'Administrator',
- 'owner': u'Administrator'
+ u'creation': '2012-07-03 13:29:45',
+ u'docstatus': 0,
+ u'modified': '2012-09-17 10:53:26',
+ u'modified_by': u'Administrator',
+ u'owner': u'Administrator'
},
# These values are common for all DocType
@@ -15,19 +15,19 @@
'_last_update': u'1309508838',
'autoname': u'field:title',
'colour': u'White:FFF',
- 'doctype': 'DocType',
+ u'doctype': u'DocType',
'document_type': u'Master',
'module': u'Stock',
- 'name': '__common__',
+ u'name': u'__common__',
'section_style': u'Simple',
'server_code_error': u' ',
- 'version': 2
+ 'version': 1
},
# These values are common for all DocField
{
- 'doctype': u'DocField',
- 'name': '__common__',
+ u'doctype': u'DocField',
+ u'name': u'__common__',
'parent': u'Landed Cost Master',
'parentfield': u'fields',
'parenttype': u'DocType'
@@ -35,8 +35,8 @@
# These values are common for all DocPerm
{
- 'doctype': u'DocPerm',
- 'name': '__common__',
+ u'doctype': u'DocPerm',
+ u'name': u'__common__',
'parent': u'Landed Cost Master',
'parentfield': u'permissions',
'parenttype': u'DocType',
@@ -45,75 +45,13 @@
# DocType, Landed Cost Master
{
- 'doctype': 'DocType',
- 'name': u'Landed Cost Master'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'All'
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'System Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'System Manager'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase Manager'
+ u'doctype': u'DocType',
+ u'name': u'Landed Cost Master'
},
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'trash_reason',
'fieldtype': u'Small Text',
'label': u'Trash Reason',
@@ -124,7 +62,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'title',
'fieldtype': u'Data',
'label': u'Title',
@@ -135,7 +73,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'landed_cost_details',
'fieldtype': u'Section Break',
'label': u'Landed Cost Items',
@@ -145,7 +83,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'landed_cost',
'fieldtype': u'Table',
'label': u'Landed Cost',
@@ -153,5 +91,60 @@
'oldfieldtype': u'Table',
'options': u'Landed Cost Master Detail',
'permlevel': 0
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'System Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase User',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'All'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'System Manager'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase Manager'
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/landed_cost_master_detail/__init__.py b/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py b/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_wizard/__init__.py b/erpnext/stock/doctype/landed_cost_wizard/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_wizard/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
index f73845c80a6..6d235aef351 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
+++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, cstr, flt
from webnotes.model.doc import addchild, getchildren
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
index c8db02e6867..0b91c947642 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
+++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
@@ -3,11 +3,11 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:36:34',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:36:34',
- 'modified_by': u'Administrator',
- 'owner': u'wasim@webnotestech.com'
+ u'creation': '2012-07-03 13:29:45',
+ u'docstatus': 0,
+ u'modified': '2012-09-17 10:54:21',
+ u'modified_by': u'Administrator',
+ u'owner': u'wasim@webnotestech.com'
},
# These values are common for all DocType
@@ -15,20 +15,20 @@
'_last_update': u'1321441191',
'colour': u'White:FFF',
'default_print_format': u'Standard',
- 'doctype': 'DocType',
+ u'doctype': u'DocType',
'issingle': 1,
'module': u'Stock',
- 'name': '__common__',
+ u'name': u'__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 1,
- 'version': 35
+ 'version': 1
},
# These values are common for all DocField
{
- 'doctype': u'DocField',
- 'name': '__common__',
+ u'doctype': u'DocField',
+ u'name': u'__common__',
'parent': u'Landed Cost Wizard',
'parentfield': u'fields',
'parenttype': u'DocType',
@@ -37,8 +37,8 @@
# These values are common for all DocPerm
{
- 'doctype': u'DocPerm',
- 'name': '__common__',
+ u'doctype': u'DocPerm',
+ u'name': u'__common__',
'parent': u'Landed Cost Wizard',
'parentfield': u'permissions',
'parenttype': u'DocType',
@@ -47,79 +47,13 @@
# DocType, Landed Cost Wizard
{
- 'doctype': 'DocType',
- 'name': u'Landed Cost Wizard'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'All',
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase Manager',
- 'submit': 0,
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'System Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'System Manager'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase Manager'
+ u'doctype': u'DocType',
+ u'name': u'Landed Cost Wizard'
},
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'process',
'fieldtype': u'HTML',
'label': u'Process',
@@ -128,7 +62,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'section_break0',
'fieldtype': u'Section Break',
'options': u'Simple'
@@ -136,7 +70,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'from_pr_date',
'fieldtype': u'Date',
'label': u'From PR Date',
@@ -145,7 +79,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'to_pr_date',
'fieldtype': u'Date',
'label': u'To PR Date',
@@ -154,7 +88,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'currency',
'fieldtype': u'Select',
'label': u'Currency',
@@ -164,7 +98,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'get_purchase_receipt',
'fieldtype': u'Button',
'label': u'Get Purchase Receipt',
@@ -173,7 +107,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'lc_pr_details',
'fieldtype': u'Table',
'label': u'Landed Cost Purchase Receipts',
@@ -182,7 +116,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'section_break1',
'fieldtype': u'Section Break',
'options': u'Simple'
@@ -190,7 +124,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'landed_cost',
'fieldtype': u'Link',
'label': u'Select Landed Cost Items Master',
@@ -200,7 +134,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'get_details',
'fieldtype': u'Button',
'label': u'Get Details',
@@ -209,7 +143,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'landed_cost_details',
'fieldtype': u'Table',
'label': u'Landed Cost Items',
@@ -218,10 +152,68 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'update_pr',
'fieldtype': u'Button',
'label': u'Update PR',
'options': u'update_landed_cost'
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase Manager',
+ 'submit': 0,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'System Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase User',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'All'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'System Manager'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase Manager'
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/packing_slip/__init__.py b/erpnext/stock/doctype/packing_slip/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/packing_slip/__init__.py
+++ b/erpnext/stock/doctype/packing_slip/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py
index 74c80365687..9e544b62d8c 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.py
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt, cint
diff --git a/erpnext/stock/doctype/packing_slip_item/__init__.py b/erpnext/stock/doctype/packing_slip_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/packing_slip_item/__init__.py
+++ b/erpnext/stock/doctype/packing_slip_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py b/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
index 761c572683e..cfd57e79b55 100644
--- a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
+++ b/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import webnotes
class DocType:
diff --git a/erpnext/stock/doctype/purchase_receipt/__init__.py b/erpnext/stock/doctype/purchase_receipt/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/purchase_receipt/__init__.py
+++ b/erpnext/stock/doctype/purchase_receipt/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 807b3658a7c..2be671ed5a6 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
index ea50db25cf5..af6b4840133 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-05-10 12:42:13',
+ 'creation': '2012-06-11 12:10:11',
'docstatus': 0,
- 'modified': '2012-05-10 14:01:16',
+ 'modified': '2012-07-16 16:26:24',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -56,89 +56,6 @@
'name': u'Purchase Receipt'
},
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Material Manager',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material Manager',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Material User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'match': u'supplier',
- 'permlevel': 0,
- 'role': u'Supplier'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 2,
- 'role': u'All',
- 'write': 1
- },
-
# DocField
{
'colour': u'White:FFF',
@@ -449,7 +366,7 @@
'description': u"Rate at which supplier's currency is converted to company's base currency",
'doctype': u'DocField',
'fieldname': u'conversion_rate',
- 'fieldtype': u'Currency',
+ 'fieldtype': u'Float',
'label': u'Conversion Rate',
'oldfieldname': u'conversion_rate',
'oldfieldtype': u'Currency',
@@ -1183,5 +1100,88 @@
'no_copy': 1,
'permlevel': 0,
'print_hide': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material Manager',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material Manager',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase User'
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'match': u'supplier',
+ 'permlevel': 0,
+ 'role': u'Supplier'
+ },
+
+ # DocPerm
+ {
+ 'doctype': u'DocPerm',
+ 'permlevel': 2,
+ 'role': u'All',
+ 'write': 1
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/purchase_receipt_item/__init__.py b/erpnext/stock/doctype/purchase_receipt_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/purchase_receipt_item/__init__.py
+++ b/erpnext/stock/doctype/purchase_receipt_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py b/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
+++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
index 00319bdfee3..d8ff6046a14 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
+++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
index c5d4d6d5054..8bec19e38a3 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
+++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
@@ -3,34 +3,34 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:36:36',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:36:36',
- 'modified_by': u'Administrator',
- 'owner': u'wasim@webnotestech.com'
+ u'creation': '2012-07-03 13:29:45',
+ u'docstatus': 0,
+ u'modified': '2012-09-17 10:55:11',
+ u'modified_by': u'Administrator',
+ u'owner': u'wasim@webnotestech.com'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
- 'doctype': 'DocType',
+ u'doctype': u'DocType',
'is_transaction_doc': 0,
'issingle': 1,
'istable': 0,
'menu_index': 1,
'module': u'Stock',
- 'name': '__common__',
+ u'name': u'__common__',
'parent_node': u'Materials',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 1,
- 'version': 46
+ 'version': 1
},
# These values are common for all DocField
{
- 'doctype': u'DocField',
- 'name': '__common__',
+ u'doctype': u'DocField',
+ u'name': u'__common__',
'parent': u'Sales and Purchase Return Tool',
'parentfield': u'fields',
'parenttype': u'DocType'
@@ -38,8 +38,8 @@
# These values are common for all DocPerm
{
- 'doctype': u'DocPerm',
- 'name': '__common__',
+ u'doctype': u'DocPerm',
+ u'name': u'__common__',
'parent': u'Sales and Purchase Return Tool',
'parentfield': u'permissions',
'parenttype': u'DocType',
@@ -48,197 +48,13 @@
# DocType, Sales and Purchase Return Tool
{
- 'doctype': 'DocType',
- 'name': u'Sales and Purchase Return Tool'
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'All',
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'System Manager',
- 'submit': 0,
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'System Manager',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Accounts Manager'
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Accounts User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Accounts Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Accounts User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Sales User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Sales Manager'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase User'
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Purchase Manager'
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Material Manager',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material Manager',
- 'submit': 0,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Material User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material User',
- 'submit': 0,
- 'write': 1
+ u'doctype': u'DocType',
+ u'name': u'Sales and Purchase Return Tool'
},
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'return_date',
'fieldtype': u'Date',
'label': u'Return Date',
@@ -251,7 +67,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'return_type',
'fieldtype': u'Select',
'label': u'Return Type',
@@ -266,7 +82,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'delivery_note_no',
'fieldtype': u'Link',
'hidden': 1,
@@ -281,7 +97,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'sales_invoice_no',
'fieldtype': u'Link',
'hidden': 1,
@@ -292,7 +108,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'purchase_receipt_no',
'fieldtype': u'Link',
'hidden': 1,
@@ -306,7 +122,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'cust_supp',
'fieldtype': u'Data',
'hidden': 1,
@@ -317,7 +133,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'cust_supp_name',
'fieldtype': u'Data',
'hidden': 1,
@@ -328,7 +144,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'cust_supp_address',
'fieldtype': u'Small Text',
'hidden': 1,
@@ -340,7 +156,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'get_items',
'fieldtype': u'Button',
'hidden': 1,
@@ -352,7 +168,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'return_details',
'fieldtype': u'Table',
'hidden': 1,
@@ -366,7 +182,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'make_stock_entry',
'fieldtype': u'Button',
'hidden': 1,
@@ -378,7 +194,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'make_excise_invoice',
'fieldtype': u'Button',
'hidden': 1,
@@ -390,7 +206,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'make_credit_note',
'fieldtype': u'Button',
'hidden': 1,
@@ -402,7 +218,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'make_debit_note',
'fieldtype': u'Button',
'hidden': 1,
@@ -410,5 +226,180 @@
'oldfieldtype': u'Button',
'permlevel': 0,
'trigger': u'Client'
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Accounts Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'All'
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'System Manager',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Accounts Manager'
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Purchase User',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Sales Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Sales User',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Accounts User',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'System Manager',
+ 'submit': 0,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Accounts User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Sales User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Sales Manager'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Purchase Manager'
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material Manager',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material Manager',
+ 'submit': 0,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material User',
+ 'submit': 0,
+ 'write': 1
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/sales_bom/__init__.py b/erpnext/stock/doctype/sales_bom/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/sales_bom/__init__.py
+++ b/erpnext/stock/doctype/sales_bom/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.js b/erpnext/stock/doctype/sales_bom/sales_bom.js
index 275af6a85a9..b6ba77953fa 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.js
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.js
@@ -14,35 +14,26 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see
.
-
-
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-
- if(!doc.price_list) set_multiple(cdt,cdn,{price_list:sys_defaults.price_list_name});
-}
-
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
+ cur_frm.toggle_enable('new_item_code', doc.__islocal);
if(!doc.__islocal) {
- get_field(doc.doctype, 'new_item_code', doc.name).permlevel = 1;
+ cur_frm.add_custom_button("Check for Duplicates", function() {
+ cur_frm.call_server('check_duplicate', 1)
+ }, 'icon-search')
}
}
-/* Get Item Code */
+cur_frm.fields_dict.new_item_code.get_query = function() {
+ return 'select name, description from tabItem where is_stock_item="No" and is_sales_item="Yes"\
+ and name not in (select name from `tabSales BOM`)\
+ and `%(key)s` like "%s"'
+}
+cur_frm.fields_dict.new_item_code.query_description = 'Select Item where "Is Stock Item" is "No" \
+ and "Is Sales Item" is "Yes" and there is no other Sales BOM';
+
cur_frm.cscript.item_code = function(doc, dt, dn) {
- var d = locals[dt][dn];
- if (d.item_code){
- get_server_fields('get_item_details', d.item_code, 'sales_bom_items', doc ,dt, dn, 1);
- }
-}
-
-cur_frm.cscript.price_list = function(doc, cdt, cdn) {
- $c_obj(make_doclist(cdt,cdn), 'get_rates', '', function(r,rt){refresh_field('sales_bom_items');});
-}
-
-cur_frm.cscript.currency = function(doc, cdt, cdn) {
- $c_obj(make_doclist(cdt,cdn), 'get_rates', '', function(r,rt){refresh_field('sales_bom_items');});
-}
-
-cur_frm.cscript.find_sales_bom = function(doc, dt, dn) {
- $c_obj(make_doclist(dt,dn), 'check_duplicate', 1, '');
-}
+ var d = locals[dt][dn];
+ if (d.item_code){
+ get_server_fields('get_item_details', d.item_code, 'sales_bom_items', doc ,dt, dn, 1);
+ }
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.py b/erpnext/stock/doctype/sales_bom/sales_bom.py
index 03e1bd04e61..03479ebb95d 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.py
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.py
@@ -14,24 +14,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-
-# -----------------------------------------------------------------------------------------
-
+from webnotes.utils import flt
+from webnotes.model.utils import getlist
class DocType:
def __init__(self,d,dl):
@@ -40,139 +26,53 @@ class DocType:
def autoname(self):
self.doc.name = self.doc.new_item_code
- # Get Ref Rates
- # --------------
- def get_rates(self):
- for d in getlist(self.doclist, "sales_bom_items"):
- r = sql("select ref_rate from `tabItem Price` where price_list_name=%s and parent=%s and ref_currency = %s", (self.doc.price_list, d.item_code, self.doc.currency))
- d.rate = r and flt(r[0][0]) or 0.00
-
-
- # Get Item Details
- # -----------------
- def get_item_details(self, name):
- det = sql("select description, stock_uom from `tabItem` where name = '%s' " % cstr(name))
- rate = sql("select ref_rate from `tabItem Price` where price_list_name = %s and parent = %s and ref_currency = %s", (self.doc.price_list, name, self.doc.currency))
- return {'description' : det and det[0][0] or '', 'uom': det and det[0][1] or '', 'rate': rate and flt(rate[0][0]) or 0.00}
-
-
- def get_main_item(self):
- is_main_item = []
- for d in getlist(self.doclist,'sales_bom_items'):
- if d.is_main_item == 'Yes':
- is_main_item.append(d.item_code)
- # Check that Sales Bom Item cannot be child of Sales Bom.
- if d.item_code == self.doc.new_item_code:
- msgprint("Sales Bom Item " + d.new_item_code +" cannot be child item.")
- raise Exception
- if len(is_main_item) > 1:
- msgprint('Main item cannot be more than one.')
- raise Exception , " Validation Error."
- if len(is_main_item) == 0:
- msgprint("At least one item should be main item.")
- raise Exception , " Validation Error."
- return is_main_item[0]
-
-
- # Make Item
- # ---------
- def create_new_item(self):
- i = Document("Item")
- i.item_code = self.doc.new_item_code
- i.item_name = self.doc.new_item_name
- i.name = i.item_code
- i.is_sales_item = 'Yes'
- i.is_stock_item = 'No'
- i.save(1)
-
- # Update Rate
- def update_ref_rate(self, i):
- ref_rate = 0
- if self.doc.price_list:
- if not cstr(self.doc.currency):
- msgprint("Please enter Currency.")
- raise Exception
- for d in getlist(self.doclist, "sales_bom_items"):
- item_rate = sql("select ref_rate,ref_currency from `tabItem Price` where price_list_name=%s and parent=%s", (self.doc.price_list, d.item_code))
- ref_rate += flt(d.qty) * (item_rate and flt(item_rate[0][0]) or 0)
-
- if ref_rate:
- # clear old rates
- sql("delete from `tabItem Price` where parent=%s and price_list_name = %s", (i.name, self.doc.price_list))
-
- pld = addchild(i,"ref_rate_details", "Item Price")
- pld.price_list_name = self.doc.price_list
- pld.ref_rate = flt(ref_rate)
- pld.ref_currency = self.doc.currency
- pld.save()
-
- # Update Items
- # ------------
- def update_item(self):
- i = Document("Item", self.doc.new_item_code)
-
- # update fields
- i.brand = self.doc.new_item_brand
- i.stock_uom = self.doc.stock_uom
- i.item_group = self.doc.item_group
-
-
- i.item_name = self.doc.new_item_name
- i.description = self.doc.description
-
- # set default as 'No' or 0
- i.is_sample_item = 'No'
- i.is_asset_item = 'No'
- i.is_purchase_item = 'No'
- i.is_manufactured_item = 'No'
- i.is_sub_contracted_item = 'No'
- i.is_service_item = 'No'
- i.inspection_required = 'No'
- i.has_serial_no = 'No'
- i.lead_time_days = flt(0)
- # update rates
- self.update_ref_rate(i)
- i.save()
- msgprint("Items: %s updated successfully. To update more details open and edit item master" % self.doc.new_item_code)
-
-
def validate(self):
# check for duplicate
self.check_duplicate()
- item_code = self.get_main_item()
- if not self.doc.new_item_code:
- self.doc.new_item_code = make_autoname(item_code +'.###')
+ self.validate_main_item()
-
- def on_update(self):
- # if no item code, create new item code
- if not sql("select name from tabItem where name=%s", self.doc.new_item_code):
- self.create_new_item()
- self.update_item()
+ def validate_main_item(self):
+ """main item must have Is Stock Item as No and Is Sales Item as Yes"""
+ if not webnotes.conn.sql("""select name from tabItem where name=%s and
+ ifnull(is_stock_item,'')='No' and ifnull(is_sales_item,'')='Yes'""", self.doc.new_item_code):
+ webnotes.msgprint("""Parent Item %s is either a Stock Item or a not a Sales Item""",
+ raise_exception=1)
+ def get_item_details(self, name):
+ det = webnotes.conn.sql("""select description, stock_uom from `tabItem`
+ where name = %s""", name)
+ rate = webnotes.conn.sql("""select ref_rate from `tabItem Price`
+ where price_list_name = %s and parent = %s
+ and ref_currency = %s""", (self.doc.price_list, name, self.doc.currency))
+ return {
+ 'description' : det and det[0][0] or '',
+ 'uom': det and det[0][1] or '',
+ 'rate': rate and flt(rate[0][0]) or 0.00
+ }
def check_duplicate(self, finder=0):
il = getlist(self.doclist, "sales_bom_items")
if not il:
- msgprint("Add atleast one item")
+ webnotes.msgprint("Add atleast one item")
return
# get all Sales BOM that have the first item
- sbl = sql("select distinct parent from `tabSales BOM Item` where item_code=%s and parent != %s and docstatus != 2", (il[0].item_code, self.doc.name))
+ sbl = webnotes.conn.sql("""select distinct parent from `tabSales BOM Item` where item_code=%s
+ and parent != %s and docstatus != 2""", (il[0].item_code, self.doc.name))
# check all siblings
sub_items = [[d.item_code, flt(d.qty)] for d in il]
for s in sbl:
- t = sql("select item_code, qty from `tabSales BOM Item` where parent=%s and docstatus != 2", s[0])
+ t = webnotes.conn.sql("""select item_code, qty from `tabSales BOM Item` where parent=%s and
+ docstatus != 2""", s[0])
t = [[d[0], flt(d[1])] for d in t]
if self.has_same_items(sub_items, t):
- msgprint("%s has the same Sales BOM details" % s[0])
+ webnotes.msgprint("%s has the same Sales BOM details" % s[0])
raise Exception
if finder:
- msgprint("There is no Sales BOM present with the following Combination.")
-
+ webnotes.msgprint("There is no Sales BOM present with the following Combination.")
def has_same_items(self, l1, l2):
if len(l1)!=len(l2): return 0
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.txt b/erpnext/stock/doctype/sales_bom/sales_bom.txt
index 29fcd3142fb..74268215dd5 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.txt
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-04-30 12:08:49',
+ 'creation': '2012-07-03 13:30:44',
'docstatus': 0,
- 'modified': '2012-05-04 09:53:08',
+ 'modified': '2012-07-12 18:00:16',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -15,10 +15,10 @@
'_last_update': u'1322549701',
'allow_trash': 1,
'colour': u'White:FFF',
- 'description': u'Aggregate item and accessories to form a Sales Item. There is no inventory of the new item but of the sub-components.',
+ 'description': u'Aggregate group of **Items** into another **Item**. This is useful if you are bundling a certain **Items** into a package and you maintain stock of the packed **Items** and not the aggregate **Item**. \n\nThe package **Item** will have "Is Stock Item" as "No" and "Is Sales Item" as "Yes".\n\nFor Example: If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Sales BOM Item.\n\nNote: BOM = Bill of Materials',
'doctype': 'DocType',
'document_type': u'Master',
- 'is_submittable': 1,
+ 'is_submittable': 0,
'module': u'Stock',
'name': '__common__',
'section_style': u'Simple',
@@ -33,17 +33,20 @@
'name': '__common__',
'parent': u'Sales BOM',
'parentfield': u'fields',
- 'parenttype': u'DocType'
+ 'parenttype': u'DocType',
+ 'permlevel': 0
},
# These values are common for all DocPerm
{
+ 'amend': 0,
'doctype': u'DocPerm',
'name': '__common__',
'parent': u'Sales BOM',
'parentfield': u'permissions',
'parenttype': u'DocType',
- 'read': 1
+ 'read': 1,
+ 'submit': 0
},
# DocType, Sales BOM
@@ -54,73 +57,61 @@
# DocPerm
{
- 'amend': 0,
'cancel': 0,
- 'create': 0,
+ 'create': 1,
'doctype': u'DocPerm',
'permlevel': 1,
'role': u'Material Manager',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material Manager',
- 'submit': 1,
'write': 1
},
# DocPerm
{
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'Material User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Material User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
'cancel': 1,
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
- 'role': u'Sales User',
- 'submit': 0,
+ 'role': u'Material Manager',
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Material User',
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Material User',
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Sales User',
'write': 1
},
# DocPerm
{
- 'amend': 0,
'cancel': 0,
'create': 0,
'doctype': u'DocPerm',
'permlevel': 1,
'role': u'Sales User',
- 'submit': 0,
'write': 0
},
@@ -129,167 +120,32 @@
'doctype': u'DocField',
'fieldname': u'basic_section',
'fieldtype': u'Section Break',
- 'label': u'Basic Section',
- 'permlevel': 0
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'col1',
- 'fieldtype': u'Column Break',
- 'permlevel': 0,
- 'width': u'50%'
+ 'label': u'Sales BOM Item'
},
# DocField
{
'colour': u'White:FFF',
- 'description': u'Item code of the new aggregate item.',
+ 'description': u'The Item that represents the Package. This Item must have "Is Stock Item" as "No" and "Is Sales Item" as "Yes"',
'doctype': u'DocField',
'fieldname': u'new_item_code',
- 'fieldtype': u'Data',
- 'label': u'New Item Code',
+ 'fieldtype': u'Link',
+ 'label': u'Parent Item',
'no_copy': 1,
'oldfieldname': u'new_item_code',
'oldfieldtype': u'Data',
+ 'options': u'Item',
'reqd': 1
},
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
- 'fieldname': u'new_item_name',
- 'fieldtype': u'Data',
- 'label': u'New Item Name',
- 'oldfieldname': u'new_item_name',
- 'oldfieldtype': u'Data',
- 'permlevel': 0,
- 'reqd': 1
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'new_item_brand',
- 'fieldtype': u'Data',
- 'label': u'New Item Brand',
- 'oldfieldname': u'new_item_brand',
- 'oldfieldtype': u'Data',
- 'permlevel': 0
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'description',
- 'fieldtype': u'Text',
- 'label': u'New Description',
- 'oldfieldname': u'description',
- 'oldfieldtype': u'Text',
- 'permlevel': 0,
- 'reqd': 1,
- 'width': u'300px'
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'col2',
- 'fieldtype': u'Column Break',
- 'permlevel': 0,
- 'width': u'50%'
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'item_group',
- 'fieldtype': u'Link',
- 'label': u'Item Group',
- 'oldfieldname': u'item_group',
- 'oldfieldtype': u'Link',
- 'options': u'Item Group',
- 'permlevel': 0,
- 'reqd': 1
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'stock_uom',
- 'fieldtype': u'Link',
- 'label': u'Stock UOM',
- 'oldfieldname': u'stock_uom',
- 'oldfieldtype': u'Link',
- 'options': u'UOM',
- 'permlevel': 0,
- 'reqd': 1
- },
-
- # DocField
- {
- 'colour': u'White:FFF',
- 'doctype': u'DocField',
- 'fieldname': u'price_list',
- 'fieldtype': u'Select',
- 'label': u'Price List',
- 'oldfieldname': u'price_list',
- 'oldfieldtype': u'Select',
- 'options': u'link:Price List',
- 'permlevel': 0,
- 'trigger': u'Client'
- },
-
- # DocField
- {
- 'colour': u'White:FFF',
- 'doctype': u'DocField',
- 'fieldname': u'currency',
- 'fieldtype': u'Select',
- 'label': u'Currency',
- 'oldfieldname': u'currency',
- 'oldfieldtype': u'Select',
- 'options': u'link:Currency',
- 'permlevel': 0,
- 'trigger': u'Client'
- },
-
- # DocField
- {
- 'depends_on': u'eval:doc.amended_from',
- 'description': u'The date at which current entry is corrected in the system.',
- 'doctype': u'DocField',
- 'fieldname': u'amendment_date',
- 'fieldtype': u'Date',
- 'label': u'Amendment Date',
- 'no_copy': 1,
- 'permlevel': 1,
- 'print_hide': 1
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'amended_from',
- 'fieldtype': u'Link',
- 'label': u'Amended From',
- 'no_copy': 1,
- 'options': u'Sales BOM',
- 'permlevel': 1,
- 'print_hide': 1
- },
-
- # DocField
- {
- 'colour': u'White:FFF',
- 'description': u'List items that form a package. One of the items has to be a "main item".',
+ 'description': u'List items that form the package.',
'doctype': u'DocField',
'fieldname': u'item_section',
'fieldtype': u'Section Break',
- 'label': u'Items',
- 'permlevel': 0
+ 'label': u'Package Items'
},
# DocField
@@ -301,30 +157,6 @@
'oldfieldname': u'sales_bom_items',
'oldfieldtype': u'Table',
'options': u'Sales BOM Item',
- 'permlevel': 0
- },
-
- # DocField
- {
- 'colour': u'White:FFF',
- 'description': u'Add a few items and find if there are any Sales BOM created with the same combination to help you identify duplication.',
- 'doctype': u'DocField',
- 'fieldname': u'find_sales_bom',
- 'fieldtype': u'Button',
- 'label': u'Find Sales BOM',
- 'oldfieldtype': u'Button',
- 'permlevel': 0,
- 'trigger': u'Client'
- },
-
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'trash_reason',
- 'fieldtype': u'Small Text',
- 'label': u'Trash Reason',
- 'oldfieldname': u'trash_reason',
- 'oldfieldtype': u'Small Text',
- 'permlevel': 1
+ 'reqd': 1
}
]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/sales_bom_item/__init__.py b/erpnext/stock/doctype/sales_bom_item/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/sales_bom_item/__init__.py
+++ b/erpnext/stock/doctype/sales_bom_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt b/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
index 8cf93f5702d..76e3f26a9fe 100644
--- a/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
+++ b/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:36:37',
+ 'creation': '2012-07-03 13:30:46',
'docstatus': 0,
- 'modified': '2012-03-27 14:36:37',
+ 'modified': '2012-07-11 18:56:27',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -20,7 +20,7 @@
'section_style': u'Tray',
'server_code_error': u' ',
'show_in_menu': 0,
- 'version': 3
+ 'version': 1
},
# These values are common for all DocField
@@ -38,18 +38,6 @@
'name': u'Sales BOM Item'
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'is_main_item',
- 'fieldtype': u'Select',
- 'label': u'Is Main Item',
- 'oldfieldname': u'is_main_item',
- 'oldfieldtype': u'Select',
- 'options': u'\nYes\nNo',
- 'permlevel': 0
- },
-
# DocField
{
'doctype': u'DocField',
@@ -64,6 +52,18 @@
'trigger': u'Client'
},
+ # DocField
+ {
+ 'doctype': u'DocField',
+ 'fieldname': u'qty',
+ 'fieldtype': u'Currency',
+ 'label': u'Qty',
+ 'oldfieldname': u'qty',
+ 'oldfieldtype': u'Currency',
+ 'permlevel': 0,
+ 'reqd': 1
+ },
+
# DocField
{
'doctype': u'DocField',
@@ -87,18 +87,6 @@
'permlevel': 0
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'qty',
- 'fieldtype': u'Currency',
- 'label': u'Qty',
- 'oldfieldname': u'qty',
- 'oldfieldtype': u'Currency',
- 'permlevel': 0,
- 'reqd': 1
- },
-
# DocField
{
'doctype': u'DocField',
diff --git a/erpnext/stock/doctype/serial_no/__init__.py b/erpnext/stock/doctype/serial_no/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/serial_no/__init__.py
+++ b/erpnext/stock/doctype/serial_no/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index b6dd6900239..e811d738168 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, flt, cstr, getdate, nowdate
diff --git a/erpnext/stock/doctype/stock_entry/__init__.py b/erpnext/stock/doctype/stock_entry/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_entry/__init__.py
+++ b/erpnext/stock/doctype/stock_entry/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 1cc49f825b4..5fa9eb6536f 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/stock_entry_detail/__init__.py b/erpnext/stock/doctype/stock_entry_detail/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_entry_detail/__init__.py
+++ b/erpnext/stock/doctype/stock_entry_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger/__init__.py b/erpnext/stock/doctype/stock_ledger/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_ledger/__init__.py
+++ b/erpnext/stock/doctype/stock_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger/stock_ledger.py b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
index d529ae320e0..8b51b5cc0fb 100644
--- a/erpnext/stock/doctype/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -51,19 +52,16 @@ class DocType:
self.doclist = doclist
- # -----------------
- # scrub serial nos
- # -----------------
- def scrub_serial_nos(self, obj):
- for d in getlist(obj.doclist, obj.fname):
+ def scrub_serial_nos(self, obj, table_name = ''):
+ if not table_name:
+ table_name = obj.fname
+
+ for d in getlist(obj.doclist, table_name):
if d.serial_no:
d.serial_no = d.serial_no.replace(',', '\n')
d.save()
- # -----------------------------
- # validate serial no warehouse
- # -----------------------------
def validate_serial_no_warehouse(self, obj, fname):
for d in getlist(obj.doclist, fname):
wh = d.warehouse or d.s_warehouse
@@ -80,10 +78,8 @@ class DocType:
msgprint("Serial No : %s for Item : %s doesn't exists in Warehouse : %s" % (s, d.item_code, wh), raise_exception = 1)
- # ------------------------------------
- # check whether serial no is required
- # ------------------------------------
def validate_serial_no(self, obj, fname):
+ """check whether serial no is required"""
for d in getlist(obj.doclist, fname):
is_stock_item = get_value('Item', d.item_code, 'is_stock_item')
ar_required = get_value('Item', d.item_code, 'has_serial_no')
@@ -105,18 +101,10 @@ class DocType:
msgprint("Rejected serial no is mandatory for rejected qty of item: "+ d.item_code, raise_exception = 1)
-
-
-
- # -------------------
- # get serial no list
- # -------------------
def get_sr_no_list(self, sr_nos, qty = 0, item_code = ''):
return get_sr_no_list(sr_nos, qty, item_code)
- # ---------------------
- # set serial no values
- # ---------------------
+
def set_pur_serial_no_values(self, obj, serial_no, d, s, new_rec):
item_details = sql("select item_group, warranty_period from `tabItem` where name = '%s' and \
(ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now()) " %(d.item_code), as_dict=1)
@@ -147,9 +135,6 @@ class DocType:
s.save(new_rec)
- # ----------------------------------
- # update serial no purchase details
- # ----------------------------------
def update_serial_purchase_details(self, obj, d, serial_no, is_submit, purpose = ''):
exists = sql("select name, status, docstatus from `tabSerial No` where name = '%s'" % (serial_no))
if is_submit:
@@ -172,9 +157,6 @@ class DocType:
sql("update `tabSerial No` set docstatus = 2, status = 'Not in Use', purchase_document_type = '', purchase_document_no = '', purchase_date = null, purchase_rate = 0, supplier = null, supplier_name = '', supplier_address = '', warehouse = '' where name = '%s'" % serial_no)
- # -------------------------------
- # check whether serial no exists
- # -------------------------------
def check_serial_no_exists(self, serial_no, item_code):
chk = sql("select name, status, docstatus, item_code from `tabSerial No` where name = %s", (serial_no), as_dict=1)
if not chk:
@@ -186,9 +168,7 @@ class DocType:
elif chk and chk[0]['status'] == 'Delivered':
msgprint("Serial No: %s of Item : %s is already delivered." % (serial_no, item_code), raise_exception = 1)
- # ---------------------
- # set serial no values
- # ---------------------
+
def set_delivery_serial_no_values(self, obj, serial_no):
s = Document('Serial No', serial_no)
s.delivery_document_type = obj.doc.doctype
@@ -207,9 +187,6 @@ class DocType:
s.save()
- # ----------------------------------
- # update serial no delivery details
- # ----------------------------------
def update_serial_delivery_details(self, obj, d, serial_no, is_submit):
if is_submit:
self.check_serial_no_exists(serial_no, d.item_code)
@@ -218,9 +195,6 @@ class DocType:
sql("update `tabSerial No` set docstatus = 0, status = 'In Store', delivery_document_type = '', delivery_document_no = '', delivery_date = null, customer = null, customer_name = '', delivery_address = '', territory = null where name = '%s'" % (serial_no))
- # ---------------------
- # update serial record
- # ---------------------
def update_serial_record(self, obj, fname, is_submit = 1, is_incoming = 0):
import datetime
for d in getlist(obj.doclist, fname):
@@ -239,11 +213,6 @@ class DocType:
self.update_serial_purchase_details(obj, d, a, is_submit)
-
-
- # -------------
- # update stock
- # -------------
def update_stock(self, values, is_amended = 'No'):
for v in values:
sle_id, serial_nos = '', ''
@@ -265,9 +234,6 @@ class DocType:
v["posting_date"], sle_id, v["posting_time"], '', v["is_cancelled"],v["voucher_type"],v["voucher_no"], is_amended)
- # -----------
- # make entry
- # -----------
def make_entry(self, args):
sle = Document(doctype = 'Stock Ledger Entry')
for k in args.keys():
diff --git a/erpnext/stock/doctype/stock_ledger_entry/__init__.py b/erpnext/stock/doctype/stock_ledger_entry/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/__init__.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index b545d7d9c6c..645b7c95d1f 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, cint, flt, cstr, getdate
diff --git a/erpnext/stock/doctype/stock_reconciliation/__init__.py b/erpnext/stock/doctype/stock_reconciliation/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_reconciliation/__init__.py
+++ b/erpnext/stock/doctype/stock_reconciliation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 06b0cc493b8..d922a11b45c 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
.
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, flt, get_defaults, nowdate
from webnotes import msgprint, errprint
@@ -46,10 +47,6 @@ class DocType:
from webnotes.utils import file_manager
fn, content = file_manager.get_file(filename[1])
-
- # NOTE: Don't know why this condition exists
- if not isinstance(content, basestring) and hasattr(content, 'tostring'):
- content = content.tostring()
else:
content = self.doc.diff_info
@@ -81,8 +78,10 @@ class DocType:
def get_reconciliation_data(self,submit = 1):
"""Read and validate csv data"""
- import csv
- data = csv.reader(self.get_csv_file_data(submit).splitlines())
+ import csv
+ from core.page.data_import_tool.data_import_tool import read_csv_content
+ csv_content = self.get_csv_file_data(submit).encode('utf-8')
+ data = read_csv_content(csv_content)
self.convert_into_list(data, submit)
@@ -185,7 +184,7 @@ class DocType:
# Diff between file and system
qty_diff = row[2] != '~' and flt(row[2]) - flt(sys_stock['actual_qty']) or 0
rate_diff = row[3] != '~' and flt(row[3]) - flt(sys_stock['val_rate']) or 0
-
+
# Make sl entry
if qty_diff:
self.make_sl_entry(is_submit, row, qty_diff, sys_stock)
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py b/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
index f7ff36b15c5..b12809411d0 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -116,4 +117,4 @@ class DocType:
# update bin
self.update_bin()
- get_obj("Item", self.doc.item_code).on_update()
\ No newline at end of file
+ get_obj("Item", self.doc.item_code).on_update()
diff --git a/erpnext/stock/doctype/uom_conversion_detail/__init__.py b/erpnext/stock/doctype/uom_conversion_detail/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/uom_conversion_detail/__init__.py
+++ b/erpnext/stock/doctype/uom_conversion_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/valuation_control/__init__.py b/erpnext/stock/doctype/valuation_control/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/valuation_control/__init__.py
+++ b/erpnext/stock/doctype/valuation_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/valuation_control/valuation_control.py b/erpnext/stock/doctype/valuation_control/valuation_control.py
index f0cbed91971..1318db66e5e 100644
--- a/erpnext/stock/doctype/valuation_control/valuation_control.py
+++ b/erpnext/stock/doctype/valuation_control/valuation_control.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes, unittest
from webnotes.utils import flt
diff --git a/erpnext/stock/doctype/warehouse/__init__.py b/erpnext/stock/doctype/warehouse/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/doctype/warehouse/__init__.py
+++ b/erpnext/stock/doctype/warehouse/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js
index b218063b4a2..0017c75d596 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.js
+++ b/erpnext/stock/doctype/warehouse/warehouse.js
@@ -14,16 +14,6 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see
.
-cur_frm.cscript.country = function(doc, cdt, cdn) {
- var mydoc=doc;
- $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
- function(r,rt){
- if(r.message) {
- var doc = locals[mydoc.doctype][mydoc.name];
- doc.state = '';
- get_field(doc.doctype, 'state' , doc.name).options = r.message;
- refresh_field('state');
- }
- }
- );
-}
+cur_frm.cscript.refresh = function(doc) {
+ cur_frm.toggle_display('warehouse_name', doc.__islocal);
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 887d5fe7d06..1766dadfe07 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -15,6 +15,7 @@
# along with this program. If not, see
.
# Please edit this list and import only required elements
+from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/warehouse/warehouse.txt b/erpnext/stock/doctype/warehouse/warehouse.txt
index 16bf59d9d54..844e3f326cb 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.txt
+++ b/erpnext/stock/doctype/warehouse/warehouse.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-05-15 12:15:13',
+ 'creation': '2012-07-03 13:30:45',
'docstatus': 0,
- 'modified': '2012-05-21 18:02:46',
+ 'modified': '2012-07-11 10:18:07',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -17,6 +17,7 @@
'autoname': u'field:warehouse_name',
'colour': u'White:FFF',
'default_print_format': u'Standard',
+ 'description': u'A logical Warehouse against which stock entries are made.\n\nThere are two main Warehouse Types that are significant in ERPNext.\n\n1. **Stores:** These are where your incoming **Items** are kept before they are consumed or sold. You can have as many \u201cStores\u201d type **Warehouses** as you wish. Stores type warehouses are significant because if you set an Item for automatic re-order, ERPNext will check its quantities in all \u201cStores\u201d type **Warehouses** when deciding whether to re-order or not.\n\n2. **Asset**: **Items** marked as type \u201cFixed Asset\u201d are maintained in Asset Type **Warehouses**. This helps you separate them for the **Items** that are consumed as a part of your regular operations or \u201cCost of Goods Sold\u201d.\n',
'doctype': 'DocType',
'document_type': u'Master',
'module': u'Stock',
@@ -170,17 +171,6 @@
'write': 1
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'trash_reason',
- 'fieldtype': u'Small Text',
- 'label': u'Trash Reason',
- 'oldfieldname': u'trash_reason',
- 'oldfieldtype': u'Small Text',
- 'permlevel': 1
- },
-
# DocField
{
'doctype': u'DocField',
@@ -220,7 +210,6 @@
# DocField
{
'colour': u'White:FFF',
- 'description': u'The valuation of items in this warehouse will be considered for the company that is specified',
'doctype': u'DocField',
'fieldname': u'company',
'fieldtype': u'Link',
@@ -233,6 +222,17 @@
'search_index': 1
},
+ # DocField
+ {
+ 'colour': u'White:FFF',
+ 'description': u'For Reference Only.',
+ 'doctype': u'DocField',
+ 'fieldname': u'warehouse_contact_info',
+ 'fieldtype': u'Section Break',
+ 'label': u'Warehouse Contact Info',
+ 'permlevel': 0
+ },
+
# DocField
{
'doctype': u'DocField',
@@ -246,24 +246,6 @@
'print_hide': 0
},
- # DocField
- {
- 'doctype': u'DocField',
- 'fieldname': u'auto_indent_mail',
- 'fieldtype': u'Select',
- 'hidden': 1,
- 'label': u'Send Reorder Alert Mail ',
- 'no_copy': 1,
- 'oldfieldname': u'auto_indent_mail',
- 'oldfieldtype': u'Select',
- 'options': u'No\nYes',
- 'permlevel': 0,
- 'print_hide': 1,
- 'report_hide': 1,
- 'reqd': 0,
- 'trigger': u'Client'
- },
-
# DocField
{
'doctype': u'DocField',
@@ -357,6 +339,8 @@
# DocField
{
+ 'colour': u'White:FFF',
+ 'description': u'For Admin use only. Please report errors to support@erpnext.com',
'doctype': u'DocField',
'fieldname': u'repost_stock',
'fieldtype': u'Section Break',
diff --git a/erpnext/stock/page/__init__.py b/erpnext/stock/page/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/page/__init__.py
+++ b/erpnext/stock/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/page/stock_home/__init__.py b/erpnext/stock/page/stock_home/__init__.py
index e69de29bb2d..baffc488252 100644
--- a/erpnext/stock/page/stock_home/__init__.py
+++ b/erpnext/stock/page/stock_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/page/stock_home/stock_home.html b/erpnext/stock/page/stock_home/stock_home.html
index ef941ab66f1..0939a77681d 100644
--- a/erpnext/stock/page/stock_home/stock_home.html
+++ b/erpnext/stock/page/stock_home/stock_home.html
@@ -49,10 +49,15 @@
title = "Details packages against a delivery"
href="#!List/Packing Slip">Packing Slip
+