Merge branch 'shf_rename'

Conflicts:
	erpnext/patches/patch_list.py
This commit is contained in:
Nabin Hait
2012-05-21 15:48:21 +05:30
17 changed files with 714 additions and 650 deletions

View File

@@ -136,7 +136,7 @@ class DocType:
# check if child exists # check if child exists
# ================================================================== # ==================================================================
def check_if_child_exists(self): def check_if_child_exists(self):
return sql("select name from `tabAccount` where parent_account = %s and docstatus != 2", self.doc.name, debug=0) return sql("select name from `tabAccount` where parent_account = %s and docstatus != 2", self.doc.name)
# Update balance # Update balance
# ================================================================== # ==================================================================

View File

@@ -98,7 +98,13 @@ class DocType(TransactionBase):
# Get Account Head to which amount needs to be Debited based on Customer # Get Account Head to which amount needs to be Debited based on Customer
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
def get_customer_account(self): def get_customer_account(self):
acc_head = webnotes.conn.sql("select name from `tabAccount` where (name = %s or (master_name = %s and master_type = 'customer')) and docstatus != 2", (cstr(self.doc.customer) + " - " + self.get_company_abbr(),self.doc.customer)) if not self.doc.company:
msgprint("Please select company first and re-select the customer after doing so", raise_exception=1)
acc_head = webnotes.conn.sql("""select name from `tabAccount`
where (name = %s or (master_name = %s and master_type = 'customer')) and docstatus != 2""",
(cstr(self.doc.customer) + " - " + self.get_company_abbr(),self.doc.customer))
if acc_head and acc_head[0][0]: if acc_head and acc_head[0][0]:
return acc_head[0][0] return acc_head[0][0]
else: else:

View File

@@ -73,7 +73,7 @@ aging_based_on = 'Aging Date'
if filter_values.has_key('aging_based_on') and filter_values['aging_based_on']: if filter_values.has_key('aging_based_on') and filter_values['aging_based_on']:
aging_based_on = filter_values['aging_based_on'].split(NEWLINE)[-1] aging_based_on = filter_values['aging_based_on'].split(NEWLINE)[-1]
if len(res) > 600 and from_export == 0: if len(res) > 2000 and from_export == 0:
msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel")
raise Exception raise Exception

View File

@@ -68,7 +68,7 @@ for d in data:
# ageing based on # ageing based on
aging_based_on = filter_values.get('aging_based_on') and filter_values['aging_based_on'].split(NEWLINE)[-1] or 'Aging Date' aging_based_on = filter_values.get('aging_based_on') and filter_values['aging_based_on'].split(NEWLINE)[-1] or 'Aging Date'
if len(res) > 600 and from_export == 0: if len(res) > 2000 and from_export == 0:
msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel")
raise Exception raise Exception

View File

