mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-29 22:58:25 +00:00
This commit is contained in:
@@ -11,10 +11,7 @@ from frappe.utils import today
|
||||
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
|
||||
class DocType(TransactionBase):
|
||||
def __init__(self, doc, doclist=[]):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
class CustomerIssue(TransactionBase):
|
||||
|
||||
def validate(self):
|
||||
if session['user'] != 'Guest' and not self.doc.customer:
|
||||
|
||||
@@ -5,16 +5,12 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.utils import add_days, cstr, getdate, cint
|
||||
from frappe.model.doc import addchild
|
||||
from frappe.model.bean import getlist
|
||||
from frappe import throw, _
|
||||
from erpnext.utilities.transaction_base import TransactionBase, delete_events
|
||||
from erpnext.stock.utils import get_valid_serial_nos
|
||||
|
||||
class DocType(TransactionBase):
|
||||
def __init__(self, doc, doclist=[]):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
class MaintenanceSchedule(TransactionBase):
|
||||
|
||||
def get_item_details(self, item_code):
|
||||
item = frappe.db.sql("""select item_name, description from `tabItem`
|
||||
@@ -26,17 +22,16 @@ class DocType(TransactionBase):
|
||||
return ret
|
||||
|
||||
def generate_schedule(self):
|
||||
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
|
||||
self.set('maintenance_schedule_detail', [])
|
||||
frappe.db.sql("""delete from `tabMaintenance Schedule Detail`
|
||||
where parent=%s""", (self.doc.name))
|
||||
count = 1
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
self.validate_maintenance_detail()
|
||||
s_list = []
|
||||
s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits, d.sales_person)
|
||||
for i in range(d.no_of_visits):
|
||||
child = addchild(self.doc, 'maintenance_schedule_detail',
|
||||
'Maintenance Schedule Detail', self.doclist)
|
||||
child = self.append('maintenance_schedule_detail')
|
||||
child.item_code = d.item_code
|
||||
child.item_name = d.item_name
|
||||
child.scheduled_date = s_list[i].strftime('%Y-%m-%d')
|
||||
@@ -50,13 +45,13 @@ class DocType(TransactionBase):
|
||||
self.on_update()
|
||||
|
||||
def on_submit(self):
|
||||
if not getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||
if not self.get('maintenance_schedule_detail'):
|
||||
throw("Please click on 'Generate Schedule' to get schedule")
|
||||
self.check_serial_no_added()
|
||||
self.validate_schedule()
|
||||
|
||||
email_map = {}
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if d.serial_no:
|
||||
serial_nos = get_valid_serial_nos(d.serial_no)
|
||||
self.validate_serial_no(serial_nos, d.start_date)
|
||||
@@ -174,10 +169,10 @@ class DocType(TransactionBase):
|
||||
return ret
|
||||
|
||||
def validate_maintenance_detail(self):
|
||||
if not getlist(self.doclist, 'item_maintenance_detail'):
|
||||
if not self.get('item_maintenance_detail'):
|
||||
throw(_("Please enter Maintaince Details first"))
|
||||
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if not d.item_code:
|
||||
throw(_("Please select item code"))
|
||||
elif not d.start_date or not d.end_date:
|
||||
@@ -191,7 +186,7 @@ class DocType(TransactionBase):
|
||||
throw(_("Start date should be less than end date for item") + " " + d.item_code)
|
||||
|
||||
def validate_sales_order(self):
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if d.prevdoc_docname:
|
||||
chk = frappe.db.sql("""select ms.name from `tabMaintenance Schedule` ms,
|
||||
`tabMaintenance Schedule Item` msi where msi.parent=ms.name and
|
||||
@@ -233,11 +228,11 @@ class DocType(TransactionBase):
|
||||
def validate_schedule(self):
|
||||
item_lst1 =[]
|
||||
item_lst2 =[]
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if d.item_code not in item_lst1:
|
||||
item_lst1.append(d.item_code)
|
||||
|
||||
for m in getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||
for m in self.get('maintenance_schedule_detail'):
|
||||
if m.item_code not in item_lst2:
|
||||
item_lst2.append(m.item_code)
|
||||
|
||||
@@ -252,17 +247,17 @@ class DocType(TransactionBase):
|
||||
|
||||
def check_serial_no_added(self):
|
||||
serial_present =[]
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if d.serial_no:
|
||||
serial_present.append(d.item_code)
|
||||
|
||||
for m in getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||
for m in self.get('maintenance_schedule_detail'):
|
||||
if serial_present:
|
||||
if m.item_code in serial_present and not m.serial_no:
|
||||
throw("Please click on 'Generate Schedule' to fetch serial no added for item "+m.item_code)
|
||||
|
||||
def on_cancel(self):
|
||||
for d in getlist(self.doclist, 'item_maintenance_detail'):
|
||||
for d in self.get('item_maintenance_detail'):
|
||||
if d.serial_no:
|
||||
serial_nos = get_valid_serial_nos(d.serial_no)
|
||||
self.update_amc_date(serial_nos)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
class DocType:
|
||||
def __init__(self, d, dl):
|
||||
self.doc, self.doclist = d, dl
|
||||
from frappe.model.document import Document
|
||||
|
||||
class MaintenanceScheduleDetail(Document):
|
||||
pass
|
||||
@@ -4,6 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
class DocType:
|
||||
def __init__(self, d, dl):
|
||||
self.doc, self.doclist = d, dl
|
||||
from frappe.model.document import Document
|
||||
|
||||
class MaintenanceScheduleItem(Document):
|
||||
pass
|
||||
@@ -12,29 +12,26 @@ from frappe import msgprint
|
||||
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
|
||||
class DocType(TransactionBase):
|
||||
def __init__(self, doc, doclist=[]):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
class MaintenanceVisit(TransactionBase):
|
||||
|
||||
def get_item_details(self, item_code):
|
||||
return frappe.db.get_value("Item", item_code, ["item_name", "description"], as_dict=1)
|
||||
|
||||
def validate_serial_no(self):
|
||||
for d in getlist(self.doclist, 'maintenance_visit_details'):
|
||||
for d in self.get('maintenance_visit_details'):
|
||||
if d.serial_no and not frappe.db.exists("Serial No", d.serial_no):
|
||||
frappe.throw("Serial No: "+ d.serial_no + " not exists in the system")
|
||||
|
||||
|
||||
def validate(self):
|
||||
if not getlist(self.doclist, 'maintenance_visit_details'):
|
||||
if not self.get('maintenance_visit_details'):
|
||||
msgprint("Please enter maintenance details")
|
||||
raise Exception
|
||||
|
||||
self.validate_serial_no()
|
||||
|
||||
def update_customer_issue(self, flag):
|
||||
for d in getlist(self.doclist, 'maintenance_visit_details'):
|
||||
for d in self.get('maintenance_visit_details'):
|
||||
if d.prevdoc_docname and d.prevdoc_doctype == 'Customer Issue' :
|
||||
if flag==1:
|
||||
mntc_date = self.doc.mntc_date
|
||||
@@ -64,7 +61,7 @@ class DocType(TransactionBase):
|
||||
def check_if_last_visit(self):
|
||||
"""check if last maintenance visit against same sales order/ customer issue"""
|
||||
check_for_docname = check_for_doctype = None
|
||||
for d in getlist(self.doclist, 'maintenance_visit_details'):
|
||||
for d in self.get('maintenance_visit_details'):
|
||||
if d.prevdoc_docname:
|
||||
check_for_docname = d.prevdoc_docname
|
||||
check_for_doctype = d.prevdoc_doctype
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
class DocType:
|
||||
def __init__(self, d, dl):
|
||||
self.doc, self.doclist = d, dl
|
||||
from frappe.model.document import Document
|
||||
|
||||
class MaintenanceVisitPurpose(Document):
|
||||
pass
|
||||
@@ -7,10 +7,9 @@ import frappe
|
||||
import frappe.utils
|
||||
from frappe.utils import cstr
|
||||
from frappe import msgprint, throw, _
|
||||
from frappe.model.document import Document
|
||||
|
||||
class DocType():
|
||||
def __init__(self, d, dl):
|
||||
self.doc, self.doclist = d, dl
|
||||
class Newsletter(Document):
|
||||
|
||||
def onload(self):
|
||||
if self.doc.email_sent:
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
class DocType:
|
||||
def __init__(self, d, dl):
|
||||
self.doc, self.doclist = d, dl
|
||||
from frappe.model.document import Document
|
||||
|
||||
class SupportEmailSettings(Document):
|
||||
|
||||
def validate(self):
|
||||
"""
|
||||
|
||||
@@ -7,10 +7,7 @@ import frappe
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
from frappe.utils import now, extract_email_id
|
||||
|
||||
class DocType(TransactionBase):
|
||||
def __init__(self, doc, doclist=[]):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
class SupportTicket(TransactionBase):
|
||||
|
||||
def get_sender(self, comm):
|
||||
return frappe.db.get_value('Support Email Settings',None,'support_email')
|
||||
|
||||
Reference in New Issue
Block a user