fixed sr no in maintenance schedule
This commit is contained in:
parent
06720dfb90
commit
064d2ba16a
@ -5,34 +5,34 @@ wn.provide("erpnext.support");
|
|||||||
// TODO commonify this code
|
// TODO commonify this code
|
||||||
erpnext.support.MaintenanceSchedule = wn.ui.form.Controller.extend({
|
erpnext.support.MaintenanceSchedule = wn.ui.form.Controller.extend({
|
||||||
refresh: function() {
|
refresh: function() {
|
||||||
if (this.frm.doc.docstatus===0) {
|
if (this.frm.doc.docstatus === 0) {
|
||||||
cur_frm.add_custom_button(wn._('From Sales Order'),
|
this.frm.add_custom_button(wn._('From Sales Order'),
|
||||||
function() {
|
function() {
|
||||||
wn.model.map_current_doc({
|
wn.model.map_current_doc({
|
||||||
method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_schedule",
|
method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_schedule",
|
||||||
source_doctype: "Sales Order",
|
source_doctype: "Sales Order",
|
||||||
get_query_filters: {
|
get_query_filters: {
|
||||||
docstatus: 1,
|
docstatus: 1,
|
||||||
order_type: cur_frm.doc.order_type,
|
order_type: me.frm.doc.order_type,
|
||||||
customer: cur_frm.doc.customer || undefined,
|
customer: me.frm.doc.customer || undefined,
|
||||||
company: cur_frm.doc.company
|
company: me.frm.doc.company
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
} else if (this.frm.doc.docstatus===1) {
|
} else if (this.frm.doc.docstatus === 1) {
|
||||||
cur_frm.add_custom_button(wn._("Make Maintenance Visit"), function() {
|
this.frm.add_custom_button(wn._("Make Maintenance Visit"), function() {
|
||||||
wn.model.open_mapped_doc({
|
wn.model.open_mapped_doc({
|
||||||
method: "erpnext.support.doctype.maintenance_schedule.maintenance_schedule.make_maintenance_visit",
|
method: "erpnext.support.doctype.maintenance_schedule.maintenance_schedule.make_maintenance_visit",
|
||||||
source_name: cur_frm.doc.name
|
source_name: cur_frm.doc.name
|
||||||
})
|
})
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
customer: function() {
|
customer: function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
if(this.frm.doc.customer) {
|
if(this.frm.doc.customer) {
|
||||||
return this.frm.call({
|
return this.frm.call({
|
||||||
doc: this.frm.doc,
|
doc: me.frm.doc,
|
||||||
method: "set_customer_defaults",
|
method: "set_customer_defaults",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -42,70 +42,78 @@ erpnext.support.MaintenanceSchedule = wn.ui.form.Controller.extend({
|
|||||||
$.extend(cur_frm.cscript, new erpnext.support.MaintenanceSchedule({frm: cur_frm}));
|
$.extend(cur_frm.cscript, new erpnext.support.MaintenanceSchedule({frm: cur_frm}));
|
||||||
|
|
||||||
cur_frm.cscript.onload = function(doc, dt, dn) {
|
cur_frm.cscript.onload = function(doc, dt, dn) {
|
||||||
if(!doc.status) set_multiple(dt,dn,{status:'Draft'});
|
if(!doc.status)
|
||||||
|
set_multiple(dt, dn, { status:'Draft' });
|
||||||
|
|
||||||
if(doc.__islocal){
|
if (doc.__islocal) {
|
||||||
set_multiple(dt,dn,{transaction_date:get_today()});
|
set_multiple(dt, dn, { transaction_date:get_today() });
|
||||||
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', 'customer_name', 'address_display',
|
||||||
}
|
'contact_display', 'contact_mobile', 'contact_email', 'territory', 'customer_group']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) return 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) {
|
||||||
|
return 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'].get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
|
||||||
return{
|
return {
|
||||||
filters:{ 'customer': doc.customer}
|
filters:{ 'customer': doc.customer }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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{
|
return {
|
||||||
filters:{ 'customer': doc.customer}
|
filters:{ 'customer': doc.customer }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
cur_frm.fields_dict['item_maintenance_detail'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict['item_maintenance_detail'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
|
||||||
return{
|
return {
|
||||||
filters:{ 'is_service_item': "Yes"}
|
filters:{ 'is_service_item': "Yes" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.item_code = function(doc, cdt, cdn) {
|
cur_frm.cscript.item_code = function(doc, cdt, cdn) {
|
||||||
var fname = cur_frm.cscript.fname;
|
var fname = cur_frm.cscript.fname;
|
||||||
var d = locals[cdt][cdn];
|
var d = locals[cdt][cdn];
|
||||||
if (d.item_code) {
|
if (d.item_code) {
|
||||||
return get_server_fields('get_item_details',d.item_code, 'item_maintenance_detail',doc,cdt,cdn,1);
|
return get_server_fields('get_item_details', d.item_code, 'item_maintenance_detail',
|
||||||
}
|
doc, cdt, cdn, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.periodicity = function(doc, cdt, cdn){
|
cur_frm.cscript.periodicity = function(doc, cdt, cdn){
|
||||||
var d = locals[cdt][cdn];
|
var d = locals[cdt][cdn];
|
||||||
if(d.start_date && d.end_date){
|
if(d.start_date && d.end_date) {
|
||||||
arg = {}
|
arg = {}
|
||||||
arg.start_date = d.start_date;
|
arg.start_date = d.start_date;
|
||||||
arg.end_date = d.end_date;
|
arg.end_date = d.end_date;
|
||||||
arg.periodicity = d.periodicity;
|
arg.periodicity = d.periodicity;
|
||||||
return get_server_fields('get_no_of_visits',docstring(arg),'item_maintenance_detail',doc, cdt, cdn, 1);
|
return get_server_fields('get_no_of_visits', docstring(arg),
|
||||||
}
|
'item_maintenance_detail', doc, cdt, cdn, 1);
|
||||||
else{
|
} else {
|
||||||
msgprint(wn._("Please enter Start Date and End Date"));
|
msgprint(wn._("Please enter Start Date and End Date"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
|
cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
|
||||||
if (!doc.__islocal) {
|
if (!doc.__islocal) {
|
||||||
return $c('runserverobj', args={'method':'generate_schedule', 'docs':wn.model.compress(make_doclist(cdt,cdn))},
|
return $c('runserverobj', args={'method':'generate_schedule',
|
||||||
function(r,rt){
|
'docs':wn.model.compress(make_doclist(cdt,cdn))},
|
||||||
refresh_field('maintenance_schedule_detail');
|
function(r, rt) {
|
||||||
}
|
refresh_field('maintenance_schedule_detail');
|
||||||
);
|
});
|
||||||
} else {
|
} else {
|
||||||
alert(wn._("Please save the document before generating maintenance schedule"));
|
msgprint(wn._("Please save the document before generating maintenance schedule"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
|
cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
|
||||||
return{ query: "erpnext.controllers.queries.customer_query" } }
|
return { query: "erpnext.controllers.queries.customer_query" }
|
||||||
|
}
|
||||||
|
@ -7,10 +7,7 @@ import webnotes
|
|||||||
from webnotes.utils import add_days, cstr, getdate
|
from webnotes.utils import add_days, cstr, getdate
|
||||||
from webnotes.model.doc import addchild
|
from webnotes.model.doc import addchild
|
||||||
from webnotes.model.bean import getlist
|
from webnotes.model.bean import getlist
|
||||||
from webnotes import msgprint
|
from webnotes import msgprint, throw, _
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
from erpnext.utilities.transaction_base import TransactionBase, delete_events
|
from erpnext.utilities.transaction_base import TransactionBase, delete_events
|
||||||
|
|
||||||
class DocType(TransactionBase):
|
class DocType(TransactionBase):
|
||||||
@ -19,7 +16,8 @@ class DocType(TransactionBase):
|
|||||||
self.doclist = doclist
|
self.doclist = doclist
|
||||||
|
|
||||||
def get_item_details(self, item_code):
|
def get_item_details(self, item_code):
|
||||||
item = webnotes.conn.sql("select item_name, description from `tabItem` where name = '%s'" %(item_code), as_dict=1)
|
item = webnotes.conn.sql("""select item_name, description from `tabItem`
|
||||||
|
where name=%s""", (item_code), as_dict=1)
|
||||||
ret = {
|
ret = {
|
||||||
'item_name': item and item[0]['item_name'] or '',
|
'item_name': item and item[0]['item_name'] or '',
|
||||||
'description' : item and item[0]['description'] or ''
|
'description' : item and item[0]['description'] or ''
|
||||||
@ -28,11 +26,12 @@ class DocType(TransactionBase):
|
|||||||
|
|
||||||
def generate_schedule(self):
|
def generate_schedule(self):
|
||||||
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
|
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
|
||||||
count = 0
|
webnotes.conn.sql("""delete from `tabMaintenance Schedule Detail`
|
||||||
webnotes.conn.sql("delete from `tabMaintenance Schedule Detail` where parent='%s'" %(self.doc.name))
|
where parent=%s""", (self.doc.name))
|
||||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
self.validate_maintenance_detail()
|
self.validate_maintenance_detail()
|
||||||
s_list =[]
|
count = 1
|
||||||
|
s_list = []
|
||||||
s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits)
|
s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits)
|
||||||
for i in range(d.no_of_visits):
|
for i in range(d.no_of_visits):
|
||||||
child = addchild(self.doc, 'maintenance_schedule_detail',
|
child = addchild(self.doc, 'maintenance_schedule_detail',
|
||||||
@ -43,7 +42,7 @@ class DocType(TransactionBase):
|
|||||||
if d.serial_no:
|
if d.serial_no:
|
||||||
child.serial_no = d.serial_no
|
child.serial_no = d.serial_no
|
||||||
child.idx = count
|
child.idx = count
|
||||||
count = count+1
|
count = count + 1
|
||||||
child.incharge_name = d.incharge_name
|
child.incharge_name = d.incharge_name
|
||||||
child.save(1)
|
child.save(1)
|
||||||
|
|
||||||
@ -51,8 +50,7 @@ class DocType(TransactionBase):
|
|||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
if not getlist(self.doclist, 'maintenance_schedule_detail'):
|
if not getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||||
msgprint("Please click on 'Generate Schedule' to get schedule")
|
throw("Please click on 'Generate Schedule' to get schedule")
|
||||||
raise Exception
|
|
||||||
self.check_serial_no_added()
|
self.check_serial_no_added()
|
||||||
self.validate_serial_no_warranty()
|
self.validate_serial_no_warranty()
|
||||||
self.validate_schedule()
|
self.validate_schedule()
|
||||||
@ -66,9 +64,9 @@ class DocType(TransactionBase):
|
|||||||
email_map[d.incharge_name] = webnotes.bean("Sales Person",
|
email_map[d.incharge_name] = webnotes.bean("Sales Person",
|
||||||
d.incharge_name).run_method("get_email_id")
|
d.incharge_name).run_method("get_email_id")
|
||||||
|
|
||||||
scheduled_date =webnotes.conn.sql("select scheduled_date from `tabMaintenance Schedule Detail` \
|
scheduled_date =webnotes.conn.sql("""select scheduled_date from
|
||||||
where incharge_name='%s' and item_code='%s' and parent='%s' " %(d.incharge_name, \
|
`tabMaintenance Schedule Detail` where incharge_name=%s and item_code=%s and
|
||||||
d.item_code, self.doc.name), as_dict=1)
|
parent=%s""", (d.incharge_name, d.item_code, self.doc.name), as_dict=1)
|
||||||
|
|
||||||
for key in scheduled_date:
|
for key in scheduled_date:
|
||||||
if email_map[d.incharge_name]:
|
if email_map[d.incharge_name]:
|
||||||
@ -91,90 +89,80 @@ class DocType(TransactionBase):
|
|||||||
#----------------------
|
#----------------------
|
||||||
def create_schedule_list(self, start_date, end_date, no_of_visit):
|
def create_schedule_list(self, start_date, end_date, no_of_visit):
|
||||||
schedule_list = []
|
schedule_list = []
|
||||||
start_date1 = start_date
|
start_date_copy = start_date
|
||||||
date_diff = (getdate(end_date) - getdate(start_date)).days
|
date_diff = (getdate(end_date) - getdate(start_date)).days
|
||||||
add_by = date_diff/no_of_visit
|
add_by = date_diff / no_of_visit
|
||||||
#schedule_list.append(start_date1)
|
|
||||||
while(getdate(start_date1) < getdate(end_date)):
|
while (getdate(start_date_copy) < getdate(end_date)):
|
||||||
start_date1 = add_days(start_date1, add_by)
|
start_date_copy = add_days(start_date_copy, add_by)
|
||||||
if len(schedule_list) < no_of_visit:
|
if len(schedule_list) < no_of_visit:
|
||||||
schedule_list.append(getdate(start_date1))
|
schedule_list.append(getdate(start_date_copy))
|
||||||
return schedule_list
|
return schedule_list
|
||||||
|
|
||||||
#validate date range and periodicity selected
|
#validate date range and periodicity selected
|
||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
def validate_period(self, arg):
|
def validate_period(self, arg):
|
||||||
arg1 = eval(arg)
|
args = eval(arg)
|
||||||
if getdate(arg1['start_date']) >= getdate(arg1['end_date']):
|
if getdate(args['start_date']) >= getdate(args['end_date']):
|
||||||
msgprint("Start date should be less than end date ")
|
throw(_("Start date should be less than end date."))
|
||||||
raise Exception
|
|
||||||
|
|
||||||
period = (getdate(arg1['end_date'])-getdate(arg1['start_date'])).days+1
|
period = (getdate(args['end_date']) - getdate(args['start_date'])).days + 1
|
||||||
|
|
||||||
if (arg1['periodicity']=='Yearly' or arg1['periodicity']=='Half Yearly' or arg1['periodicity']=='Quarterly') and period<365:
|
if (args['periodicity'] == 'Yearly' or args['periodicity'] == 'Half Yearly' or
|
||||||
msgprint(cstr(arg1['periodicity'])+ " periodicity can be set for period of atleast 1 year or more only")
|
args['periodicity'] == 'Quarterly') and period < 365:
|
||||||
raise Exception
|
throw(cstr(args['periodicity']) + " periodicity can be set for period of atleast 1 year or more only")
|
||||||
elif arg1['periodicity']=='Monthly' and period<30:
|
elif args['periodicity'] == 'Monthly' and period < 30:
|
||||||
msgprint("Monthly periodicity can be set for period of atleast 1 month or more")
|
throw("Monthly periodicity can be set for period of atleast 1 month or more")
|
||||||
raise Exception
|
elif args['periodicity'] == 'Weekly' and period < 7:
|
||||||
elif arg1['periodicity']=='Weekly' and period<7:
|
throw("Weekly periodicity can be set for period of atleast 1 week or more")
|
||||||
msgprint("Weekly periodicity can be set for period of atleast 1 week or more")
|
|
||||||
raise Exception
|
|
||||||
|
|
||||||
def get_no_of_visits(self, arg):
|
def get_no_of_visits(self, arg):
|
||||||
arg1 = eval(arg)
|
args = eval(arg)
|
||||||
self.validate_period(arg)
|
self.validate_period(arg)
|
||||||
period = (getdate(arg1['end_date'])-getdate(arg1['start_date'])).days+1
|
period = (getdate(args['end_date']) - getdate(args['start_date'])).days + 1
|
||||||
|
count = 0
|
||||||
|
|
||||||
count =0
|
if args['periodicity'] == 'Weekly':
|
||||||
if arg1['periodicity'] == 'Weekly':
|
|
||||||
count = period/7
|
count = period/7
|
||||||
elif arg1['periodicity'] == 'Monthly':
|
elif args['periodicity'] == 'Monthly':
|
||||||
count = period/30
|
count = period/30
|
||||||
elif arg1['periodicity'] == 'Quarterly':
|
elif args['periodicity'] == 'Quarterly':
|
||||||
count = period/91
|
count = period/91
|
||||||
elif arg1['periodicity'] == 'Half Yearly':
|
elif args['periodicity'] == 'Half Yearly':
|
||||||
count = period/182
|
count = period/182
|
||||||
elif arg1['periodicity'] == 'Yearly':
|
elif args['periodicity'] == 'Yearly':
|
||||||
count = period/365
|
count = period/365
|
||||||
|
|
||||||
ret = {'no_of_visits':count}
|
ret = {'no_of_visits' : count}
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def validate_maintenance_detail(self):
|
def validate_maintenance_detail(self):
|
||||||
if not getlist(self.doclist, 'item_maintenance_detail'):
|
if not getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
msgprint("Please enter Maintaince Details first")
|
throw(_("Please enter Maintaince Details first"))
|
||||||
raise Exception
|
|
||||||
|
|
||||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
if not d.item_code:
|
if not d.item_code:
|
||||||
msgprint("Please select item code")
|
throw(_("Please select item code"))
|
||||||
raise Exception
|
|
||||||
elif not d.start_date or not d.end_date:
|
elif not d.start_date or not d.end_date:
|
||||||
msgprint("Please select Start Date and End Date for item "+d.item_code)
|
throw(_("Please select Start Date and End Date for item") + " " + d.item_code)
|
||||||
raise Exception
|
|
||||||
elif not d.no_of_visits:
|
elif not d.no_of_visits:
|
||||||
msgprint("Please mention no of visits required")
|
throw(_("Please mention no of visits required"))
|
||||||
raise Exception
|
|
||||||
elif not d.incharge_name:
|
elif not d.incharge_name:
|
||||||
msgprint("Please select Incharge Person's name")
|
throw(_("Please select Incharge Person's name"))
|
||||||
raise Exception
|
|
||||||
|
|
||||||
if getdate(d.start_date) >= getdate(d.end_date):
|
if getdate(d.start_date) >= getdate(d.end_date):
|
||||||
msgprint("Start date should be less than end date for item "+d.item_code)
|
throw(_("Start date should be less than end date for item") + " " + d.item_code)
|
||||||
raise Exception
|
|
||||||
|
|
||||||
#check if maintenance schedule already created against same sales order
|
#check if maintenance schedule already created against same sales order
|
||||||
#-----------------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------------
|
||||||
def validate_sales_order(self):
|
def validate_sales_order(self):
|
||||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
if d.prevdoc_docname:
|
if d.prevdoc_docname:
|
||||||
chk = webnotes.conn.sql("select t1.name from `tabMaintenance Schedule` t1, `tabMaintenance Schedule Item` t2 where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1", d.prevdoc_docname)
|
chk = webnotes.conn.sql("""select ms.name from `tabMaintenance Schedule` ms,
|
||||||
|
`tabMaintenance Schedule Item` msi where msi.parent=ms.name and
|
||||||
|
msi.prevdoc_docname=%s and ms.docstatus=1""", d.prevdoc_docname)
|
||||||
if chk:
|
if chk:
|
||||||
msgprint("Maintenance Schedule against "+d.prevdoc_docname+" already exist")
|
throw("Maintenance Schedule against " + d.prevdoc_docname + " already exist")
|
||||||
raise Exception
|
|
||||||
|
|
||||||
|
|
||||||
def validate_serial_no(self):
|
def validate_serial_no(self):
|
||||||
@ -185,13 +173,13 @@ class DocType(TransactionBase):
|
|||||||
cur_s_no = cur_serial_no.split(',')
|
cur_s_no = cur_serial_no.split(',')
|
||||||
|
|
||||||
for x in cur_s_no:
|
for x in cur_s_no:
|
||||||
chk = webnotes.conn.sql("select name, status from `tabSerial No` where docstatus!=2 and name=%s", (x))
|
chk = webnotes.conn.sql("""select name, status from `tabSerial No`
|
||||||
|
where docstatus!=2 and name=%s""", (x))
|
||||||
chk1 = chk and chk[0][0] or ''
|
chk1 = chk and chk[0][0] or ''
|
||||||
status = chk and chk[0][1] or ''
|
status = chk and chk[0][1] or ''
|
||||||
|
|
||||||
if not chk1:
|
if not chk1:
|
||||||
msgprint("Serial no "+x+" does not exist in system.")
|
throw("Serial no " + x + " does not exist in system.")
|
||||||
raise Exception
|
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_maintenance_detail()
|
self.validate_maintenance_detail()
|
||||||
@ -208,13 +196,13 @@ class DocType(TransactionBase):
|
|||||||
cur_s_no = cur_serial_no.split(',')
|
cur_s_no = cur_serial_no.split(',')
|
||||||
|
|
||||||
for x in cur_s_no:
|
for x in cur_s_no:
|
||||||
dt = webnotes.conn.sql("select delivery_date from `tabSerial No` where name = %s", x)
|
dt = webnotes.conn.sql("""select delivery_date from `tabSerial No`
|
||||||
|
where name=%s""", x)
|
||||||
dt = dt and dt[0][0] or ''
|
dt = dt and dt[0][0] or ''
|
||||||
|
|
||||||
if dt:
|
if dt:
|
||||||
if dt > getdate(d.start_date):
|
if dt > getdate(d.start_date):
|
||||||
msgprint("Maintenance start date can not be before delivery date "+dt.strftime('%Y-%m-%d')+" for serial no "+x)
|
throw("Maintenance start date can not be before delivery date " + dt.strftime('%Y-%m-%d') + " for serial no " + x)
|
||||||
raise Exception
|
|
||||||
|
|
||||||
#update amc expiry date in serial no
|
#update amc expiry date in serial no
|
||||||
#------------------------------------------
|
#------------------------------------------
|
||||||
@ -224,7 +212,8 @@ class DocType(TransactionBase):
|
|||||||
cur_s_no = cur_serial_no.split(',')
|
cur_s_no = cur_serial_no.split(',')
|
||||||
|
|
||||||
for x in cur_s_no:
|
for x in cur_s_no:
|
||||||
webnotes.conn.sql("update `tabSerial No` set amc_expiry_date = '%s', maintenance_status = 'Under AMC' where name = '%s'"% (amc_end_date,x))
|
webnotes.conn.sql("""update `tabSerial No` set amc_expiry_date=%s,
|
||||||
|
maintenance_status='Under AMC' where name=%s""", (amc_end_date, x))
|
||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
webnotes.conn.set(self.doc, 'status', 'Draft')
|
webnotes.conn.set(self.doc, 'status', 'Draft')
|
||||||
@ -233,16 +222,16 @@ class DocType(TransactionBase):
|
|||||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
if cstr(d.serial_no).strip():
|
if cstr(d.serial_no).strip():
|
||||||
dt = webnotes.conn.sql("""select warranty_expiry_date, amc_expiry_date
|
dt = webnotes.conn.sql("""select warranty_expiry_date, amc_expiry_date
|
||||||
from `tabSerial No` where name = %s""", d.serial_no, as_dict=1)
|
from `tabSerial No` where name=%s""", d.serial_no, as_dict=1)
|
||||||
if dt[0]['warranty_expiry_date'] and dt[0]['warranty_expiry_date'] >= d.start_date:
|
if dt[0]['warranty_expiry_date'] and dt[0]['warranty_expiry_date'] >= d.start_date:
|
||||||
webnotes.msgprint("""Serial No: %s is already under warranty upto %s.
|
throw("""Serial No: %s is already under warranty upto %s.
|
||||||
Please check AMC Start Date.""" %
|
Please check AMC Start Date.""" %
|
||||||
(d.serial_no, dt[0]["warranty_expiry_date"]), raise_exception=1)
|
(d.serial_no, dt[0]["warranty_expiry_date"]))
|
||||||
|
|
||||||
if dt[0]['amc_expiry_date'] and dt[0]['amc_expiry_date'] >= d.start_date:
|
if dt[0]['amc_expiry_date'] and dt[0]['amc_expiry_date'] >= d.start_date:
|
||||||
webnotes.msgprint("""Serial No: %s is already under AMC upto %s.
|
throw("""Serial No: %s is already under AMC upto %s.
|
||||||
Please check AMC Start Date.""" %
|
Please check AMC Start Date.""" %
|
||||||
(d.serial_no, dt[0]["amc_expiry_date"]), raise_exception=1)
|
(d.serial_no, dt[0]["amc_expiry_date"]))
|
||||||
|
|
||||||
def validate_schedule(self):
|
def validate_schedule(self):
|
||||||
item_lst1 =[]
|
item_lst1 =[]
|
||||||
@ -256,13 +245,11 @@ class DocType(TransactionBase):
|
|||||||
item_lst2.append(m.item_code)
|
item_lst2.append(m.item_code)
|
||||||
|
|
||||||
if len(item_lst1) != len(item_lst2):
|
if len(item_lst1) != len(item_lst2):
|
||||||
msgprint("Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule'")
|
throw("Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule'")
|
||||||
raise Exception
|
|
||||||
else:
|
else:
|
||||||
for x in item_lst1:
|
for x in item_lst1:
|
||||||
if x not in item_lst2:
|
if x not in item_lst2:
|
||||||
msgprint("Maintenance Schedule is not generated for item "+x+". Please click on 'Generate Schedule'")
|
throw("Maintenance Schedule is not generated for item "+x+". Please click on 'Generate Schedule'")
|
||||||
raise Exception
|
|
||||||
|
|
||||||
#check if serial no present in item maintenance table
|
#check if serial no present in item maintenance table
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
@ -275,10 +262,7 @@ class DocType(TransactionBase):
|
|||||||
for m in getlist(self.doclist, 'maintenance_schedule_detail'):
|
for m in getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||||
if serial_present:
|
if serial_present:
|
||||||
if m.item_code in serial_present and not m.serial_no:
|
if m.item_code in serial_present and not m.serial_no:
|
||||||
msgprint("Please click on 'Generate Schedule' to fetch serial no added for item "+m.item_code)
|
throw("Please click on 'Generate Schedule' to fetch serial no added for item "+m.item_code)
|
||||||
raise Exception
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-02-22 01:28:05",
|
"creation": "2013-02-22 01:28:05",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-12-20 19:23:20",
|
"modified": "2013-12-30 19:32:30",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -52,6 +52,7 @@
|
|||||||
"search_index": 0
|
"search_index": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"allow_on_submit": 1,
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "scheduled_date",
|
"fieldname": "scheduled_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
@ -78,6 +79,7 @@
|
|||||||
"report_hide": 1
|
"report_hide": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"allow_on_submit": 1,
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "incharge_name",
|
"fieldname": "incharge_name",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user