[mapper] support
This commit is contained in:
parent
650501526f
commit
2b3ca41450
@ -48,7 +48,7 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
if(flt(doc.per_delivered, 2) < 100 && (doc.order_type !='Sales')) {
|
||||
cur_frm.add_custom_button('Make Maint. Visit', this.make_maintenance_visit);
|
||||
cur_frm.add_custom_button('Make Maint. Schedule',
|
||||
this.make_maintainance_schedule);
|
||||
this.make_maintenance_schedule);
|
||||
}
|
||||
|
||||
// indent
|
||||
@ -98,13 +98,26 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
|
||||
make_sales_invoice: function() {
|
||||
wn.model.open_mapped_doc({
|
||||
method: "selling.doctype.quotation.quotation.make_quotation",
|
||||
method: "selling.doctype.sales_order.sales_order.make_sales_invoice",
|
||||
source_name: cur_frm.doc.name
|
||||
})
|
||||
},
|
||||
|
||||
make_maintenance_schedule: function() {
|
||||
wn.model.open_mapped_doc({
|
||||
method: "selling.doctype.sales_order.sales_order.make_maintenance_schedule",
|
||||
source_name: cur_frm.doc.name
|
||||
})
|
||||
},
|
||||
|
||||
make_maintenance_visit: function() {
|
||||
wn.model.open_mapped_doc({
|
||||
method: "selling.doctype.sales_order.sales_order.make_maintenance_visit",
|
||||
source_name: cur_frm.doc.name
|
||||
})
|
||||
},
|
||||
|
||||
pull_quotation_details: function() {
|
||||
|
||||
wn.model.map_current_doc({
|
||||
method: "selling.doctype.quotation.quotation.make_sales_order",
|
||||
source_name: cur_frm.doc.quotation_no,
|
||||
@ -155,64 +168,6 @@ cur_frm.fields_dict['quotation_no'].get_query = function(doc) {
|
||||
ORDER BY `tabQuotation`.`name` DESC LIMIT 50', {cond:cond});
|
||||
}
|
||||
|
||||
//----------- make maintenance schedule----------
|
||||
cur_frm.cscript['Make Maintenance Schedule'] = function() {
|
||||
var doc = cur_frm.doc;
|
||||
|
||||
if (doc.docstatus == 1) {
|
||||
$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_schedule','',
|
||||
function(r,rt){
|
||||
if(r.message == 'No'){
|
||||
n = wn.model.make_new_doc_and_get_name("Maintenance Schedule");
|
||||
$c('dt_map', args={
|
||||
'docs':wn.model.compress([locals["Maintenance Schedule"][n]]),
|
||||
'from_doctype':'Sales Order',
|
||||
'to_doctype':'Maintenance Schedule',
|
||||
'from_docname':doc.name,
|
||||
'from_to_list':"[['Sales Order', 'Maintenance Schedule'], ['Sales Order Item', 'Maintenance Schedule Item']]"
|
||||
}
|
||||
, function(r,rt) {
|
||||
loaddoc("Maintenance Schedule", n);
|
||||
}
|
||||
);
|
||||
}
|
||||
else{
|
||||
msgprint("You have already created Maintenance Schedule against this Sales Order");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
cur_frm.cscript.make_maintenance_visit = function() {
|
||||
var doc = cur_frm.doc;
|
||||
|
||||
if (doc.docstatus == 1) {
|
||||
$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
|
||||
function(r,rt){
|
||||
if(r.message == 'No'){
|
||||
n = wn.model.make_new_doc_and_get_name("Maintenance Visit");
|
||||
$c('dt_map', args={
|
||||
'docs':wn.model.compress([locals["Maintenance Visit"][n]]),
|
||||
'from_doctype':'Sales Order',
|
||||
'to_doctype':'Maintenance Visit',
|
||||
'from_docname':doc.name,
|
||||
'from_to_list':"[['Sales Order', 'Maintenance Visit'], ['Sales Order Item', 'Maintenance Visit Purpose']]"
|
||||
}
|
||||
, function(r,rt) {
|
||||
loaddoc("Maintenance Visit", n);
|
||||
}
|
||||
);
|
||||
}
|
||||
else{
|
||||
msgprint("You have already completed maintenance against this Sales Order");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript['Stop Sales Order'] = function() {
|
||||
var doc = cur_frm.doc;
|
||||
|
||||
|
@ -23,6 +23,7 @@ from webnotes.utils import cstr, flt, getdate
|
||||
from webnotes.model.bean import getlist
|
||||
from webnotes.model.code import get_obj
|
||||
from webnotes import msgprint
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
sql = webnotes.conn.sql
|
||||
|
||||
@ -55,20 +56,6 @@ class DocType(SellingController):
|
||||
def get_rate(self,arg):
|
||||
return get_obj('Sales Common').get_rate(arg)
|
||||
|
||||
def check_maintenance_schedule(self):
|
||||
nm = 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", self.doc.name)
|
||||
nm = nm and nm[0][0] or ''
|
||||
|
||||
if not nm:
|
||||
return 'No'
|
||||
|
||||
def check_maintenance_visit(self):
|
||||
nm = 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=1 and t1.completion_status='Fully Completed'", self.doc.name)
|
||||
nm = nm and nm[0][0] or ''
|
||||
|
||||
if not nm:
|
||||
return 'No'
|
||||
|
||||
def validate_fiscal_year(self):
|
||||
get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.transaction_date,'Sales Order Date')
|
||||
|
||||
@ -365,9 +352,7 @@ def get_currency_and_number_format():
|
||||
}
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_material_request(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
def make_material_request(source_name, target_doclist=None):
|
||||
def postprocess(source, doclist):
|
||||
doclist[0].material_request_type = "Purchase"
|
||||
|
||||
@ -391,9 +376,7 @@ def make_material_request(source_name, target_doclist=None):
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_delivery_note(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
def make_delivery_note(source_name, target_doclist=None):
|
||||
def update_item(obj, target, source_parent):
|
||||
target.amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.basic_rate)
|
||||
target.export_amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.export_rate)
|
||||
@ -433,9 +416,7 @@ def make_delivery_note(source_name, target_doclist=None):
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_sales_invoice(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
def make_sales_invoice(source_name, target_doclist=None):
|
||||
def update_item(obj, target, source_parent):
|
||||
target.export_amount = flt(obj.amount) - flt(obj.billed_amt)
|
||||
target.amount = target.export_amount / flt(source_parent.conversion_rate)
|
||||
@ -470,4 +451,60 @@ def make_sales_invoice(source_name, target_doclist=None):
|
||||
}
|
||||
}, target_doclist, update_accounts)
|
||||
|
||||
return [d.fields for d in doclist]
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_maintenance_schedule(source_name, target_doclist=None):
|
||||
maint_schedule = 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""", source_name)
|
||||
|
||||
if not maint_schedule:
|
||||
doclist = get_mapped_doclist("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
"doctype": "Maintenance Schedule",
|
||||
"field_map": {
|
||||
"name": "sales_order_no"
|
||||
},
|
||||
"validation": {
|
||||
"docstatus": ["=", 1]
|
||||
}
|
||||
},
|
||||
"Sales Order Item": {
|
||||
"doctype": "Maintenance Schedule Item",
|
||||
"field_map": {
|
||||
"parent": "prevdoc_docname"
|
||||
}
|
||||
}
|
||||
}, target_doclist)
|
||||
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_maintenance_visit(source_name, target_doclist=None):
|
||||
visit = webnotes.conn.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=1 and t1.completion_status='Fully Completed'""", source_name)
|
||||
|
||||
if not visit:
|
||||
doclist = get_mapped_doclist("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
"doctype": "Maintenance Visit",
|
||||
"field_map": {
|
||||
"name": "sales_order_no"
|
||||
},
|
||||
"validation": {
|
||||
"docstatus": ["=", 1]
|
||||
}
|
||||
},
|
||||
"Sales Order Item": {
|
||||
"doctype": "Maintenance Visit Purpose",
|
||||
"field_map": {
|
||||
"parent": "prevdoc_docname",
|
||||
"parenttype": "prevdoc_doctype"
|
||||
}
|
||||
}
|
||||
}, target_doclist)
|
||||
|
||||
return [d.fields for d in doclist]
|
@ -17,6 +17,13 @@
|
||||
wn.provide("erpnext.support");
|
||||
// TODO commonify this code
|
||||
erpnext.support.CustomerIssue = wn.ui.form.Controller.extend({
|
||||
refresh: function() {
|
||||
if(cur_frm.doc.docstatus==1 && (cur_frm.doc.status=='Open' ||
|
||||
cur_frm.doc.status == 'Work In Progress')) {
|
||||
cur_frm.add_custom_button('Make Maintenance Visit', this.make_maintenance_visit)
|
||||
}
|
||||
},
|
||||
|
||||
customer: function() {
|
||||
var me = this;
|
||||
if(this.frm.doc.customer) {
|
||||
@ -31,6 +38,13 @@ erpnext.support.CustomerIssue = wn.ui.form.Controller.extend({
|
||||
// TODO shift this to depends_on
|
||||
unhide_field(['customer_address', 'contact_person']);
|
||||
}
|
||||
},
|
||||
|
||||
make_maintenance_visit: function() {
|
||||
wn.model.open_mapped_doc({
|
||||
method: "support.doctype.customer_issue.customer_issue.make_maintenance_visit",
|
||||
source_name: cur_frm.doc.name
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
@ -44,12 +58,6 @@ cur_frm.cscript.onload = function(doc,cdt,cdn){
|
||||
}
|
||||
}
|
||||
|
||||
cur_frm.cscript.refresh = function(doc,ct,cdn){
|
||||
if(doc.docstatus == 1 && (doc.status == 'Open' || doc.status == 'Work In Progress'))
|
||||
cur_frm.add_custom_button('Make Maintenance Visit',
|
||||
cur_frm.cscript['Make Maintenance Visit']);
|
||||
}
|
||||
|
||||
cur_frm.cscript.customer_address = cur_frm.cscript.contact_person = function(doc,dt,dn) {
|
||||
if(doc.customer)
|
||||
get_server_fields('get_customer_address',
|
||||
@ -67,34 +75,6 @@ cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
|
||||
'" 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;
|
||||
if (doc.docstatus == 1) {
|
||||
$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
|
||||
function(r,rt){
|
||||
if(r.message == 'No'){
|
||||
n = wn.model.make_new_doc_and_get_name("Maintenance Visit");
|
||||
$c('dt_map', args={
|
||||
'docs':wn.model.compress([locals["Maintenance Visit"][n]]),
|
||||
'from_doctype':'Customer Issue',
|
||||
'to_doctype':'Maintenance Visit',
|
||||
'from_docname':doc.name,
|
||||
'from_to_list':"[['Customer Issue', 'Maintenance Visit'], ['Customer Issue', 'Maintenance Visit Purpose']]"
|
||||
}, function(r,rt) {
|
||||
loaddoc("Maintenance Visit", n);
|
||||
});
|
||||
} else{
|
||||
msgprint("You have already completed maintenance against this Customer Issue");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------
|
||||
// serial no
|
||||
// ----------
|
||||
|
||||
cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
|
||||
var cond = '';
|
||||
if(doc.item_code) cond = ' AND `tabSerial No`.item_code = "'+ doc.item_code +'"';
|
||||
@ -115,9 +95,6 @@ cur_frm.add_fetch('serial_no', 'customer', 'customer');
|
||||
cur_frm.add_fetch('serial_no', 'customer_name', 'customer_name');
|
||||
cur_frm.add_fetch('serial_no', 'delivery_address', 'customer_address');
|
||||
|
||||
// ----------
|
||||
// item code
|
||||
// ----------
|
||||
cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) {
|
||||
if(doc.serial_no) {
|
||||
return 'SELECT `tabSerial No`.item_code, `tabSerial No`.description \
|
||||
@ -135,9 +112,6 @@ cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) {
|
||||
cur_frm.add_fetch('item_code', 'item_name', 'item_name');
|
||||
cur_frm.add_fetch('item_code', 'description', 'description');
|
||||
|
||||
|
||||
//get query select Territory
|
||||
//=======================================================================================================================
|
||||
cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
|
||||
return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` \
|
||||
FROM `tabTerritory` \
|
||||
|
@ -17,9 +17,6 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import webnotes
|
||||
|
||||
from webnotes.model import db_exists
|
||||
from webnotes.model.bean import copy_doclist
|
||||
from webnotes import session, msgprint
|
||||
from webnotes.utils import today
|
||||
|
||||
@ -32,13 +29,6 @@ class DocType(TransactionBase):
|
||||
def __init__(self, doc, doclist=[]):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
|
||||
def check_maintenance_visit(self):
|
||||
nm = 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=1 and t1.completion_status='Fully Completed'", self.doc.name)
|
||||
nm = nm and nm[0][0] or ''
|
||||
|
||||
if not nm:
|
||||
return 'No'
|
||||
|
||||
def validate(self):
|
||||
if session['user'] != 'Guest' and not self.doc.customer:
|
||||
@ -61,3 +51,26 @@ class DocType(TransactionBase):
|
||||
|
||||
def on_update(self):
|
||||
pass
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_maintenance_visit(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
visit = webnotes.conn.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=1 and t1.completion_status='Fully Completed'""", source_name)
|
||||
|
||||
if not visit:
|
||||
doclist = get_mapped_doclist("Customer Issue", source_name, {
|
||||
"Customer Issue": {
|
||||
"doctype": "Maintenance Visit",
|
||||
"field_map": {
|
||||
"complaint": "description",
|
||||
"doctype": "prevdoc_doctype",
|
||||
"name": "prevdoc_docname"
|
||||
}
|
||||
}
|
||||
}, target_doclist)
|
||||
|
||||
return [d.fields for d in doclist]
|
@ -34,6 +34,15 @@ erpnext.support.MaintenanceSchedule = wn.ui.form.Controller.extend({
|
||||
'territory', 'customer_group']);
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
get_items: function() {
|
||||
wn.model.map_current_doc({
|
||||
method: "selling.doctype.sales_order.sales_order.make_maintenance_schedule",
|
||||
source_name: cur_frm.doc.quotation_no,
|
||||
});
|
||||
unhide_field(['customer_address', 'contact_person', 'customer_name', 'address_display',
|
||||
'contact_display', 'contact_mobile', 'contact_email', 'territory', 'customer_group']);
|
||||
}
|
||||
});
|
||||
|
||||
@ -65,16 +74,6 @@ cur_frm.fields_dict['item_maintenance_detail'].grid.get_field('item_code').get_q
|
||||
return 'SELECT tabItem.name,tabItem.item_name,tabItem.description FROM tabItem WHERE tabItem.is_service_item="Yes" AND tabItem.docstatus != 2 AND tabItem.%(key)s LIKE "%s" LIMIT 50';
|
||||
}
|
||||
|
||||
// Get Items based on SO Selected
|
||||
cur_frm.cscript.get_items = function(doc, dt, dn) {
|
||||
var callback = function(r,rt) {
|
||||
unhide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
|
||||
cur_frm.refresh();
|
||||
}
|
||||
get_server_fields('pull_sales_order_detail','','',doc, dt, dn,1,callback);
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.item_code = function(doc, cdt, cdn) {
|
||||
var fname = cur_frm.cscript.fname;
|
||||
var d = locals[cdt][cdn];
|
||||
@ -83,17 +82,6 @@ cur_frm.cscript.item_code = function(doc, cdt, cdn) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
|
||||
return 'SELECT `tabContact`.contact_name FROM `tabContact` WHERE `tabContact`.is_customer = 1 AND `tabContact`.customer = "'+ doc.customer+'" AND `tabContact`.contact_name LIKE "%s" ORDER BY `tabContact`.contact_name ASC LIMIT 50';
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.customer = function(doc, cdt, cdn) {
|
||||
get_server_fields('get_customer_details','','',doc, cdt, cdn, 1);
|
||||
}
|
||||
*/
|
||||
|
||||
cur_frm.fields_dict['sales_order_no'].get_query = function(doc) {
|
||||
doc = locals[this.doctype][this.docname];
|
||||
var cond = '';
|
||||
@ -129,8 +117,6 @@ cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
|
||||
}
|
||||
}
|
||||
|
||||
//get query select Territory
|
||||
//=======================================================================================================================
|
||||
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';
|
||||
}
|
||||
|
@ -33,15 +33,6 @@ class DocType(TransactionBase):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
|
||||
# pull sales order details
|
||||
#--------------------------
|
||||
def pull_sales_order_detail(self):
|
||||
self.doclist = self.doc.clear_table(self.doclist, 'item_maintenance_detail')
|
||||
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
|
||||
self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Schedule').dt_map('Sales Order', 'Maintenance Schedule', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Schedule'],['Sales Order Item', 'Maintenance Schedule Item']]")
|
||||
|
||||
#pull item details
|
||||
#-------------------
|
||||
def get_item_details(self, item_code):
|
||||
item = sql("select item_name, description from `tabItem` where name = '%s'" %(item_code), as_dict=1)
|
||||
ret = {
|
||||
@ -50,8 +41,6 @@ class DocType(TransactionBase):
|
||||
}
|
||||
return ret
|
||||
|
||||
# generate maintenance schedule
|
||||
#-------------------------------------
|
||||
def generate_schedule(self):
|
||||
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
|
||||
count = 0
|
||||
@ -75,8 +64,6 @@ class DocType(TransactionBase):
|
||||
|
||||
self.on_update()
|
||||
|
||||
|
||||
|
||||
def on_submit(self):
|
||||
if not getlist(self.doclist, 'maintenance_schedule_detail'):
|
||||
msgprint("Please click on 'Generate Schedule' to get schedule")
|
||||
@ -149,10 +136,6 @@ class DocType(TransactionBase):
|
||||
msgprint("Weekly periodicity can be set for period of atleast 1 week or more")
|
||||
raise Exception
|
||||
|
||||
|
||||
|
||||
#get count on the basis of periodicity selected
|
||||
#----------------------------------------------------
|
||||
def get_no_of_visits(self, arg):
|
||||
arg1 = eval(arg)
|
||||
self.validate_period(arg)
|
||||
@ -331,3 +314,28 @@ class DocType(TransactionBase):
|
||||
|
||||
def on_trash(self):
|
||||
delete_events(self.doc.doctype, self.doc.name)
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_maintenance_visit(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
doclist = get_mapped_doclist("Maintenance Schedule", source_name, {
|
||||
"Maintenance Schedule": {
|
||||
"doctype": "Maintenance Visit",
|
||||
"field_map": {
|
||||
"name": "maintenance_schedule"
|
||||
},
|
||||
"validation": {
|
||||
"docstatus": ["=", 1]
|
||||
}
|
||||
},
|
||||
"Maintenance Schedule Item": {
|
||||
"doctype": "Maintenance Visit Purpose",
|
||||
"field_map": {
|
||||
"parent": "prevdoc_docname",
|
||||
"parenttype": "prevdoc_doctype"
|
||||
}
|
||||
}
|
||||
}, target_doclist)
|
||||
|
||||
return [d.fields for d in doclist]
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-01-10 16:34:30",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-07-05 14:45:42",
|
||||
"modified": "2013-07-07 12:18:51",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -24,19 +24,13 @@
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"name": "__common__",
|
||||
"parent": "Maintenance Schedule",
|
||||
"parentfield": "permissions",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
"report": 1
|
||||
},
|
||||
{
|
||||
"doctype": "DocType",
|
||||
@ -227,7 +221,6 @@
|
||||
"fieldtype": "Button",
|
||||
"label": "Get Items",
|
||||
"oldfieldtype": "Button",
|
||||
"options": "pull_sales_order_detail",
|
||||
"report_hide": 1
|
||||
},
|
||||
{
|
||||
@ -265,11 +258,41 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"role": "System Manager"
|
||||
"permlevel": 0,
|
||||
"role": "System Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"amend": 0,
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"doctype": "DocPerm",
|
||||
"role": "Maintenance Manager"
|
||||
"permlevel": 1,
|
||||
"role": "System Manager",
|
||||
"submit": 0
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"permlevel": 0,
|
||||
"role": "Maintenance Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"amend": 0,
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"doctype": "DocPerm",
|
||||
"permlevel": 1,
|
||||
"role": "Maintenance Manager",
|
||||
"submit": 0
|
||||
}
|
||||
]
|
@ -31,6 +31,26 @@ erpnext.support.MaintenanceVisit = wn.ui.form.Controller.extend({
|
||||
// TODO shift this to depends_on
|
||||
hide_contact_info(this.frm.doc);
|
||||
}
|
||||
},
|
||||
|
||||
get_items: function() {
|
||||
if(cur_frm.doc.sales_order_no) {
|
||||
wn.model.map_current_doc({
|
||||
method: "selling.doctype.sales_order.sales_order.make_maintenance_visit",
|
||||
source_name: cur_frm.doc.quotation_no,
|
||||
});
|
||||
} else if (cur_frm.doc.customer_issue_no) {
|
||||
wn.model.map_current_doc({
|
||||
method: "support.doctype.customer_issue.customer_issue.make_maintenance_visit",
|
||||
source_name: cur_frm.doc.quotation_no,
|
||||
});
|
||||
} else if (cur_frm.doc.maintenance_schedule) {
|
||||
wn.model.map_current_doc({
|
||||
method: "support.doctype.maintenance_schedule.maintenance_schedule\
|
||||
.make_maintenance_visit",
|
||||
source_name: cur_frm.doc.quotation_no,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -18,8 +18,7 @@ from __future__ import unicode_literals
|
||||
import webnotes
|
||||
|
||||
from webnotes.utils import cstr
|
||||
from webnotes.model import db_exists
|
||||
from webnotes.model.bean import getlist, copy_doclist
|
||||
from webnotes.model.bean import getlist
|
||||
from webnotes.model.code import get_obj
|
||||
from webnotes import msgprint
|
||||
|
||||
@ -33,48 +32,20 @@ class DocType(TransactionBase):
|
||||
self.doc = doc
|
||||
self.doclist = doclist
|
||||
|
||||
#get item details
|
||||
#------------------
|
||||
def get_item_details(self, item_code):
|
||||
item = sql("select item_name,description from `tabItem` where name = '%s'" %(item_code), as_dict=1)
|
||||
ret = {
|
||||
'item_name' : item and item[0]['item_name'] or '',
|
||||
'description' : item and item[0]['description'] or ''
|
||||
}
|
||||
return ret
|
||||
|
||||
# fetch details of resp Sales order or customer issue
|
||||
#-----------------------------------------------------------
|
||||
def fetch_items(self):
|
||||
if self.doc.sales_order_no and self.doc.customer_issue_no :
|
||||
msgprint("You can not fetch details of both, Sales Order and Customer Issue, in same Maintenance Visit")
|
||||
raise Exception
|
||||
|
||||
self.doclist = self.doc.clear_table(self.doclist, 'maintenance_visit_details')
|
||||
|
||||
if self.doc.sales_order_no:
|
||||
self.doclist = get_obj('DocType Mapper', 'Sales Order-Maintenance Visit').dt_map('Sales Order', \
|
||||
'Maintenance Visit', self.doc.sales_order_no, self.doc, self.doclist, "[['Sales Order', 'Maintenance Visit'],\
|
||||
['Sales Order Item', 'Maintenance Visit Purpose']]")
|
||||
elif self.doc.customer_issue_no:
|
||||
self.doclist = get_obj('DocType Mapper', 'Customer Issue-Maintenance Visit').dt_map('Customer Issue', \
|
||||
'Maintenance Visit', self.doc.customer_issue_no, self.doc, self.doclist, "[['Customer Issue', 'Maintenance Visit'],\
|
||||
['Customer Issue', 'Maintenance Visit Purpose']]")
|
||||
elif self.doc.maintenance_schedule:
|
||||
self.doclist = get_obj('DocType Mapper', 'Maintenance Schedule-Maintenance Visit').dt_map('Maintenance Schedule',\
|
||||
'Maintenance Visit', self.doc.maintenance_schedule, self.doc, self.doclist, "[['Maintenance Schedule', \
|
||||
'Maintenance Visit'], ['Maintenance Schedule Item', 'Maintenance Visit Purpose']]")
|
||||
|
||||
#validate reference value using doctype mapper
|
||||
#-----------------------------------------------------
|
||||
return ret
|
||||
|
||||
def validate_reference_value(self, check_for):
|
||||
if check_for == 'Sales Order':
|
||||
get_obj('DocType Mapper', 'Sales Order-Maintenance Visit', with_children = 1).validate_reference_value(self, self.doc.name)
|
||||
elif check_for == 'Customer Issue':
|
||||
get_obj('DocType Mapper', 'Customer Issue-Maintenance Visit', with_children = 1).validate_reference_value(self, self.doc.name)
|
||||
|
||||
#check if serial no exist in system
|
||||
#--------------------------------------
|
||||
def validate_serial_no(self):
|
||||
for d in getlist(self.doclist, 'maintenance_visit_details'):
|
||||
if d.serial_no and not sql("select name from `tabSerial No` where name = '%s' and docstatus != 2" % d.serial_no):
|
||||
@ -155,4 +126,4 @@ class DocType(TransactionBase):
|
||||
webnotes.conn.set(self.doc, 'status', 'Cancelled')
|
||||
|
||||
def on_update(self):
|
||||
pass
|
||||
pass
|
@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-01-10 16:34:31",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-07-05 14:45:54",
|
||||
"modified": "2013-07-07 12:08:12",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "ashwini@webnotestech.com"
|
||||
},
|
||||
@ -24,19 +24,13 @@
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"name": "__common__",
|
||||
"parent": "Maintenance Visit",
|
||||
"parentfield": "permissions",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
"report": 1
|
||||
},
|
||||
{
|
||||
"doctype": "DocType",
|
||||
@ -213,7 +207,6 @@
|
||||
"fieldtype": "Button",
|
||||
"label": "Get Items",
|
||||
"oldfieldtype": "Button",
|
||||
"options": "fetch_items",
|
||||
"print_hide": 1,
|
||||
"report_hide": 1
|
||||
},
|
||||
@ -348,15 +341,60 @@
|
||||
"print_hide": 1
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"role": "System Manager"
|
||||
"permlevel": 0,
|
||||
"role": "System Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"amend": 0,
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"doctype": "DocPerm",
|
||||
"role": "Maintenance Manager"
|
||||
"permlevel": 1,
|
||||
"role": "System Manager",
|
||||
"submit": 0
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"role": "Maintenance User"
|
||||
"permlevel": 0,
|
||||
"role": "Maintenance Manager",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"amend": 0,
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"doctype": "DocPerm",
|
||||
"permlevel": 1,
|
||||
"role": "Maintenance Manager",
|
||||
"submit": 0
|
||||
},
|
||||
{
|
||||
"amend": 1,
|
||||
"cancel": 1,
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"permlevel": 0,
|
||||
"role": "Maintenance User",
|
||||
"submit": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"amend": 0,
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"doctype": "DocPerm",
|
||||
"permlevel": 1,
|
||||
"role": "Maintenance User",
|
||||
"submit": 0
|
||||
}
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user