@@ -130,16 +130,6 @@ cur_frm.fields_dict['indent_no'].get_query = function(doc) {
return 'SELECT DISTINCT `tabPurchase Request`.`name` FROM `tabPurchase Request` WHERE `tabPurchase Request`.company = "' + doc.company + '" and `tabPurchase Request`.`docstatus` = 1 and `tabPurchase Request`.`status` != "Stopped" and ifnull(`tabPurchase Request`.`per_ordered`,0) < 100 and `tabPurchase Request`.%(key)s LIKE "%s" ORDER BY `tabPurchase Request`.`name` DESC LIMIT 50'; return 'SELECT DISTINCT `tabPurchase Request`.`name` FROM `tabPurchase Request` WHERE `tabPurchase Request`.company = "' + doc.company + '" and `tabPurchase Request`.`docstatus` = 1 and `tabPurchase Request`.`status` != "Stopped" and ifnull(`tabPurchase Request`.`per_ordered`,0) < 100 and `tabPurchase Request`.%(key)s LIKE "%s" ORDER BY `tabPurchase Request`.`name` DESC LIMIT 50';
} }
/*
//*********** get approved supplier quotation ********************
cur_frm.fields_dict['supplier_qtn'].get_query = function(doc) {
var cond='';
if(doc.supplier) cond = 'ifnull(`tabSupplier Quotation`.supplier, "") = "'+doc.supplier+'" and';
return repl('SELECT DISTINCT `tabSupplier Quotation`.`name` FROM `tabSupplier Quotation` WHERE `tabSupplier Quotation`.company = "%(company)s" and`tabSupplier Quotation`.`docstatus` = 1 and `tabSupplier Quotation`.`approval_status` = "Approved" and %(cond)s `tabSupplier Quotation`.%(key)s LIKE "%s" ORDER BY `tabSupplier Quotation`.`name` DESC LIMIT 50', {company:doc.company,cond:cond});
}
*/
//========================= Get Last Purhase Rate ===================================== //========================= Get Last Purhase Rate =====================================
cur_frm.cscript.get_last_purchase_rate = function(doc, cdt, cdn){ cur_frm.cscript.get_last_purchase_rate = function(doc, cdt, cdn){

View File

@@ -39,15 +39,12 @@ class DocType:
#========================================================================== #==========================================================================
def get_att_list(self): def get_att_list(self):
lst = [['Attendance','','','Please fill columns which are Mandatory.',' Please do not modify the structure','',''],['','','','','','',''],['[Mandatory]','','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]'],['Employee','Employee Name','Attendance Date','Status','Fiscal Year','Company','Naming Series']] lst = [['Attendance','','','Please fill columns which are Mandatory.',' Please do not modify the structure','',''],['','','','','','',''],['[Mandatory]','','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]'],['Employee','Employee Name','Attendance Date','Status','Fiscal Year','Company','Naming Series']]
dt = self.date_diff_list() # get date list inbetween from date and to date dt = self.date_diff_list() # get date list inbetween from date and to date
att_dt = self.get_att_data() # get default attendance data like fiscal yr, company, naming series att_dt = self.get_att_data() # get default attendance data like fiscal yr, company, naming series
fy, comp, sr = att_dt['fy'], att_dt['comp'], att_dt['sr'] fy, comp, sr = att_dt['fy'], att_dt['comp'], att_dt['sr']
res = sql("select name, employee_name from `tabEmployee` where status = 'Active' and docstatus !=2") res = sql("select name, employee_name from `tabEmployee` where status = 'Active' and docstatus !=2")
for d in dt: for d in dt:
@@ -77,19 +74,18 @@ class DocType:
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
def get_att_data(self): def get_att_data(self):
fy = get_defaults()['fiscal_year'] #get default fiscal year fy = get_defaults()['fiscal_year'] #get default fiscal year
comp = get_defaults()['company'] #get default company comp = get_defaults()['company'] #get default company
#get naming series of attendance #get naming series of attendance
#sr = sql("select series_options from `tabNaming Series Options` where doc_type='Attendance'") import webnotes.model.doctype
sr = sql("select options from `tabDocField` where parent = 'Attendance' and fieldname = 'naming_series'") docfield = webnotes.model.doctype.get('Attendance')
if not sr: series = [d.options for d in docfield if d.doctype == 'DocField' and d.fieldname == 'naming_series']
msgprint("Please create naming series for Attendance.\nGo to Setup--> Manage Series.") if not series:
msgprint("Please create naming series for Attendance.\nGo to Setup--> Numbering Series.")
raise Exception raise Exception
else: else:
sr = sr and sr[0][0] sr = series[0][0] or ''
return {'fy':fy,'comp':comp,'sr':sr} return {'fy':fy,'comp':comp,'sr':sr}

View File

@@ -0,0 +1,3 @@
def execute():
import webnotes
webnotes.conn.sql("delete from __SessionCache")

View File

@@ -377,5 +377,10 @@ patch_list = [
'patch_file': 'cs_server_readonly', 'patch_file': 'cs_server_readonly',
'description': 'Make server custom script readonly for system manager' 'description': 'Make server custom script readonly for system manager'
}, },
{
'patch_module': 'patches.may_2012',
'patch_file': 'clear_session_cache',
'description': 'clears session cache as shifting to json format'
},
] ]

View File

