Merge branch '1209' of github.com:webnotes/erpnext into 1209
diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py
index 2c9b7ae..ab5d556 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -23,7 +23,7 @@
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, msgprint, errprint
+from webnotes import session, form, is_testing, msgprint, errprint
set = webnotes.conn.set
sql = webnotes.conn.sql
@@ -42,15 +42,9 @@
self.credit_days_global = -1
self.is_approving_authority = -1
- #--------------------------------------------------------------------------------------------------------
- # Autoname
- #--------------------------------------------------------------------------------------------------------
def autoname(self):
self.doc.name = make_autoname(self.doc.naming_series+'.#####')
- #--------------------------------------------------------------------------------------------------------
- # Fetch outstanding amount from RV/PV
- #--------------------------------------------------------------------------------------------------------
def get_outstanding(self, args):
args = eval(args)
o_s = sql("select outstanding_amount from `tab%s` where name = '%s'" % (args['doctype'],args['docname']))
@@ -59,9 +53,6 @@
if args['doctype'] == 'Sales Invoice':
return {'credit': o_s and flt(o_s[0][0]) or 0}
- #--------------------------------------------------------------------------------------------------------
- # Create remarks
- #--------------------------------------------------------------------------------------------------------
def create_remarks(self):
r = []
if self.doc.cheque_no :
@@ -90,9 +81,6 @@
if r:
self.doc.remark = ("\n").join(r)
- # --------------------------------------------------------------------------------------------------------
- # Check user role for approval process
- # --------------------------------------------------------------------------------------------------------
def get_authorized_user(self):
if self.is_approving_authority==-1:
self.is_approving_authority = 0
@@ -107,17 +95,12 @@
return self.is_approving_authority
- # get master type
- # ---------------
def get_master_type(self, ac):
if not self.master_type.get(ac):
self.master_type[ac] = sql("select master_type from `tabAccount` where name=%s", ac)[0][0] or 'None'
return self.master_type[ac]
- # get credit days for
- # -------------------
def get_credit_days_for(self, ac):
-
if not self.credit_days_for.has_key(ac):
self.credit_days_for[ac] = sql("select credit_days from `tabAccount` where name='%s'" % ac)[0][0] or 0
@@ -128,10 +111,6 @@
else:
return self.credit_days_for[ac]
-
- # --------------------------------------------------------------------------------------------------------
- # Check Credit Days - Cheque Date can not after (Posting date + Credit Days)
- # --------------------------------------------------------------------------------------------------------
def check_credit_days(self):
date_diff = 0
if self.doc.cheque_date:
@@ -150,9 +129,6 @@
msgprint("Credit Not Allowed: Cannot allow a check that is dated more than %s days after the posting date" % credit_days)
raise Exception
- #--------------------------------------------------------------------------------------------------------
- # validation of debit/credit account with Debit To Account(RV) or Credit To Account (PV)
- #--------------------------------------------------------------------------------------------------------
def check_account_against_entries(self):
for d in getlist(self.doclist,'entries'):
if d.against_invoice:
@@ -167,9 +143,6 @@
msgprint("Credit account is not matching with payable voucher")
raise Exception
- #--------------------------------------------------------------------------------------------------------
- # Validate Cheque Info: Mandatory for Bank/Contra voucher
- #--------------------------------------------------------------------------------------------------------
def validate_cheque_info(self):
if self.doc.voucher_type in ['Bank Voucher']:
if not self.doc.cheque_no or not self.doc.cheque_date:
@@ -180,9 +153,6 @@
msgprint("Cheque No is mandatory if you entered Cheque Date")
raise Exception
- #--------------------------------------------------------------------------------------------------------
- # Gives reminder for making is_advance = 'Yes' in Advance Entry
- #--------------------------------------------------------------------------------------------------------
def validate_entries_for_advance(self):
for d in getlist(self.doclist,'entries'):
if not d.is_advance and not d.against_voucher and not d.against_invoice and d.against_jv:
@@ -190,9 +160,6 @@
if (master_type == 'Customer' and flt(d.credit) > 0) or (master_type == 'Supplier' and flt(d.debit) > 0):
msgprint("Message: Please check Is Advance as 'Yes' against Account %s if this is an advance entry." % d.account)
- #--------------------------------------------------------------------------------------------------------
- # TDS: Validate tds related fields
- #--------------------------------------------------------------------------------------------------------
def get_tds_category_account(self):
for d in getlist(self.doclist,'entries'):
if flt(d.debit) > 0 and not d.against_voucher and d.is_advance == 'Yes':
@@ -220,11 +187,6 @@
msgprint("Please select TDS Applicable = 'Yes' in account head: '%s' if you want to deduct TDS." % self.doc.supplier_account)
raise Exception
-
-
- #--------------------------------------------------------------------------------------------------------
- # If TDS applicable , TDS category and supplier account should be mandatory
- #--------------------------------------------------------------------------------------------------------
def validate_category_account(self, credit_account):
if not self.doc.tds_category:
msgprint("Please select TDS Category")
@@ -236,10 +198,6 @@
msgprint("Supplier Account is not matching with the account mentioned in the table. Please select proper Supplier Account and click on 'Get TDS' button.")
raise Exception
-
- #--------------------------------------------------------------------------------------------------------
- # If TDS is not applicable , all related fields should blank
- #--------------------------------------------------------------------------------------------------------
def set_fields_null(self):
self.doc.ded_amount = 0
self.doc.rate = 0
@@ -247,9 +205,6 @@
self.doc.tds_category = ''
self.doc.supplier_account = ''
- #--------------------------------------------------------------------------------------------------------
- # Get TDS amount
- #--------------------------------------------------------------------------------------------------------
def get_tds(self):
if cstr(self.doc.is_opening) != 'Yes':
if self.doc.total_debit > 0:
@@ -257,10 +212,6 @@
if self.doc.supplier_account and self.doc.tds_category:
get_obj('TDS Control').get_tds_amount(self)
-
- #--------------------------------------------------------------------------------------------------------
- # Insert new row to balance total debit and total credit
- #--------------------------------------------------------------------------------------------------------
def get_balance(self):
if not getlist(self.doclist,'entries'):
msgprint("Please enter atleast 1 entry in 'GL Entries' table")
@@ -295,9 +246,6 @@
self.doc.difference = flt(self.doc.total_debit) - flt(self.doc.total_credit)
- #--------------------------------------------------------------------------------------------------------
- # Set against account
- #--------------------------------------------------------------------------------------------------------
def get_against_account(self):
# Debit = Credit
debit, credit = 0.0, 0.0
@@ -323,9 +271,6 @@
if flt(d.debit) > 0: d.against_account = ', '.join(credit_list)
if flt(d.credit) > 0: d.against_account = ', '.join(debit_list)
-
- # set aging date
- #---------------
def set_aging_date(self):
if self.doc.is_opening != 'Yes':
self.doc.aging_date = self.doc.posting_date
@@ -345,9 +290,6 @@
else:
self.doc.aging_date = self.doc.posting_date
- # ------------------------
- # set print format fields
- # ------------------------
def set_print_format_fields(self):
for d in getlist(self.doclist, 'entries'):
#msgprint(self.doc.company)
@@ -363,10 +305,6 @@
self.doc.total_amount = dcc +' '+ cstr(amt)
self.doc.total_amount_in_words = get_obj('Sales Common').get_total_in_words(dcc, cstr(amt))
-
- # --------------------------------
- # get outstanding invoices values
- # --------------------------------
def get_values(self):
cond = (flt(self.doc.write_off_amount) > 0) and ' and outstanding_amount <= '+self.doc.write_off_amount or ''
if self.doc.write_off_based_on == 'Accounts Receivable':
@@ -375,9 +313,6 @@
return sql("select name, credit_to, outstanding_amount from `tabPurchase Invoice` where docstatus = 1 and company = '%s' and outstanding_amount > 0 %s" % (self.doc.company, cond))
- # -------------------------
- # get outstanding invoices
- # -------------------------
def get_outstanding_invoices(self):
self.doclist = self.doc.clear_table(self.doclist, 'entries')
total = 0
@@ -399,13 +334,10 @@
jd.credit = total
jd.save(1)
-
- #--------------------------------------------------------------------------------------------------------
- # VALIDATE
- #--------------------------------------------------------------------------------------------------------
def validate(self):
if not self.doc.is_opening:
self.doc.is_opening='No'
+ self.validate_debit_credit()
self.get_against_account()
self.validate_cheque_info()
self.create_remarks()
@@ -420,25 +352,24 @@
self.set_print_format_fields()
#FY and Date validation
- get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
+ get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year, \
+ self.doc.posting_date, 'Posting Date')
- #--------------------------------------------------------------------------------------------------------
- # On Update - Update Feed
- #--------------------------------------------------------------------------------------------------------
+ def validate_debit_credit(self):
+ for d in getlist(self.doclist, 'entries'):
+ if d.debit and d.credit:
+ msgprint("You cannot credit and debit same account at the same time.",
+ raise_exception=1)
+
def on_update(self):
pass
- #--------------------------------------------------------------------------------------------------------
- # On submit
- #--------------------------------------------------------------------------------------------------------
def on_submit(self):
if self.doc.voucher_type in ['Bank Voucher', 'Contra Voucher', 'Journal Entry']:
self.check_credit_days()
self.check_account_against_entries()
get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist)
-
- # validate against jv no
def validate_against_jv(self):
for d in getlist(self.doclist, 'entries'):
if d.against_jv:
@@ -448,18 +379,13 @@
elif not sql("select name from `tabJournal Voucher Detail` where account = '%s' and docstatus = 1 and parent = '%s'" % (d.account, d.against_jv)):
msgprint("Against JV: "+ d.against_jv + " is not valid. Please check")
raise Exception
-
- #--------------------------------------------------------------------------------------------------------
- # On cancel reverse gl entry
- #--------------------------------------------------------------------------------------------------------
+
def on_cancel(self):
self.check_tds_payment_voucher()
get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist, cancel=1)
- # Check whether tds payment voucher has been created against this voucher
- #---------------------------------------------------------------------------
def check_tds_payment_voucher(self):
tdsp = sql("select parent from `tabTDS Payment Detail` where voucher_no = '%s' and docstatus = 1 and parent not like 'old%'")
if tdsp:
msgprint("TDS Payment voucher '%s' has been made against this voucher. Please cancel the payment voucher to proceed." % (tdsp and tdsp[0][0] or ''))
- raise Exception
+ raise Exception
\ No newline at end of file
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 969f99c..9e92b85 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -66,7 +66,9 @@
def get_cust(self):
ret = {}
if self.doc.credit_to:
- ret['supplier'] = get_value('Account',self.doc.credit_to,'master_name')
+ acc = get_value('Account',self.doc.credit_to,['master_name', 'credit_days'])
+ ret['supplier'] = acc[0]
+ ret['due_date'] = add_days(cstr(self.doc.posting_date), acc and cint(acc[1]) or 0)
return ret
diff --git a/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt b/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
index 4673189..3198b25 100644
--- a/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
+++ b/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
@@ -5,7 +5,7 @@
{
u'creation': '2012-09-18 11:20:24',
u'docstatus': 0,
- u'modified': '2012-09-28 12:19:57',
+ u'modified': '2012-09-28 12:27:43',
u'modified_by': u'Administrator',
u'owner': u'wasim@webnotestech.com'
},
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 091c652..16973f0 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -30,7 +30,7 @@
// On Load
// -------
cur_frm.cscript.onload = function(doc,dt,dn) {
- if(!doc.customer && doc.debit_to) get_field(dt, 'debit_to', dn).print_hide = 0;
+ if(!doc.customer && doc.debit_to) Meta.get_field(dt, 'debit_to', dn).print_hide = 0;
if (doc.__islocal) {
//if(!doc.voucher_date) set_multiple(dt,dn,{voucher_date:get_today()});
if(!doc.due_date) set_multiple(dt,dn,{due_date:get_today()});
diff --git a/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js
index eca9dea..c8866fc 100644
--- a/accounts/page/general_ledger/general_ledger.js
+++ b/accounts/page/general_ledger/general_ledger.js
@@ -102,8 +102,9 @@
var default_company = me.filter_inputs.company.get(0).opts.default_value;
$filter.empty().add_options([$filter.get(0).opts.default_value].concat(
$.map(wn.report_dump.data["Account"], function(ac) {
- return (accounts_by_company[company].indexOf(ac.name)!=-1 ||
- company===default_company) ? ac.name : null;
+ return (company===default_company ||
+ accounts_by_company[company].indexOf(ac.name)!=-1) ?
+ ac.name : null;
})));
me.filter_inputs.refresh.click();
});
diff --git a/hr/doctype/appraisal/appraisal.js b/hr/doctype/appraisal/appraisal.js
index fbd7e02..1243dc4 100644
--- a/hr/doctype/appraisal/appraisal.js
+++ b/hr/doctype/appraisal/appraisal.js
@@ -53,7 +53,7 @@
$c_obj(make_doclist(doc.doctype, doc.name),'set_approver','', function(r,rt){
if(r.message){
doc.employee_name = r.message['emp_nm'];
- get_field(doc.doctype, 'kra_approver' , doc.name).options = r.message['app_lst'];
+ Meta.get_field(doc.doctype, 'kra_approver' , doc.name).options = r.message['app_lst'];
refresh_many(['kra_approver','employee_name']);
}
});
diff --git a/hr/doctype/appraisal/appraisal.py b/hr/doctype/appraisal/appraisal.py
index b0652db..2b20641 100644
--- a/hr/doctype/appraisal/appraisal.py
+++ b/hr/doctype/appraisal/appraisal.py
@@ -89,6 +89,7 @@
self.validate_fiscal_year()
def set_approver(self):
+ errprint('here')
ret={}
approver_lst =[]
emp_nm = self.get_employee_name()
diff --git a/hr/doctype/leave_allocation/leave_allocation.txt b/hr/doctype/leave_allocation/leave_allocation.txt
index 9045221..287dc80 100644
--- a/hr/doctype/leave_allocation/leave_allocation.txt
+++ b/hr/doctype/leave_allocation/leave_allocation.txt
@@ -3,11 +3,11 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:35:58',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:45:49',
- 'modified_by': u'Administrator',
- 'owner': u'Administrator'
+ u'creation': '2012-05-15 12:14:45',
+ u'docstatus': 0,
+ u'modified': '2012-10-02 11:21:31',
+ u'modified_by': u'Administrator',
+ u'owner': u'Administrator'
},
# These values are common for all DocType
@@ -16,21 +16,21 @@
'autoname': u'LAL/.#####',
'colour': u'White:FFF',
'default_print_format': u'Standard',
- 'doctype': 'DocType',
+ u'doctype': u'DocType',
'is_submittable': 1,
'module': u'HR',
- 'name': '__common__',
+ u'name': u'__common__',
'search_fields': u'employee,employee_name,leave_type,total_leaves_allocated,fiscal_year',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
- 'version': 1560
+ 'version': 1
},
# These values are common for all DocField
{
- 'doctype': u'DocField',
- 'name': '__common__',
+ u'doctype': u'DocField',
+ u'name': u'__common__',
'parent': u'Leave Allocation',
'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'Leave Allocation',
'parentfield': u'permissions',
'parenttype': u'DocType',
@@ -48,58 +48,13 @@
# DocType, Leave Allocation
{
- 'doctype': 'DocType',
- 'name': u'Leave Allocation'
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'match': u'owner',
- 'permlevel': 0,
- 'role': u'HR User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'match': u'owner',
- 'permlevel': 0,
- 'role': u'HR User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'HR Manager',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'HR Manager'
+ u'doctype': u'DocType',
+ u'name': u'Leave Allocation'
},
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'column_break0',
'fieldtype': u'Column Break',
'permlevel': 0,
@@ -109,7 +64,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'employee',
'fieldtype': u'Link',
'in_filter': 1,
@@ -125,7 +80,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'employee_name',
'fieldtype': u'Data',
'in_filter': 1,
@@ -137,7 +92,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'leave_type',
'fieldtype': u'Select',
'in_filter': 1,
@@ -155,7 +110,7 @@
{
'colour': u'White:FFF',
'default': u'Today',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'posting_date',
'fieldtype': u'Date',
'hidden': 0,
@@ -171,7 +126,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'fiscal_year',
'fieldtype': u'Select',
'in_filter': 1,
@@ -188,7 +143,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Small Text',
'hidden': 0,
@@ -201,7 +156,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'column_break1',
'fieldtype': u'Column Break',
'permlevel': 0,
@@ -210,7 +165,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'carry_forward',
'fieldtype': u'Check',
'label': u'Carry Forward',
@@ -220,7 +175,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'carry_forwarded_leaves',
'fieldtype': u'Currency',
'label': u'Carry Forwarded Leaves',
@@ -230,7 +185,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'new_leaves_allocated',
'fieldtype': u'Currency',
'label': u'New Leaves Allocated',
@@ -240,7 +195,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'total_leaves_allocated',
'fieldtype': u'Currency',
'label': u'Total Leaves Allocated',
@@ -250,7 +205,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'amended_from',
'fieldtype': u'Data',
'hidden': 0,
@@ -265,7 +220,7 @@
# DocField
{
'description': u'The date at which current entry is corrected in the system.',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'amendment_date',
'fieldtype': u'Date',
'hidden': 0,
@@ -275,5 +230,37 @@
'oldfieldtype': u'Date',
'permlevel': 1,
'print_hide': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'match': u'owner',
+ 'permlevel': 0,
+ 'role': u'HR User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'HR Manager',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'All'
}
]
\ No newline at end of file
diff --git a/hr/doctype/leave_application/leave_application.txt b/hr/doctype/leave_application/leave_application.txt
index b2ce2ab..c87c746 100644
--- a/hr/doctype/leave_application/leave_application.txt
+++ b/hr/doctype/leave_application/leave_application.txt
@@ -3,11 +3,11 @@
# These values are common in all dictionaries
{
- 'creation': '2012-03-27 14:35:58',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:45:49',
- 'modified_by': u'Administrator',
- 'owner': u'Administrator'
+ u'creation': '2012-05-15 12:14:45',
+ u'docstatus': 0,
+ u'modified': '2012-10-02 11:19:44',
+ u'modified_by': u'Administrator',
+ u'owner': u'Administrator'
},
# These values are common for all DocType
@@ -15,23 +15,23 @@
'_last_update': u'1310019491',
'autoname': u'LAP/.#####',
'colour': u'White:FFF',
- 'doctype': 'DocType',
+ u'doctype': u'DocType',
'document_type': u'Transaction',
'is_submittable': 1,
'module': u'HR',
- 'name': '__common__',
+ u'name': u'__common__',
'search_fields': u'employee,employee_name,leave_type,from_date,to_date,total_leave_days,fiscal_year',
'section_style': u'Simple',
'show_in_menu': 0,
'subject': u'From %(employee_name)s, %(designation)s',
'tag_fields': u'leave_type',
- 'version': 17
+ 'version': 1
},
# These values are common for all DocField
{
- 'doctype': u'DocField',
- 'name': '__common__',
+ u'doctype': u'DocField',
+ u'name': u'__common__',
'parent': u'Leave Application',
'parentfield': u'fields',
'parenttype': u'DocType'
@@ -39,8 +39,8 @@
# These values are common for all DocPerm
{
- 'doctype': u'DocPerm',
- 'name': '__common__',
+ u'doctype': u'DocPerm',
+ u'name': u'__common__',
'parent': u'Leave Application',
'parentfield': u'permissions',
'parenttype': u'DocType',
@@ -49,85 +49,13 @@
# DocType, Leave Application
{
- 'doctype': 'DocType',
- 'name': u'Leave Application'
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'match': u'owner',
- 'permlevel': 0,
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'match': u'owner',
- 'permlevel': 0,
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'HR User',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 1,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'HR Manager',
- 'submit': 1,
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'HR User',
- 'submit': 0,
- 'write': 0
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 0,
- 'create': 0,
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'HR Manager',
- 'submit': 0,
- 'write': 0
+ u'doctype': u'DocType',
+ u'name': u'Leave Application'
},
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'column_break0',
'fieldtype': u'Column Break',
'permlevel': 0,
@@ -136,7 +64,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'employee',
'fieldtype': u'Link',
'in_filter': 1,
@@ -149,7 +77,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'employee_name',
'fieldtype': u'Data',
'in_filter': 1,
@@ -160,7 +88,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'leave_type',
'fieldtype': u'Select',
'in_filter': 1,
@@ -173,7 +101,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'leave_balance',
'fieldtype': u'Currency',
'label': u'Leave Balance',
@@ -184,7 +112,7 @@
{
'colour': u'White:FFF',
'default': u'Today',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'posting_date',
'fieldtype': u'Date',
'label': u'Posting Date',
@@ -195,7 +123,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'fiscal_year',
'fieldtype': u'Select',
'in_filter': 1,
@@ -208,7 +136,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'column_break1',
'fieldtype': u'Column Break',
'permlevel': 0,
@@ -218,7 +146,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'half_day',
'fieldtype': u'Check',
'label': u'Half Day',
@@ -229,7 +157,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'from_date',
'fieldtype': u'Date',
'label': u'From Date',
@@ -241,7 +169,7 @@
# DocField
{
'colour': u'White:FFF',
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'to_date',
'fieldtype': u'Date',
'label': u'To Date',
@@ -252,7 +180,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'total_leave_days',
'fieldtype': u'Currency',
'label': u'Total Leave Days',
@@ -261,7 +189,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'description',
'fieldtype': u'Small Text',
'label': u'Description',
@@ -271,7 +199,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'letter_head',
'fieldtype': u'Link',
'label': u'Letter Head',
@@ -281,7 +209,7 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'amended_from',
'fieldtype': u'Data',
'label': u'Amended From',
@@ -290,10 +218,68 @@
# DocField
{
- 'doctype': u'DocField',
+ u'doctype': u'DocField',
'fieldname': u'amendment_date',
'fieldtype': u'Date',
'label': u'Amendment Date',
'permlevel': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ u'doctype': u'DocPerm',
+ 'match': u'owner',
+ 'permlevel': 0,
+ 'role': u'Employee',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'HR User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'HR Manager',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'HR User'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'HR Manager'
+ },
+
+ # DocPerm
+ {
+ u'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Employee'
}
]
\ No newline at end of file
diff --git a/master.sql.gz b/master.sql.gz
new file mode 100644
index 0000000..f331784
--- /dev/null
+++ b/master.sql.gz
Binary files differ
diff --git a/patches/before_jan_2012/repost_account_bal.py b/patches/before_jan_2012/repost_account_bal.py
index a87bfe0..b1d68c7 100644
--- a/patches/before_jan_2012/repost_account_bal.py
+++ b/patches/before_jan_2012/repost_account_bal.py
@@ -30,10 +30,7 @@
fy_obj = get_obj('Fiscal Year', f[0])
fy_obj.doc.past_year = prev_fy
fy_obj.doc.company = c[0]
- fy_obj.doc.save()
-
- fy_obj = get_obj('Fiscal Year', f[0])
fy_obj.repost()
prev_fy = f[0]
- sql("commit")
- sql("start transaction")
+ webnotes.conn.commit()
+ webnotes.conn.begin()
\ No newline at end of file
diff --git a/patches/october_2012/__init__.py b/patches/october_2012/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/patches/october_2012/__init__.py
diff --git a/patches/october_2012/update_permission.py b/patches/october_2012/update_permission.py
new file mode 100644
index 0000000..5686a8e
--- /dev/null
+++ b/patches/october_2012/update_permission.py
@@ -0,0 +1,39 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import unicode_literals
+def execute():
+ import webnotes
+ webnotes.conn.sql("""
+ delete from `tabDocPerm`
+ where
+ role in ('Sales User', 'Sales Manager', 'Sales Master Manager',
+ 'Purchase User', 'Purchase Manager', 'Purchase Master Manager')
+ and parent = 'Sales and Purchase Return Tool'
+ """)
+
+ webnotes.conn.sql("""delete from `tabDocPerm` where ifnull(role, '') = ''""")
+
+ if not webnotes.conn.sql("""select name from `tabDocPerm` where parent = 'Leave Application'
+ and role = 'Employee' and permlevel = 1"""):
+ from webnotes.model.code import get_obj
+ from webnotes.model.doc import addchild
+ leave_app = get_obj('DocType', 'Leave Application', with_children=1)
+ ch = addchild(leave_app.doc, 'permissions', 'DocPerm')
+ ch.role = 'Employee'
+ ch.permlevel = 1
+ ch.read = 1
+ ch.save()
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index da8fee3..340665b 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -607,4 +607,8 @@
'patch_module': 'patches.september_2012',
'patch_file': 'profile_delete_permission',
},
+ {
+ 'patch_module': 'patches.october_2012',
+ 'patch_file': 'update_permission',
+ },
]
diff --git a/selling/doctype/opportunity/opportunity.js b/selling/doctype/opportunity/opportunity.js
index 45ceda9..4a8abd3 100644
--- a/selling/doctype/opportunity/opportunity.js
+++ b/selling/doctype/opportunity/opportunity.js
@@ -59,17 +59,11 @@
}
}
-// fetch
-// ===============================================================
-cur_frm.cscript.set_fetch = function() {
- // item
- cur_frm.add_fetch('item_code', 'item_name', 'item_name');
- cur_frm.add_fetch('item_code', 'stock_uom', 'uom');
- cur_frm.add_fetch('item_code', 'description', 'description');
- cur_frm.add_fetch('item_code', 'item_group', 'item_group');
- cur_frm.add_fetch('item_code', 'brand', 'brand');
-
- // customer
+cur_frm.cscript.item_code = function(doc, cdt, cdn) {
+ var d = locals[cdt][cdn];
+ if (d.item_code) {
+ get_server_fields('get_item_details',d.item_code, 'enquiry_details',doc, cdt,cdn,1);
+ }
}
// hide - unhide fields on basis of enquiry_from lead or customer
diff --git a/selling/doctype/opportunity/opportunity.py b/selling/doctype/opportunity/opportunity.py
index 19aa983..bdec87a 100644
--- a/selling/doctype/opportunity/opportunity.py
+++ b/selling/doctype/opportunity/opportunity.py
@@ -42,13 +42,21 @@
self.fname = 'enq_details'
self.tname = 'Opportunity Item'
- # Autoname
- # ====================================================================================================================
def autoname(self):
self.doc.name = make_autoname(self.doc.naming_series+'.####')
+
+ def get_item_details(self, item_code):
+ item = sql("""select item_name, stock_uom, description_html, description, item_group, brand
+ from `tabItem` where name = %s""", item_code, as_dict=1)
+ ret = {
+ 'item_name': item and item[0]['item_name'] or '',
+ 'uom': item and item[0]['stock_uom'] or '',
+ 'description': item and item[0]['description_html'] or item[0]['description'] or '',
+ 'item_group': item and item[0]['item_group'] or '',
+ 'brand': item and item[0]['brand'] or ''
+ }
+ return ret
- #--------Get customer address-------
- # ====================================================================================================================
def get_cust_address(self,name):
details = sql("select customer_name, address, territory, customer_group from `tabCustomer` where name = '%s' and docstatus != 2" %(name), as_dict = 1)
if details:
@@ -71,9 +79,7 @@
else:
msgprint("Customer : %s does not exist in system." % (name))
raise Exception
-
-
- # ====================================================================================================================
+
def get_contact_details(self, arg):
arg = eval(arg)
contact = sql("select contact_no, email_id from `tabContact` where contact_name = '%s' and customer_name = '%s'" %(arg['contact_person'],arg['customer']), as_dict = 1)
@@ -83,18 +89,14 @@
}
return ret
- # ====================================================================================================================
def on_update(self):
# Add to calendar
- #if self.doc.contact_date and self.doc.last_contact_date != self.doc.contact_date:
if self.doc.contact_date and self.doc.contact_date_ref != self.doc.contact_date:
if self.doc.contact_by:
self.add_calendar_event()
set(self.doc, 'contact_date_ref',self.doc.contact_date)
set(self.doc, 'status', 'Draft')
-
- # Add to Calendar
- # ====================================================================================================================
+
def add_calendar_event(self):
desc=''
user_lst =[]
@@ -133,8 +135,6 @@
ch.person = d
ch.save(1)
- #--------------Validation For Last Contact Date-----------------
- # ====================================================================================================================
def set_last_contact_date(self):
if self.doc.contact_date_ref and self.doc.contact_date_ref != self.doc.contact_date:
if getdate(self.doc.contact_date_ref) < getdate(self.doc.contact_date):
@@ -142,16 +142,12 @@
else:
msgprint("Contact Date Cannot be before Last Contact Date")
raise Exception
-
- # check if item present in item table
- # ====================================================================================================================
+
def validate_item_details(self):
if not getlist(self.doclist, 'enquiry_details'):
msgprint("Please select items for which enquiry needs to be made")
raise Exception
-
- #check if enquiry date in the range of fiscal year selected
- #=====================================================
+
def validate_fiscal_year(self):
fy=sql("select year_start_date from `tabFiscal Year` where name='%s'"%self.doc.fiscal_year)
ysd=fy and fy[0][0] or ""
@@ -166,19 +162,15 @@
elif self.doc.enquiry_from == 'Customer' and not self.doc.customer:
msgprint("Customer is mandatory if 'Opportunity From' is selected as Customer", raise_exception=1)
-
def validate(self):
self.validate_fiscal_year()
self.set_last_contact_date()
self.validate_item_details()
self.validate_lead_cust()
-
- # On Submit Functions
- # ====================================================================================================================
+
def on_submit(self):
set(self.doc, 'status', 'Submitted')
-
- # ====================================================================================================================
+
def on_cancel(self):
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
if chk:
@@ -187,8 +179,6 @@
else:
set(self.doc, 'status', 'Cancelled')
- # declare as enquiry lost
- #---------------------------
def declare_enquiry_lost(self,arg):
chk = sql("select t1.name from `tabQuotation` t1, `tabQuotation Item` t2 where t2.parent = t1.name and t1.docstatus=1 and (t1.status!='Order Lost' and t1.status!='Cancelled') and t2.prevdoc_docname = %s",self.doc.name)
if chk:
@@ -198,32 +188,3 @@
set(self.doc, 'status', 'Opportunity Lost')
set(self.doc, 'order_lost_reason', arg)
return 'true'
-
- #---------------------- Add details in follow up table----------------
- # ====================================================================================================================
- def add_in_follow_up(self,message,type):
- import datetime
- child = addchild( self.doc, 'follow_up', 'Communication Log', 1, self.doclist)
- child.date = datetime.datetime.now().date().strftime('%Y-%m-%d')
- child.notes = message
- child.follow_up_type = type
- child.save()
-
- #-------------------SMS----------------------------------------------
- # ====================================================================================================================
- def send_sms(self):
- if not self.doc.sms_message:
- msgprint("Please enter message in SMS Section ")
- raise Exception
- elif not getlist(self.doclist, 'enquiry_sms_detail'):
- msgprint("Please mention mobile no. to which sms needs to be sent")
- raise Exception
- else:
- receiver_list = []
- for d in getlist(self.doclist,'enquiry_sms_detail'):
- if d.other_mobile_no:
- receiver_list.append(d.other_mobile_no)
-
- if receiver_list:
- msgprint(get_obj('SMS Control', 'SMS Control').send_sms(receiver_list, self.doc.sms_message))
- self.add_in_follow_up(self.doc.sms_message,'SMS')
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index 634301e..d448c79 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -37,7 +37,7 @@
// load default charges
if(doc.__islocal && !doc.customer){
- hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group','shipping_address']);
+ hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
}
}
@@ -100,7 +100,7 @@
var callback = function(r,rt) {
var callback2 = function(r, rt) {
- if(doc.customer) unhide_field(['customer_address', 'contact_person', 'territory','customer_group','shipping_address']);
+ if(doc.customer) unhide_field(['customer_address', 'contact_person', 'territory','customer_group']);
cur_frm.refresh();
if(!onload && (pl != doc.price_list_name)) cur_frm.cscript.price_list_name(doc, dt, dn);
@@ -141,8 +141,8 @@
if(r.message){
doc.quotation_no = r.message;
if(doc.quotation_no) {
- unhide_field(['quotation_date','customer_address','contact_person','territory','customer_group','shipping_address']);
- if(doc.customer) get_server_fields('get_shipping_address',doc.customer,'',doc, dt, dn, 0);
+ unhide_field(['quotation_date', 'customer_address', 'contact_person', 'territory', 'customer_group']);
+ if(doc.customer) get_server_fields('get_shipping_address', doc.customer, '', doc, dt, dn, 0);
}
cur_frm.refresh();
}
diff --git a/setup/doctype/price_list/price_list.js b/setup/doctype/price_list/price_list.js
index 11993f8..0d903a8 100644
--- a/setup/doctype/price_list/price_list.js
+++ b/setup/doctype/price_list/price_list.js
@@ -19,29 +19,29 @@
cur_frm.set_intro("Save this list to begin.");
return;
}
- if(!doc.file_list) {
- cur_frm.set_intro('<p>1. Click on "Download Template" \
- to download the template of all Items.</p>'
- +'<p>2. Update prices and Currency.</p>'
- +'<p>3. Save it as a CSV (.csv) file.</p>'
- +'<p>4. Upload the file.</p>');
+ if (wn.boot.profile.can_create.indexOf(cdt) !== -1) {
+ if(!doc.file_list) {
+ cur_frm.set_intro('<p>1. Click on "Download Template" \
+ to download the template of all Items.</p>'
+ +'<p>2. Update prices and Currency.</p>'
+ +'<p>3. Save it as a CSV (.csv) file.</p>'
+ +'<p>4. Upload the file.</p>');
- cur_frm.add_custom_button('Download Template', function() {
- $c_obj_csv(cur_frm.get_doclist(), 'download_template');
- }, 'icon-download')
+ 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.add_custom_button('Upload Price List', function() {
+ cur_frm.attachments.add_attachment();
+ }, 'icon-upload');
+ } 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.');
-
- } 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')
+ // Update Prices
+ cur_frm.add_custom_button('Update Prices', function() {
+ cur_frm.call_server('update_prices');
+ }, 'icon-refresh');
+ }
}
}
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index 1eca582..33e2e83 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -231,7 +231,12 @@
pr.name = pr.email = user_email
pr.enabled = 1
pr.save(1)
- if pwd: webnotes.conn.sql("UPDATE `tabProfile` SET password=PASSWORD(%s) WHERE name=%s", (pwd, user_email))
+ if pwd:
+ webnotes.conn.sql("""insert into __Auth (user, `password`)
+ values (%s, password(%s))
+ on duplicate key update `password`=password(%s)""",
+ (user_email, pwd, pwd))
+
self.add_roles(pr)
def add_roles(self, pr):
diff --git a/startup/event_handlers.py b/startup/event_handlers.py
index 9b9c030..472d5d1 100644
--- a/startup/event_handlers.py
+++ b/startup/event_handlers.py
@@ -118,8 +118,7 @@
# if expired, stop user from logging in
from webnotes.utils import formatdate
- msg = """Oops! Your subscription expired on <b>%s</b>.
- <br>Nothing catastrophic.<br>""" % formatdate(conf.expires_on)
+ msg = """Oops! Your subscription expired on <b>%s</b>.<br>""" % formatdate(conf.expires_on)
if 'System Manager' in webnotes.user.roles:
msg += """Just drop in a mail at <b>support@erpnext.com</b> and
diff --git a/stock/doctype/item/item.js b/stock/doctype/item/item.js
index 96c0339..bc9d57f 100644
--- a/stock/doctype/item/item.js
+++ b/stock/doctype/item/item.js
@@ -106,6 +106,7 @@
cur_frm.cscript.add_image = function(doc, dt, dn) {
if(!doc.file_list) {
msgprint('Please attach a file first!');
+ return;
}
var f = doc.file_list.split('\n')[0];
diff --git a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
index 8bec19e..0952f1d 100644
--- a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
+++ b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- u'creation': '2012-07-03 13:29:45',
+ u'creation': '2012-09-19 12:24:41',
u'docstatus': 0,
- u'modified': '2012-09-17 10:55:11',
+ u'modified': '2012-10-02 10:40:14',
u'modified_by': u'Administrator',
u'owner': u'wasim@webnotestech.com'
},
@@ -230,45 +230,37 @@
# DocPerm
{
+ 'amend': 0,
+ 'cancel': 0,
'create': 1,
u'doctype': u'DocPerm',
'permlevel': 0,
- 'role': u'Accounts Manager',
+ 'role': u'Material User',
+ 'submit': 0,
'write': 1
},
# DocPerm
{
- u'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
- # DocPerm
- {
'amend': 0,
'cancel': 0,
- 'create': 0,
+ 'create': 1,
u'doctype': u'DocPerm',
- 'permlevel': 1,
+ 'permlevel': 0,
+ 'role': u'Material Manager',
+ 'submit': 0,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 1,
+ u'doctype': u'DocPerm',
+ 'permlevel': 0,
'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
},
@@ -277,25 +269,7 @@
'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',
+ 'role': u'Accounts Manager',
'write': 1
},
@@ -310,96 +284,8 @@
# 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
+ 'role': u'All'
}
]
\ No newline at end of file