Merge branch 'master' of github.com:webnotes/erpnext into 1209
Conflicts: accounts/doctype/account/account.py erpnext/accounts/doctype/journal_voucher/journal_voucher.py patches/patch_list.py startup/event_handlers.py
This commit is contained in:
commit
05aaae33ae
@ -23,7 +23,7 @@ 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, msgprint, errprint
|
||||
from webnotes import session, form, is_testing, msgprint, errprint
|
||||
|
||||
set = webnotes.conn.set
|
||||
sql = webnotes.conn.sql
|
||||
@ -42,15 +42,9 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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 @@ class DocType:
|
||||
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')
|
||||
|
||||
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)
|
||||
|
||||
#--------------------------------------------------------------------------------------------------------
|
||||
# On Update - Update Feed
|
||||
#--------------------------------------------------------------------------------------------------------
|
||||
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:
|
||||
@ -449,15 +380,10 @@ class DocType:
|
||||
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:
|
||||
|
@ -66,7 +66,9 @@ class DocType(TransactionBase):
|
||||
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
|
||||
|
||||
|
@ -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'
|
||||
},
|
||||
|
@ -30,7 +30,7 @@ wn.require('app/setup/doctype/notification_control/notification_control.js');
|
||||
// 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()});
|
||||
|
@ -102,8 +102,9 @@ erpnext.GeneralLedger = wn.views.GridReport.extend({
|
||||
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();
|
||||
});
|
||||
|
@ -53,7 +53,7 @@ cur_frm.cscript.employee = function(doc,cdt,cdn){
|
||||
$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']);
|
||||
}
|
||||
});
|
||||
|
@ -89,6 +89,7 @@ class DocType:
|
||||
self.validate_fiscal_year()
|
||||
|
||||
def set_approver(self):
|
||||
errprint('here')
|
||||
ret={}
|
||||
approver_lst =[]
|
||||
emp_nm = self.get_employee_name()
|
||||
|
@ -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'
|
||||
}
|
||||
]
|
@ -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'
|
||||
}
|
||||
]
|
@ -30,10 +30,7 @@ def execute():
|
||||
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()
|
0
patches/october_2012/__init__.py
Normal file
0
patches/october_2012/__init__.py
Normal file
39
patches/october_2012/update_permission.py
Normal file
39
patches/october_2012/update_permission.py
Normal file
@ -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()
|
@ -607,4 +607,8 @@ patch_list = [
|
||||
'patch_module': 'patches.september_2012',
|
||||
'patch_file': 'profile_delete_permission',
|
||||
},
|
||||
{
|
||||
'patch_module': 'patches.october_2012',
|
||||
'patch_file': 'update_permission',
|
||||
},
|
||||
]
|
||||
|
@ -59,17 +59,11 @@ cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
|
@ -42,13 +42,21 @@ class DocType(TransactionBase):
|
||||
self.fname = 'enq_details'
|
||||
self.tname = 'Opportunity Item'
|
||||
|
||||
# Autoname
|
||||
# ====================================================================================================================
|
||||
def autoname(self):
|
||||
self.doc.name = make_autoname(self.doc.naming_series+'.####')
|
||||
|
||||
#--------Get customer address-------
|
||||
# ====================================================================================================================
|
||||
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
|
||||
|
||||
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:
|
||||
@ -72,8 +80,6 @@ class DocType(TransactionBase):
|
||||
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 @@ class DocType(TransactionBase):
|
||||
}
|
||||
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 @@ class DocType(TransactionBase):
|
||||
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):
|
||||
@ -143,15 +143,11 @@ class DocType(TransactionBase):
|
||||
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 @@ class DocType(TransactionBase):
|
||||
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 @@ class DocType(TransactionBase):
|
||||
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 @@ class DocType(TransactionBase):
|
||||
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')
|
||||
|
@ -37,7 +37,7 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
||||
// 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 @@ cur_frm.cscript.customer = function(doc,dt,dn) {
|
||||
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 @@ cur_frm.cscript.pull_quotation_details = function(doc,dt,dn) {
|
||||
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();
|
||||
}
|
||||
|
@ -19,29 +19,29 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,8 +118,7 @@ def check_if_expired():
|
||||
|
||||
# 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
|
||||
|
@ -106,6 +106,7 @@ cur_frm.fields_dict['item_group'].get_query = function(doc,cdt,cdn) {
|
||||
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];
|
||||
|
@ -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
|
||||
},
|
||||
|
||||
@ -308,98 +282,10 @@
|
||||
'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
|
||||
'role': u'All'
|
||||
}
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user