@@ -50,10 +50,6 @@ class DocType:
chk = chk and chk[0][0] or '' chk = chk and chk[0][0] or ''
return cstr(chk) return cstr(chk)
# Gets states belonging cto country selected
# =====================================================================
#def check_state(self):
# return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
# Get item detail (will be removed later) # Get item detail (will be removed later)
#======================================= #=======================================
@@ -71,18 +67,6 @@ class DocType:
def validate(self): def validate(self):
import string import string
# Get Address
# ======================================================================
#if (self.doc.address_line1) or (self.doc.address_line2) or (self.doc.city) or (self.doc.state) or (self.doc.country) or (self.doc.pincode):
# address =["address_line1", "address_line2", "city", "state", "country", "pincode"]
# comp_address=''
# for d in address:
# if self.doc.fields[d]:
# comp_address += self.doc.fields[d] + "\n"
# if self.doc.website:
# comp_address += "Website : "+ self.doc.website
# self.doc.address = comp_address
if self.doc.status == 'Lead Lost' and not self.doc.order_lost_reason: if self.doc.status == 'Lead Lost' and not self.doc.order_lost_reason:
msgprint("Please Enter Quotation Lost Reason") msgprint("Please Enter Quotation Lost Reason")
raise Exception raise Exception
@@ -96,16 +80,6 @@ class DocType:
msgprint('Please enter valid email id.') msgprint('Please enter valid email id.')
raise Exception raise Exception
if not self.doc.naming_series:
if session['user'] == 'Guest':
so = sql("select options from `tabDocField` where parent = 'Lead' and fieldname = 'naming_series'")
#so = sql("select series_options from `tabNaming Series Options` where doc_type='Lead'")
if so:
sr = so[0][0].split("\n")
set(self.doc, 'naming_series', sr[0])
else:
msgprint("Please specify naming series")
raise Exception
def on_update(self): def on_update(self):
# Add to calendar # Add to calendar
@@ -119,10 +93,11 @@ class DocType:
if not self.doc.naming_series: if not self.doc.naming_series:
if session['user'] == 'Guest': if session['user'] == 'Guest':
#so = sql("select series_options from `tabNaming Series Options` where doc_type='Lead'") import webnotes.model.doctype
so = sql("select options from `tabDocField` where parent = 'Lead' and fieldname = 'naming_series'") docfield = webnotes.model.doctype.get('Lead')
if so: series = [d.options for d in docfield if d.doctype == 'DocField' and d.fieldname == 'naming_series']
sr = so[0][0].split("\n") if series:
sr = series[0].split("\n")
set(self.doc, 'naming_series', sr[0]) set(self.doc, 'naming_series', sr[0])
else: else:
msgprint("Please specify naming series") msgprint("Please specify naming series")
@@ -136,27 +111,26 @@ class DocType:
subject = 'Thank you for interest in erpnext' subject = 'Thank you for interest in erpnext'
sendmail([self.doc.email_id.strip(' ')], sender = sender_email[0][0], subject = subject , parts = [['text/html', self.get_notification_msg()]]) sendmail([self.doc.email_id.strip(' ')], sender = sender_email[0][0], subject = subject , parts = [['text/html', self.get_notification_msg()]])
#sendmail(cc_list, sender = sender_email[0][0], subject = subject , parts = [['text/html', message]],attach=attach_list)
msgprint("Mail Sent") msgprint("Mail Sent")
def get_notification_msg(self): def get_notification_msg(self):
t = """ t = """
<html> <html>
<body> <body>
Dear %s,<br><br> Dear %s,<br><br>
Thank you for contacting us.<br><br> Thank you for contacting us.<br><br>
You have left following message for us,<br> You have left following message for us,<br>
%s %s
<br><br> <br><br>
You will receive reply on this shortly.<br><br> You will receive reply on this shortly.<br><br>
Cheers! Cheers!
</body> </body>
</html> </html>
""" % (self.doc.lead_name, self.doc.remark) """ % (self.doc.lead_name, self.doc.remark)
return t return t

View File

@@ -432,6 +432,7 @@ class DocType(TransactionBase):
# ------------------ # ------------------
def make_packing_list(self, obj, fname): def make_packing_list(self, obj, fname):
self.packing_list_idx = 0 self.packing_list_idx = 0
parent_items = []
for d in getlist(obj.doclist, fname): for d in getlist(obj.doclist, fname):
warehouse = fname == "sales_order_details" and d.reserved_warehouse or d.warehouse warehouse = fname == "sales_order_details" and d.reserved_warehouse or d.warehouse
if self.has_sales_bom(d.item_code): if self.has_sales_bom(d.item_code):
@@ -439,6 +440,16 @@ class DocType(TransactionBase):
self.update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), warehouse, d) self.update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), warehouse, d)
else: else:
self.update_packing_list_item(obj, d.item_code, d.qty, warehouse, d) self.update_packing_list_item(obj, d.item_code, d.qty, warehouse, d)
if d.item_code not in parent_items:
parent_items.append(d.item_code)
self.cleanup_packing_list(obj, parent_items)
def cleanup_packing_list(self, obj, parent_items):
"""Remove all those parent items which are no longer present in main item table"""
for d in getlist(obj.doclist, 'packing_details'):
if d.parent_item not in parent_items:
d.parent = ''
# Get total in words # Get total in words

View File

@@ -60,6 +60,15 @@ class DocType:
def on_trash(self): def on_trash(self):
cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s", self.doc.name) cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s", self.doc.name)
cust = [d[0] for d in cust]
if cust: if cust:
msgprint("""Customer Group: %s can not be trashed/deleted because it is used in customer: %s. msgprint("""Customer Group: %s can not be trashed/deleted because it is used in customer: %s.
To trash/delete this, remove/change customer group in customer master""" % (self.doc.name, cust[0][0] or ''), raise_exception=1) To trash/delete this, remove/change customer group in customer master""" % (self.doc.name, cust or ''), raise_exception=1)
if sql("select name from `tabCustomer Group` where parent_customer_group = %s and docstatus != 2", self.doc.name):
msgprint("Child customer group exists for this customer group. You can not trash/cancel/delete this customer group.", raise_exception=1)
# rebuild tree
webnotes.conn.set(self.doc,'old_parent', '')
self.update_nsm_model()

View File

@@ -63,7 +63,17 @@ class DocType:
raise Exception raise Exception
def on_trash(self): def on_trash(self):
ig = sql("select name from `tabItem` where ifnull(item_group, '') = %s", self.doc.name) item = sql("select name from `tabItem` where ifnull(item_group, '') = %s", self.doc.name)
item = [d[0] for d in item]
if ig: if ig:
msgprint("""Item Group: %s can not be trashed/deleted because it is used in item: %s. msgprint("""Item Group: %s can not be trashed/deleted because it is used in item: %s.
To trash/delete this, remove/change item group in item master""" % (self.doc.name, ig[0][0] or ''), raise_exception=1) To trash/delete this, remove/change item group in item master""" % (self.doc.name, item or ''), raise_exception=1)
if sql("select name from `tabItem Group` where parent_item_group = %s and docstatus != 2", self.doc.name):
msgprint("Child item group exists for this item group. You can not trash/cancel/delete this item group.", raise_exception=1)
# rebuild tree
set(self.doc,'old_parent', '')
self.update_nsm_model()

View File

@@ -21,7 +21,7 @@ from webnotes.model.doc import Document
from webnotes.model.doclist import getlist from webnotes.model.doclist import getlist
from webnotes.model.code import get_obj from webnotes.model.code import get_obj
from webnotes import session, form, is_testing, msgprint, errprint from webnotes import session, form, is_testing, msgprint, errprint
from webnotes.utils import flt from webnotes.utils import flt, cstr
sql = webnotes.conn.sql sql = webnotes.conn.sql
convert_to_lists = webnotes.conn.convert_to_lists convert_to_lists = webnotes.conn.convert_to_lists
@@ -78,3 +78,18 @@ class DocType:
d.is_sales_person = 1 d.is_sales_person = 1
d.save(new = (not d.name)) d.save(new = (not d.name))
def on_trash(self):
st = sql("select parent, parenttype from `tabSales Team` where ifnull(sales_person, '') = %s and docstatus != 2", self.doc.name)
st = [(d[1] + ' : ' + d[0]) for d in st]
if st:
msgprint("""Sales Person: %s can not be trashed/deleted because it is used in %s.
To trash/delete this, remove/change sales person in %s""" % (self.doc.name, st or '', st or ''), raise_exception=1)
if sql("select name from `tabSales Person` where parent_sales_person = %s and docstatus != 2", self.doc.name):
msgprint("Child sales person exists for this sales person. You can not trash/cancel this sales person.", raise_exception=1)
# rebuild tree
webnotes.conn.set(self.doc,'old_parent', '')
self.update_nsm_model()

View File

@@ -78,7 +78,17 @@ class DocType:
def on_trash(self): def on_trash(self):
terr = sql("select name from `tabCustomer` where ifnull(territory, '') = %s", self.doc.name) cust = sql("select name from `tabCustomer` where ifnull(territory, '') = %s", self.doc.name)
if terr: cust = [d[0] for d in cust]
msgprint("""Territory: %s can not be trashed/deleted because it is used in territory: %s.
To trash/delete this, remove/change territory in customer master""" % (self.doc.name, terr[0][0] or ''), raise_exception=1) if cust:
msgprint("""Territory: %s can not be trashed/deleted because it is used in customer: %s.
To trash/delete this, remove/change territory in customer master""" % (self.doc.name, cust or ''), raise_exception=1)
if sql("select name from `tabTerritory` where parent_territory = %s and docstatus != 2", self.doc.name):
msgprint("Child territory exists for this territory. You can not trash/cancel/delete this territory.", raise_exception=1)
# rebuild tree
set(self.doc,'old_parent', '')
self.update_nsm_model()

View File

@@ -17,13 +17,13 @@
cur_frm.cscript.onload = function(doc,cdt,cdn){ cur_frm.cscript.onload = function(doc,cdt,cdn){
if(!doc.status) set_multiple(dt,dn,{status:'Open'}); if(!doc.status) set_multiple(dt,dn,{status:'Open'});
if(doc.__islocal){ if(doc.__islocal){
hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']); hide_field(['customer_address','contact_person']);
} }
} }
cur_frm.cscript.refresh = function(doc,ct,cdn){ cur_frm.cscript.refresh = function(doc,ct,cdn){
if(!doc.docstatus) hide_field('make_maintenance_visit'); if(doc.docstatus == 1 && (doc.status == 'Open' || doc.status == 'Work In Progress'))
else if(doc.docstatus && (doc.status == 'Open' || doc.status == 'Work In Progress')) unhide_field('make_maintenance_visit'); cur_frm.add_custom_button('Make Maintenance Visit', cur_frm.cscript['Make Maintenance Visit']);
} }
@@ -35,11 +35,13 @@ cur_frm.cscript.customer = function(doc,dt,dn) {
} }
if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_address', '', callback); if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_address', '', callback);
if(doc.customer) unhide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']); if(doc.customer) unhide_field(['customer_address','contact_person']);
} }
cur_frm.cscript.customer_address = cur_frm.cscript.contact_person = function(doc,dt,dn) { cur_frm.cscript.customer_address = cur_frm.cscript.contact_person = function(doc,dt,dn) {
if(doc.customer) get_server_fields('get_customer_address', JSON.stringify({customer: doc.customer, address: doc.customer_address, contact: doc.contact_person}),'', doc, dt, dn, 1); if(doc.customer)
get_server_fields('get_customer_address',
JSON.stringify({customer: doc.customer, address: doc.customer_address, contact: doc.contact_person}),'', doc, dt, dn, 1);
} }
cur_frm.fields_dict.customer_address.on_new = function(dn) { cur_frm.fields_dict.customer_address.on_new = function(dn) {
@@ -53,17 +55,18 @@ cur_frm.fields_dict.contact_person.on_new = function(dn) {
} }
cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) { cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
return 'SELECT name,address_line1,city FROM tabAddress WHERE customer = "'+ doc.customer +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; return 'SELECT name,address_line1,city FROM tabAddress WHERE customer = "'+ doc.customer +
'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
} }
cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) { cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation FROM tabContact WHERE customer = "'+ doc.customer +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50'; return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation \
FROM tabContact WHERE customer = "' + doc.customer +
'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
} }
cur_frm.cscript['Make Maintenance Visit'] = function() {
var doc = cur_frm.doc;
cur_frm.cscript.make_maintenance_visit = function(doc, cdt, cdn) {
if (doc.docstatus == 1) { if (doc.docstatus == 1) {
$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','', $c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
function(r,rt){ function(r,rt){
@@ -75,13 +78,10 @@ cur_frm.cscript.make_maintenance_visit = function(doc, cdt, cdn) {
'to_doctype':'Maintenance Visit', 'to_doctype':'Maintenance Visit',
'from_docname':doc.name, 'from_docname':doc.name,
'from_to_list':"[['Customer Issue', 'Maintenance Visit'], ['Customer Issue', 'Maintenance Visit Purpose']]" 'from_to_list':"[['Customer Issue', 'Maintenance Visit'], ['Customer Issue', 'Maintenance Visit Purpose']]"
} }, function(r,rt) {
, function(r,rt) {
loaddoc("Maintenance Visit", n); loaddoc("Maintenance Visit", n);
} });
); } else{
}
else{
msgprint("You have already completed maintenance against this Customer Issue"); msgprint("You have already completed maintenance against this Customer Issue");
} }
} }
@@ -96,7 +96,11 @@ cur_frm.cscript.make_maintenance_visit = function(doc, cdt, cdn) {
cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) { cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
var cond = ''; var cond = '';
if(doc.item_code) cond = ' AND `tabSerial No`.item_code = "'+ doc.item_code +'"'; if(doc.item_code) cond = ' AND `tabSerial No`.item_code = "'+ doc.item_code +'"';
return 'SELECT `tabSerial No`.name, `tabSerial No`.description FROM `tabSerial No` WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name LIKE "%s" '+cond+' ORDER BY `tabSerial No`.name ASC LIMIT 50'; if(doc.customer) cond += ' AND `tabSerial No`.customer = "' + doc.customer + '"';
return 'SELECT `tabSerial No`.name, `tabSerial No`.description \
FROM `tabSerial No` \
WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.status = "Delivered" \
AND `tabSerial No`.name LIKE "%s" ' + cond + ' ORDER BY `tabSerial No`.name ASC LIMIT 50';
} }
cur_frm.add_fetch('serial_no', 'item_code', 'item_code'); cur_frm.add_fetch('serial_no', 'item_code', 'item_code');
@@ -105,19 +109,26 @@ cur_frm.add_fetch('serial_no', 'description', 'description');
cur_frm.add_fetch('serial_no', 'maintenance_status', 'warranty_amc_status'); cur_frm.add_fetch('serial_no', 'maintenance_status', 'warranty_amc_status');
cur_frm.add_fetch('serial_no', 'warranty_expiry_date', 'warranty_expiry_date'); cur_frm.add_fetch('serial_no', 'warranty_expiry_date', 'warranty_expiry_date');
cur_frm.add_fetch('serial_no', 'amc_expiry_date', 'amc_expiry_date'); cur_frm.add_fetch('serial_no', 'amc_expiry_date', 'amc_expiry_date');
cur_frm.add_fetch('serial_no', 'customer', 'customer'); if (cstr(doc.customer) == '') {
cur_frm.add_fetch('serial_no', 'customer_name', 'customer_name'); cur_frm.add_fetch('serial_no', 'customer', 'customer');
cur_frm.add_fetch('serial_no', 'delivery_address', 'customer_address'); cur_frm.add_fetch('serial_no', 'customer_name', 'customer_name');
cur_frm.add_fetch('serial_no', 'delivery_address', 'customer_address');
}
// ---------- // ----------
// item code // item code
// ---------- // ----------
cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) { cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) {
if(doc.serial_no){ if(doc.serial_no) {
return 'SELECT `tabSerial No`.item_code, `tabSerial No`.description FROM `tabSerial No` WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name = "'+ doc.serial_no +'" AND `tabSerial No`.item_code LIKE "%s" ORDER BY `tabSerial No`.item_code ASC LIMIT 50'; return 'SELECT `tabSerial No`.item_code, `tabSerial No`.description \
FROM `tabSerial No` \
WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name = "' + doc.serial_no +
'" AND `tabSerial No`.item_code LIKE "%s" ORDER BY `tabSerial No`.item_code ASC LIMIT 50';
} }
else{ else{
return 'SELECT `tabItem`.name, `tabItem`.item_name, `tabItem`.description FROM `tabItem` WHERE `tabItem`.docstatus != 2 AND `tabItem`.name LIKE "%s" ORDER BY `tabItem`.name ASC LIMIT 50'; return 'SELECT `tabItem`.name, `tabItem`.item_name, `tabItem`.description \
FROM `tabItem` \
WHERE `tabItem`.docstatus != 2 AND `tabItem`.name LIKE "%s" ORDER BY `tabItem`.name ASC LIMIT 50';
} }
} }
@@ -128,5 +139,8 @@ cur_frm.add_fetch('item_code', 'description', 'description');
//get query select Territory //get query select Territory
//======================================================================================================================= //=======================================================================================================================
cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) { cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY `tabTerritory`.`name` ASC LIMIT 50'; return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` \
FROM `tabTerritory` \
WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 \
AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY `tabTerritory`.`name` ASC LIMIT 50';
} }

View File

@@ -39,10 +39,8 @@ class DocType(TransactionBase):
def __init__(self, doc, doclist=[]): def __init__(self, doc, doclist=[]):
self.doc = doc self.doc = doc
self.doclist = doclist self.doclist = doclist
self.prefix = is_testing and 'test' or 'tab'
def autoname(self): def autoname(self):
#self.doc.name = make_autoname('CI/' + self.doc.fiscal_year + '/.######')
self.doc.name = make_autoname(self.doc.naming_series + '.######') self.doc.name = make_autoname(self.doc.naming_series + '.######')
#check if maintenance schedule already generated #check if maintenance schedule already generated
@@ -64,12 +62,7 @@ class DocType(TransactionBase):
if session['user'] != 'Guest' and not self.doc.customer: if session['user'] != 'Guest' and not self.doc.customer:
msgprint("Please select Customer from whom issue is raised") msgprint("Please select Customer from whom issue is raised")
raise Exception raise Exception
#if not self.doc.email_id and not self.doc.contact_no:
# msgprint("Please specify contact no. and/or email_id")
# raise Exception
#elif self.doc.email_id and not validate_email_add(self.doc.email_id.strip(' ')):
# msgprint('error:%s is not a valid email id' % self.doc.email_id)
# raise Exception
def on_cancel(self): def on_cancel(self):
lst = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent = t1.name and t2.prevdoc_docname = '%s' and t1.docstatus!=2"%(self.doc.name)) lst = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent = t1.name and t2.prevdoc_docname = '%s' and t1.docstatus!=2"%(self.doc.name))

View File

@@ -3,9 +3,9 @@
# These values are common in all dictionaries # These values are common in all dictionaries
{ {
'creation': '2012-03-27 14:36:40', 'creation': '2012-04-13 11:56:39',
'docstatus': 0, 'docstatus': 0,
'modified': '2012-03-27 14:45:47', 'modified': '2012-05-18 17:04:36',
'modified_by': u'Administrator', 'modified_by': u'Administrator',
'owner': u'harshada@webnotestech.com' 'owner': u'harshada@webnotestech.com'
}, },
@@ -25,7 +25,7 @@
'show_in_menu': 0, 'show_in_menu': 0,
'subject': u'%(complaint)s By %(complaint_raised_by)s on %(issue_date)s', 'subject': u'%(complaint)s By %(complaint_raised_by)s on %(issue_date)s',
'tag_fields': u'status', 'tag_fields': u'status',
'version': 97 'version': 1
}, },
# These values are common for all DocField # These values are common for all DocField
@@ -53,6 +53,15 @@
'name': u'Customer Issue' 'name': u'Customer Issue'
}, },
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'role': u'Guest',
'write': 1
},
# DocPerm # DocPerm
{ {
'amend': 1, 'amend': 1,
@@ -110,21 +119,12 @@
'role': u'Maintenance User' 'role': u'Maintenance User'
}, },
# DocPerm
{
'create': 1,
'doctype': u'DocPerm',
'permlevel': 0,
'role': u'Guest',
'write': 1
},
# DocField # DocField
{ {
'doctype': u'DocField', 'doctype': u'DocField',
'fieldname': u'customer_issue', 'fieldname': u'basic_info',
'fieldtype': u'Section Break', 'fieldtype': u'Section Break',
'label': u'Customer Issue', 'label': u'Basic Info',
'oldfieldtype': u'Section Break', 'oldfieldtype': u'Section Break',
'permlevel': 0 'permlevel': 0
}, },
@@ -145,24 +145,6 @@
'search_index': 0 'search_index': 0
}, },
# DocField
{
'colour': u'White:FFF',
'default': u'Open',
'doctype': u'DocField',
'fieldname': u'status',
'fieldtype': u'Select',
'in_filter': 1,
'label': u'Status',
'no_copy': 1,
'oldfieldname': u'status',
'oldfieldtype': u'Select',
'options': u'\nOpen\nClosed\nWork In Progress\nCancelled',
'permlevel': 0,
'reqd': 1,
'search_index': 1
},
# DocField # DocField
{ {
'default': u'Today', 'default': u'Today',
@@ -178,39 +160,6 @@
'search_index': 1 'search_index': 1
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'complaint_raised_by',
'fieldtype': u'Data',
'label': u'Raised By',
'oldfieldname': u'complaint_raised_by',
'oldfieldtype': u'Data',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'from_company',
'fieldtype': u'Data',
'label': u'From Company',
'oldfieldname': u'from_company',
'oldfieldtype': u'Data',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'service_address',
'fieldtype': u'Small Text',
'label': u'Service Address',
'oldfieldname': u'service_address',
'oldfieldtype': u'Small Text',
'permlevel': 0
},
# DocField # DocField
{ {
'doctype': u'DocField', 'doctype': u'DocField',
@@ -261,144 +210,6 @@
'print_hide': 1 'print_hide': 1
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'customer_name',
'fieldtype': u'Data',
'label': u'Name',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'address_display',
'fieldtype': u'Small Text',
'label': u'Address',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_display',
'fieldtype': u'Small Text',
'label': u'Contact',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_mobile',
'fieldtype': u'Data',
'label': u'Mobile No',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_email',
'fieldtype': u'Data',
'label': u'Contact Email',
'permlevel': 1
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'territory',
'fieldtype': u'Link',
'in_filter': 1,
'label': u'Territory',
'oldfieldname': u'territory',
'oldfieldtype': u'Link',
'options': u'Territory',
'permlevel': 0,
'print_hide': 1,
'reqd': 0,
'search_index': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'customer_group',
'fieldtype': u'Link',
'label': u'Customer Group',
'options': u'Customer Group',
'permlevel': 0,
'print_hide': 1,
'reqd': 0
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'company',
'fieldtype': u'Link',
'in_filter': 1,
'label': u'Company',
'oldfieldname': u'company',
'oldfieldtype': u'Link',
'options': u'Company',
'permlevel': 0,
'print_hide': 1,
'reqd': 1,
'search_index': 1,
'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'fiscal_year',
'fieldtype': u'Select',
'in_filter': 1,
'label': u'Fiscal Year',
'oldfieldname': u'fiscal_year',
'oldfieldtype': u'Select',
'options': u'link:Fiscal Year',
'permlevel': 0,
'print_hide': 1,
'reqd': 1,
'search_index': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amended_from',
'fieldtype': u'Data',
'hidden': 1,
'label': u'Amended From',
'no_copy': 1,
'oldfieldname': u'amended_from',
'oldfieldtype': u'Data',
'permlevel': 0,
'print_hide': 1,
'width': u'150px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amendment_date',
'fieldtype': u'Date',
'hidden': 1,
'label': u'Amendment Date',
'no_copy': 1,
'oldfieldname': u'amendment_date',
'oldfieldtype': u'Date',
'permlevel': 0,
'print_hide': 1,
'width': u'100px'
},
# DocField # DocField
{ {
'doctype': u'DocField', 'doctype': u'DocField',
@@ -438,6 +249,29 @@
'trigger': u'Client' 'trigger': u'Client'
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'complaint',
'fieldtype': u'Small Text',
'label': u'Issue',
'no_copy': 1,
'oldfieldname': u'complaint',
'oldfieldtype': u'Small Text',
'permlevel': 0,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break1',
'fieldtype': u'Column Break',
'oldfieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField # DocField
{ {
'colour': u'White:FFF', 'colour': u'White:FFF',
@@ -465,29 +299,6 @@
'width': u'300px' 'width': u'300px'
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'complaint',
'fieldtype': u'Small Text',
'label': u'Issue',
'no_copy': 1,
'oldfieldname': u'complaint',
'oldfieldtype': u'Small Text',
'permlevel': 0,
'reqd': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'column_break1',
'fieldtype': u'Column Break',
'oldfieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField # DocField
{ {
'colour': u'White:FFF', 'colour': u'White:FFF',
@@ -519,6 +330,17 @@
'permlevel': 0 'permlevel': 0
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'resolution_section',
'fieldtype': u'Section Break',
'label': u'Resolution',
'oldfieldtype': u'Section Break',
'options': u'Simple',
'permlevel': 0
},
# DocField # DocField
{ {
'doctype': u'DocField', 'doctype': u'DocField',
@@ -546,29 +368,6 @@
'search_index': 1 'search_index': 1
}, },
# DocField
{
'doctype': u'DocField',
'fieldname': u'resolution_detail',
'fieldtype': u'Section Break',
'label': u'Resolution Detail',
'oldfieldtype': u'Section Break',
'options': u'Simple',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'resolution_details',
'fieldtype': u'Text',
'label': u'Resolution Details',
'no_copy': 1,
'oldfieldname': u'resolution_details',
'oldfieldtype': u'Text',
'permlevel': 0
},
# DocField # DocField
{ {
'doctype': u'DocField', 'doctype': u'DocField',
@@ -610,27 +409,256 @@
# DocField # DocField
{ {
'allow_on_submit': 0,
'colour': u'White:FFF',
'depends_on': u'eval:!doc.__islocal',
'doctype': u'DocField', 'doctype': u'DocField',
'fieldname': u'next_steps', 'fieldname': u'resolution_details',
'fieldtype': u'Section Break', 'fieldtype': u'Text',
'label': u'Next Steps', 'label': u'Resolution Details',
'oldfieldtype': u'Section Break', 'no_copy': 1,
'oldfieldname': u'resolution_details',
'oldfieldtype': u'Text',
'permlevel': 0 'permlevel': 0
}, },
# DocField # DocField
{ {
'allow_on_submit': 1, 'doctype': u'DocField',
'fieldname': u'contact_info',
'fieldtype': u'Section Break',
'label': u'Contact Info',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'col_break3',
'fieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'customer_name',
'fieldtype': u'Data',
'label': u'Customer Name',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'customer_group',
'fieldtype': u'Link',
'label': u'Customer Group',
'options': u'Customer Group',
'permlevel': 0,
'print_hide': 1,
'reqd': 0
},
# DocField
{
'colour': u'White:FFF', 'colour': u'White:FFF',
'doctype': u'DocField', 'doctype': u'DocField',
'fieldname': u'make_maintenance_visit', 'fieldname': u'territory',
'fieldtype': u'Button', 'fieldtype': u'Link',
'label': u'Make Maintenance Visit', 'in_filter': 1,
'oldfieldtype': u'Button', 'label': u'Territory',
'oldfieldname': u'territory',
'oldfieldtype': u'Link',
'options': u'Territory',
'permlevel': 0, 'permlevel': 0,
'print_hide': 1,
'reqd': 0,
'search_index': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'address_display',
'fieldtype': u'Small Text',
'label': u'Address',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'col_break4',
'fieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_display',
'fieldtype': u'Small Text',
'label': u'Contact',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_mobile',
'fieldtype': u'Data',
'label': u'Mobile No',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'contact_email',
'fieldtype': u'Data',
'label': u'Contact Email',
'permlevel': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'service_address',
'fieldtype': u'Small Text',
'label': u'Service Address',
'oldfieldname': u'service_address',
'oldfieldtype': u'Small Text',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'more_info',
'fieldtype': u'Section Break',
'label': u'More Info',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'col_break5',
'fieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField
{
'colour': u'White:FFF',
'doctype': u'DocField',
'fieldname': u'company',
'fieldtype': u'Link',
'in_filter': 1,
'label': u'Company',
'oldfieldname': u'company',
'oldfieldtype': u'Link',
'options': u'Company',
'permlevel': 0,
'print_hide': 1,
'reqd': 1,
'search_index': 1,
'trigger': u'Client' 'trigger': u'Client'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'fiscal_year',
'fieldtype': u'Select',
'in_filter': 1,
'label': u'Fiscal Year',
'oldfieldname': u'fiscal_year',
'oldfieldtype': u'Select',
'options': u'link:Fiscal Year',
'permlevel': 0,
'print_hide': 1,
'reqd': 1,
'search_index': 1
},
# DocField
{
'colour': u'White:FFF',
'default': u'Open',
'doctype': u'DocField',
'fieldname': u'status',
'fieldtype': u'Select',
'in_filter': 1,
'label': u'Status',
'no_copy': 1,
'oldfieldname': u'status',
'oldfieldtype': u'Select',
'options': u'\nOpen\nClosed\nWork In Progress\nCancelled',
'permlevel': 0,
'reqd': 1,
'search_index': 1
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'col_break6',
'fieldtype': u'Column Break',
'permlevel': 0,
'width': u'50%'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'complaint_raised_by',
'fieldtype': u'Data',
'label': u'Raised By',
'oldfieldname': u'complaint_raised_by',
'oldfieldtype': u'Data',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'from_company',
'fieldtype': u'Data',
'label': u'From Company',
'oldfieldname': u'from_company',
'oldfieldtype': u'Data',
'permlevel': 0
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amended_from',
'fieldtype': u'Data',
'hidden': 1,
'label': u'Amended From',
'no_copy': 1,
'oldfieldname': u'amended_from',
'oldfieldtype': u'Data',
'permlevel': 0,
'print_hide': 1,
'width': u'150px'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'amendment_date',
'fieldtype': u'Date',
'hidden': 1,
'label': u'Amendment Date',
'no_copy': 1,
'oldfieldname': u'amendment_date',
'oldfieldtype': u'Date',
'permlevel': 0,
'print_hide': 1,
'width': u'100px'
} }
] ]