blob: ad4e78ec4d649a727fa12393bcf26a1cc487be43 [file] [log] [blame]
Brahma Kd1a2cea2011-08-30 09:33:29 +05301if(user == 'Guest'){
2 $dh(page_body.left_sidebar);
3}
4
5var current_module;
6var is_system_manager = 0;
7var module_content_dict = {};
8var user_full_nm = {};
9
10// check if session user is system manager
11if(inList(user_roles,'System Manager')) is_system_manager = 1;
12
Rushabh Mehta8c309be2012-01-20 13:47:16 +053013wn.require('erpnext/startup/toolbar.js');
14
Brahma Kd1a2cea2011-08-30 09:33:29 +053015function startup_setup() {
16 pscript.is_erpnext_saas = cint(locals['Control Panel']['Control Panel'].sync_with_gateway)
17
Brahma Kd1a2cea2011-08-30 09:33:29 +053018 if(get_url_arg('embed')) {
19 // hide header, footer
Rushabh Mehta8c309be2012-01-20 13:47:16 +053020 $('.topbar').css('display', 'none');
Brahma Kd1a2cea2011-08-30 09:33:29 +053021 $dh(page_body.footer);
22 return;
23 }
Rushabh Mehta8c309be2012-01-20 13:47:16 +053024
Brahma Kd1a2cea2011-08-30 09:33:29 +053025 $dh(page_body.banner_area);
26
27 // sidebar
28 // -------
29 pscript.startup_make_sidebar();
30
31 // border to the body
32 // ------------------
Rushabh Mehtabedc1fe2012-01-17 18:17:06 +053033 page_body.footer.innerHTML = '<div class="erpnext-footer">Powered by <a href="https://erpnext.com">ERPNext</a></div>';
Brahma Kd1a2cea2011-08-30 09:33:29 +053034
Rushabh Mehta5f66d602011-10-11 10:58:11 +053035 // setup toolbar
Rushabh Mehta8c309be2012-01-20 13:47:16 +053036 erpnext.toolbar.setup();
Brahma Kd1a2cea2011-08-30 09:33:29 +053037}
38
39// ====================================================================
40
41pscript.startup_make_sidebar = function() {
42 $y(page_body.left_sidebar, {width:(100/6)+'%', paddingTop:'8px'});
43
44 var callback = function(r,rt) {
45 // menu
46 var ml = r.message;
47
48 // clear
49 page_body.left_sidebar.innerHTML = '';
50
51 for(var m=0; m<ml.length; m++){
52 if(ml[m]) {
53 new SidebarItem(ml[m]);
54 }
55 }
56 if(in_list(user_roles, 'System Manager')) {
57 var div = $a(page_body.left_sidebar, 'div', 'link_type', {padding:'8px', fontSize:'11px'});
58 $(div).html('[edit]').click(pscript.startup_set_module_order)
59 }
60 nav_obj.observers.push({notify:function(t,dt,dn) { pscript.select_sidebar_menu(t, dt, dn); }});
61
62 // select current
63 var no = nav_obj.ol[nav_obj.ol.length-1];
64 if(no && menu_item_map[decodeURIComponent(no[0])][decodeURIComponent(no[1])])
65 pscript.select_sidebar_menu(decodeURIComponent(no[0]), decodeURIComponent(no[1]));
66 }
67 $c_obj('Home Control', 'get_modules', '', callback);
68}
69
70// ====================================================================
71// Menu observer
72// ====================================================================
73
74cur_menu_pointer = null;
75var menu_item_map = {'Form':{}, 'Page':{}, 'Report':{}, 'List':{}}
76
77pscript.select_sidebar_menu = function(t, dt, dn) {
78 // get menu item
79 if(menu_item_map[t][dt]) {
80 // select
81 menu_item_map[t][dt].select();
82 } else {
83 // none found :-( Unselect
84 if(cur_menu_pointer)
85 cur_menu_pointer.deselect();
86 }
87}
88
89// ====================================================================
90// Menu pointer
91// ====================================================================
92
93var body_background = '#e2e2e2';
94
95MenuPointer = function(parent, label) {
96
97 this.wrapper = $a(parent, 'div', '', {padding:'0px', cursor:'pointer', margin:'2px 0px'});
98 $br(this.wrapper, '3px');
99
100 this.tab = make_table($a(this.wrapper, 'div'), 1, 2, '100%', ['', '11px'], {height:'22px',
101 verticalAlign:'middle', padding:'0px'}, {borderCollapse:'collapse', tableLayout:'fixed'});
102
103 $y($td(this.tab, 0, 0), {padding:'0px 4px', color:'#444', whiteSpace:'nowrap'});
104
105 // triangle border (?)
106 this.tab.triangle_div = $a($td(this.tab, 0, 1), 'div','', {
Nabin Haitb30c4a62011-10-05 11:36:16 +0530107 borderColor: body_background + ' ' + body_background + ' ' + body_background + ' ' + 'transparent',
Brahma Kd1a2cea2011-08-30 09:33:29 +0530108 borderWidth:'11px', borderStyle:'solid', height:'0px', width:'0px', marginRight:'-11px'});
109
110 this.label_area = $a($td(this.tab, 0, 0), 'span', '', '', label);
111
112 $(this.wrapper)
113 .hover(
Nabin Haitb30c4a62011-10-05 11:36:16 +0530114 function() { if(!this.selected)$bg(this, '#eee'); } ,
115 function() { if(!this.selected)$bg(this, body_background); }
Brahma Kd1a2cea2011-08-30 09:33:29 +0530116 )
117
118 $y($td(this.tab, 0, 0), {borderBottom:'1px solid #ddd'});
119
120}
121
122// ====================================================================
123
124MenuPointer.prototype.select = function(grey) {
Nabin Haitb30c4a62011-10-05 11:36:16 +0530125 $y($td(this.tab, 0, 0), {color:'#fff', borderBottom:'0px solid #000'});
Brahma Kd1a2cea2011-08-30 09:33:29 +0530126 //$gr(this.wrapper, '#F84', '#F63');
127 $gr(this.wrapper, '#888', '#666');
128 this.selected = 1;
129
130 if(cur_menu_pointer && cur_menu_pointer != this)
131 cur_menu_pointer.deselect();
132
133 cur_menu_pointer = this;
134}
135
136// ====================================================================
137
138MenuPointer.prototype.deselect = function() {
Nabin Haitb30c4a62011-10-05 11:36:16 +0530139 $y($td(this.tab, 0, 0), {color:'#444', borderBottom:'1px solid #ddd'});
Brahma Kd1a2cea2011-08-30 09:33:29 +0530140 $gr(this.wrapper, body_background, body_background);
141 this.selected = 0;
142}
143
144
145// ====================================================================
146// Sidebar Item
147// ====================================================================
148
149var cur_sidebar_item = null;
150
151SidebarItem = function(det) {
152 var me = this;
153 this.det = det;
154 this.wrapper = $a(page_body.left_sidebar, 'div', '', {marginRight:'12px'});
155
156 this.body = $a(this.wrapper, 'div');
157 this.tab = make_table(this.body, 1, 2, '100%', ['24px', null], {verticalAlign:'middle'}, {tableLayout:'fixed'});
158
159 // icon
160 var ic = $a($td(this.tab, 0, 0), 'div', 'module-icons module-icons-' + det.module_label.toLowerCase(), {marginLeft:'3px', marginBottom:'-2px'});
161
162 // pointer table
163 this.pointer = new MenuPointer($td(this.tab, 0, 1), det.module_label);
164 $y($td(this.pointer.tab, 0, 0), {fontWeight:'bold'});
165
166 // for page type
167 if(det.module_page) {
168 menu_item_map.Page[det.module_page] = this.pointer;
169 }
170
171 // items area
172 this.items_area = $a(this.wrapper, 'div');
173
174 this.body.onclick = function() { me.onclick(); }
175}
176
177// ====================================================================
178
179SidebarItem.prototype.onclick = function() {
180 var me = this;
181
182 if(this.det.module_page) {
183 // page type
184 this.pointer.select();
185
186 $item_set_working(me.pointer.label_area);
187 loadpage(this.det.module_page, function() { $item_done_working(me.pointer.label_area); });
188
189 } else {
190 // show sub items
191 this.toggle();
192 }
193}
194
195// ====================================================================
196
197SidebarItem.prototype.collapse = function() {
198 $(this.items_area).slideUp();
199 this.is_open = 0;
200 $fg(this.pointer.label_area, '#444')
201}
202
203// ====================================================================
204
205SidebarItem.prototype.toggle = function() {
206 if(this.loading) return;
207
208 if(this.is_open) {
209 this.collapse();
210 } else {
211 if(this.loaded) $(this.items_area).slideDown();
212 else this.show_items();
213 this.is_open = 1;
214 $fg(this.pointer.label_area, '#000')
215 //this.pointer.select(1);
216
217 // close existing open
218 if(cur_sidebar_item && cur_sidebar_item != this) {
219 cur_sidebar_item.collapse();
220 }
221 cur_sidebar_item = this;
222 }
223}
224
225// ====================================================================
226
227SidebarItem.prototype.show_items = function() {
228 this.loading = 1;
229 var me = this;
230
231 $item_set_working(this.pointer.label_area);
232 var callback = function(r,rt){
233 me.loaded = 1;
234 me.loading = 0;
235 var smi = null;
236 var has_reports = 0;
237 var has_tools = 0;
238
239 // widget code
240 $item_done_working(me.pointer.label_area);
241
242 if(r.message.il) {
243 me.il = r.message.il;
244
245 // forms
246 for(var i=0; i<me.il.length;i++){
247 if(me.il[i].doc_type == 'Forms') {
248 if(in_list(profile.can_read, me.il[i].doc_name)) {
249 var smi = new SidebarModuleItem(me, me.il[i]);
250
251 menu_item_map['Form'][me.il[i].doc_name] = smi.pointer;
252 menu_item_map['List'][me.il[i].doc_name] = smi.pointer;
253 }
254 }
255 if(me.il[i].doc_type=='Reports') has_reports = 1;
256 if(in_list(['Single DocType', 'Pages', 'Setup Forms'], me.il[i].doc_type)) has_tools = 1;
257 }
258 // reports
259 if(has_reports) {
260 var smi = new SidebarModuleItem(me, {doc_name:'Reports', doc_type:'Reports'});
261
262 // add to menu-item mapper
263 menu_item_map['Page'][me.det.module_label + ' Reports'] = smi.pointer;
264 }
265
266 // tools
267 if(has_tools) {
268 var smi = new SidebarModuleItem(me, {doc_name:'Tools', doc_type:'Tools'});
269
270 // add to menu-item mapper
271 menu_item_map['Page'][me.det.module_label + ' Tools'] = smi.pointer;
272 }
273
274 // custom reports
275 if(r.message.custom_reports.length) {
276 me.il = add_lists(r.message.il, r.message.custom_reports);
277 var smi = new SidebarModuleItem(me, {doc_name:'Custom Reports', doc_type:'Custom Reports'});
278
279 // add to menu-item mapper
280 menu_item_map['Page'][me.det.module_label + ' Custom Reports'] = smi.pointer;
Brahma Kd1a2cea2011-08-30 09:33:29 +0530281 }
Brahma Kd1a2cea2011-08-30 09:33:29 +0530282 }
Rushabh Mehta5f66d602011-10-11 10:58:11 +0530283
Rushabh Mehta5f66d602011-10-11 10:58:11 +0530284
Brahma Kd1a2cea2011-08-30 09:33:29 +0530285 $(me.items_area).slideDown();
286
287 // high light
288 var no = nav_obj.ol[nav_obj.ol.length-1];
289 if(no && menu_item_map[decodeURIComponent(no[0])][decodeURIComponent(no[1])])
290 pscript.select_sidebar_menu(decodeURIComponent(no[0]), decodeURIComponent(no[1]));
291
292 }
293
294 $c_obj('Home Control', 'get_module_details', me.det.name, callback);
295}
296
297// ====================================================================
298// Show Reports
299// ====================================================================
300
301SidebarItem.prototype.show_section = function(sec_type) {
302 var me = this;
303 var label = this.det.module_label + ' ' + sec_type;
304 var type_map = {'Reports':'Reports', 'Custom Reports':'Custom Reports', 'Pages':'Tools', 'Single DocType':'Tools', 'Setup Forms':'Tools'}
305
306 if(page_body.pages[label]) {
307 loadpage(label, null, 1);
308 } else {
309 // make the reports page
310 var page = page_body.add_page(label);
311 this.wrapper = $a(page,'div','layout_wrapper');
312
313
314 // head
315 this.head = new PageHeader(this.wrapper, label);
316
317 // body
318 this.body1 = $a(this.wrapper, 'div', '', {marginTop:'16px'});
319
320 // add a report link
321 var add_link = function(det) {
322 var div = $a(me.body1, 'div', '', {marginBottom:'6px'});
323 var span = $a(div, 'span', 'link_type');
324
325 // tag the span
326 span.innerHTML = det.display_name; span.det = det;
327 if(sec_type=='Reports' || sec_type=='Custom Reports') {
328 // Reports
329 // -------
330 span.onclick = function() { loadreport(this.det.doc_name, this.det.display_name); }
331
332 } else {
333 // Tools
334 // -----
335
336 if(det.doc_type=='Pages') {
337 // Page
338 if(det.click_function) {
339 span.onclick = function() { eval(this.det.click_function) }
340 span.click_function = det.click_function;
341 } else {
342 span.onclick = function() { loadpage(this.det.doc_name); }
343 }
344 } else if(det.doc_type=='Setup Forms') {
345 // Doc Browser
346 span.onclick = function() { loaddocbrowser(this.det.doc_name); }
347 } else {
348 // Single
349 span.onclick = function() { loaddoc(this.det.doc_name, this.det.doc_name); }
350 }
351 }
352 }
353
354 // item list
355 for(var i=0; i<me.il.length;i++){
356 if(type_map[me.il[i].doc_type] == sec_type) {
357 add_link(me.il[i]);
358 }
359 }
360 loadpage(label, null, 1);
361 }
362}
363
364
365// ====================================================================
366// Sidebar module item
367// ====================================================================
368
369SidebarModuleItem = function(si, det) {
370 this.det = det;
371 var me= this;
372
373 this.pointer = new MenuPointer(si.items_area, get_doctype_label(det.doc_name));
374 $y(si.items_area, {marginLeft:'32px'})
375 $y($td(this.pointer.tab, 0, 0), {fontSize:'11px'});
376
377 this.pointer.wrapper.onclick = function() {
378 if(me.det.doc_type=='Forms')
379 loaddocbrowser(det.doc_name);
380 else
381 si.show_section(me.det.doc_type);
382 }
383}
384
385
386// ====================================================================
387// Drag & Drop order selection
388// ====================================================================
389
390pscript.startup_set_module_order = function() {
391 var update_order= function(ml) {
392 mdict = {};
393 for(var i=0; i<ml.length; i++) {
394 mdict[ml[i][3][3]] = {'module_seq':ml[i][1], 'is_hidden':(ml[i][2] ? 'No' : 'Yes')}
395 }
396 $c_obj('Home Control', 'set_module_order', JSON.stringify(mdict), function(r,rt) { pscript.startup_make_sidebar(); } )
397 }
398
399 var callback = function(r, rt) {
400 var ml = [];
401 for(var i=0; i<r.message.length; i++) {
402 var det = r.message[i];
403 ml.push([det[1], det[2], (det[3]!='No' ? 0 : 1), det[0]]);
404 }
405 new ListSelector('Set Module Sequence', 'Select items and set the order you want them to appear'+
406 '<br><b>Note:</b> <i>These changes will apply to all users!</i>', ml, update_order, 1);
407 }
408 $c_obj('Home Control', 'get_module_order', '', callback)
409
410}
Brahma Kd1a2cea2011-08-30 09:33:29 +0530411// chart of accounts
412// ====================================================================
413show_chart_browser = function(nm, chart_type){
414
415 var call_back = function(){
416 if(nm == 'Sales Browser'){
417 var sb_obj = new SalesBrowser();
418 sb_obj.set_val(chart_type);
419 }
420 else if(nm == 'Accounts Browser')
421 pscript.make_chart(chart_type);
422 }
423 loadpage(nm,call_back);
424}
425
426
427// Module Page
428// ====================================================================
429
430ModulePage = function(parent, module_name, module_label, help_page, callback) {
431 this.parent = parent;
432
433 // add to current page
434 page_body.cur_page.module_page = this;
435
436 this.wrapper = $a(parent,'div');
437 this.module_name = module_name;
438 this.transactions = [];
439 this.page_head = new PageHeader(this.wrapper, module_label);
440
441 if(help_page) {
442 var btn = this.page_head.add_button('Help', function() { loadpage(this.help_page) }, 1, 'ui-icon-help')
443 btn.help_page = help_page;
444 }
445
446 if(callback) this.callback = function(){ callback(); }
447}
448
449
450// get plural
451// ====================================================================
452
453get_plural = function(str){
454 if(str.charAt(str.length-1).toLowerCase() == 'y') return str.substr(0, str.length-1) + 'ies'
455 else return str + 's';
456}
457
458// set user fullname
459// ====================================================================
460pscript.set_user_fullname = function(ele,username,get_latest){
461
462 var set_it = function(){
463 if(ele)
464 ele.innerHTML = user_full_nm[username];
465 }
466
467 if(get_latest){
468 $c_obj('Home Control','get_user_fullname',username, function(r,rt){ user_full_nm[username] = r.message; set_it(); });
469 }
470 else{
471 if(user_full_nm[username]){
472 set_it();
473 }
474
475 else
476 $c_obj('Home Control','get_user_fullname',username, function(r,rt){ user_full_nm[username] = r.message; set_it(); });
477 }
478}
479
480// ====================================================================
481startup_setup();
482
483/* features setup "Dictionary", "Script"
484Dictionary Format
485 'projects': {
486 'Sales Order': {
487 'fields':['project_name'],
488 'sales_order_details':['projected_qty']
489 },
490 'Purchase Order': {
491 'fields':['project_name']
492 }
493 }
494// ====================================================================*/
495pscript.feature_dict = {
Nabin Haitb30c4a62011-10-05 11:36:16 +0530496 'fs_projects': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530497 'Bill Of Materials': {'fields':['project_name']},
498 'Delivery Note': {'fields':['project_name']},
499 'Payable Voucher': {'fields':['project_name']},
500 'Production Order': {'fields':['project_name']},
501 'Purchase Order': {'fields':['project_name']},
502 'Purchase Receipt': {'fields':['project_name']},
503 'Receivable Voucher': {'fields':['project_name']},
504 'Sales Order': {'fields':['project_name']},
505 'Stock Entry': {'fields':['project_name']},
506 'Timesheet': {'timesheet_details':['project_name']}
507 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530508 'fs_packing_details': {
Nabin Haitc1d42812011-10-11 12:50:55 +0530509 'Delivery Note': {'fields':['packing_details','print_packing_slip','packing_checked_by','packed_by','pack_size','shipping_mark'],'delivery_note_details':['no_of_packs','pack_gross_wt','pack_nett_wt','pack_no','pack_unit']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530510 'Sales Order': {'fields':['packing_details']}
511 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530512 'fs_discounts': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530513 'Delivery Note': {'delivery_note_details':['adj_rate']},
514 'Quotation': {'quotation_details':['adj_rate']},
Brahma K5ecb6932011-08-31 09:02:01 +0530515 'Receivable Voucher': {'entries':['adj_rate']},
Brahma K3c9a6a12011-08-31 12:55:41 +0530516 'Sales Order': {'sales_order_details':['adj_rate','ref_rate']}
Brahma Kd1a2cea2011-08-30 09:33:29 +0530517 },
Nabin Hait3a2fcba2011-12-14 11:26:46 +0530518 'fs_purchase_discounts': {
519 'Purchase Order': {'po_details':['purchase_ref_rate', 'discount_rate', 'import_ref_rate']},
520 'Purchase Receipt': {'purchase_receipt_details':['purchase_ref_rate', 'discount_rate', 'import_ref_rate']},
521 'Payable Voucher': {'entries':['purchase_ref_rate', 'discount_rate', 'import_ref_rate']}
522 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530523 'fs_brands': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530524 'Delivery Note': {'delivery_note_details':['brand']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530525 'Indent': {'indent_details':['brand']},
526 'Item': {'fields':['brand']},
527 'Purchase Order': {'po_details':['brand']},
Brahma K5ecb6932011-08-31 09:02:01 +0530528 'Payable Voucher': {'entries':['brand']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530529 'Quotation': {'quotation_details':['brand']},
Brahma K5ecb6932011-08-31 09:02:01 +0530530 'Receivable Voucher': {'entries':['brand']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530531 'Sales BOM': {'fields':['new_item_brand']},
532 'Sales Order': {'sales_order_details':['brand']},
533 'Serial No': {'fields':['brand']}
534 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530535 'fs_after_sales_installations': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530536 'Delivery Note': {'fields':['installation_status','per_installed'],'delivery_note_details':['installed_qty']}
537 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530538 'fs_item_batch_nos': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530539 'Delivery Note': {'delivery_note_details':['batch_no']},
540 'Item': {'fields':['has_batch_no']},
541 'Purchase Receipt': {'purchase_receipt_details':['batch_no']},
542 'QA Inspection Report': {'fields':['batch_no']},
543 'Sales and Pruchase Return Wizard': {'return_details':['batch_no']},
Brahma K5ecb6932011-08-31 09:02:01 +0530544 'Receivable Voucher': {'entries':['batch_no']},
545 'Stock Entry': {'mtn_details':['batch_no']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530546 'Stock Ledger Entry': {'fields':['batch_no']}
547 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530548 'fs_item_serial_nos': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530549 'Customer Issue': {'fields':['serial_no']},
Brahma K5ecb6932011-08-31 09:02:01 +0530550 'Delivery Note': {'delivery_note_details':['serial_no'],'packing_details':['serial_no']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530551 'Installation Note': {'installed_item_details':['serial_no']},
552 'Item': {'fields':['has_serial_no']},
553 'Maintenance Schedule': {'item_maintenance_details':['serial_no'],'maintenance_schedule_details':['serial_no']},
554 'Maintenance Visit': {'maintenance_visit_details':['serial_no']},
555 'Purchase Receipt': {'purchase_receipt_details':['serial_no']},
556 'QA Inspection Report': {'fields':['item_serial_no']},
557 'Sales and Pruchase Return Wizard': {'return_details':['serial_no']},
Brahma K5ecb6932011-08-31 09:02:01 +0530558 'Receivable Voucher': {'entries':['serial_no']},
559 'Stock Entry': {'mtn_details':['serial_no']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530560 'Stock Ledger Entry': {'fields':['serial_no']}
561 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530562 'fs_item_group_in_details': {
Brahma Kd1a2cea2011-08-30 09:33:29 +0530563 'Delivery Note': {'delivery_note_details':['item_group']},
564 'Enquiry': {'enquiry_details':['item_group']},
565 'Indent': {'indent_details':['item_group']},
566 'Item': {'fields':['item_group']},
567 'Manage Account': {'fields':['default_item_group']},
568 'Purchase Order': {'po_details':['item_group']},
569 'Purchase Receipt': {'purchase_receipt_details':['item_group']},
Brahma K5ecb6932011-08-31 09:02:01 +0530570 'Purchase Voucher': {'entries':['item_group']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530571 'Quotation': {'quotation_details':['item_group']},
Brahma K5ecb6932011-08-31 09:02:01 +0530572 'Receivable Voucher': {'entries':['item_group']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530573 'Sales BOM': {'fields':['serial_no']},
574 'Sales Order': {'sales_order_details':['item_group']},
575 'Serial No': {'fields':['item_group']},
576 'Sales Partner': {'partner_target_details':['item_group']},
577 'Sales Person': {'target_details':['item_group']},
578 'Territory': {'target_details':['item_group']}
579 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530580 'fs_page_break': {
Brahma K5ecb6932011-08-31 09:02:01 +0530581 'Delivery Note': {'delivery_note_details':['page_break'],'packing_details':['page_break']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530582 'Indent': {'indent_details':['page_break']},
583 'Purchase Order': {'po_details':['page_break']},
584 'Purchase Receipt': {'purchase_receipt_details':['page_break']},
Brahma K5ecb6932011-08-31 09:02:01 +0530585 'Purchase Voucher': {'entries':['page_break']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530586 'Quotation': {'quotation_details':['page_break']},
Brahma K5ecb6932011-08-31 09:02:01 +0530587 'Receivable Voucher': {'entries':['page_break']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530588 'Sales Order': {'sales_order_details':['page_break']}
589 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530590 'fs_exports': {
Brahma K5ecb6932011-08-31 09:02:01 +0530591 'Delivery Note': {'fields':['Note','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'delivery_note_details':['base_ref_rate','export_amount','export_rate']},
592 'POS Setting': {'fields':['conversion_rate','currency']},
593 'Quotation': {'fields':['Note HTML','OT Notes','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'quotation_details':['base_ref_rate','export_amount','export_rate']},
594 'Receivable Voucher': {'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'entries':['base_ref_rate','export_amount','export_rate']},
595 'Item': {'ref_rate_details':['ref_currency']},
Brahma Kd1a2cea2011-08-30 09:33:29 +0530596 'Sales BOM': {'fields':['currency']},
Brahma K8e8c4822011-08-31 15:46:29 +0530597 'Sales Order': {'fields':['Note1','OT Notes','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'sales_order_details':['base_ref_rate','export_amount','export_rate']}
Brahma Kd1a2cea2011-08-30 09:33:29 +0530598 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530599 'fs_imports': {
Brahma K5ecb6932011-08-31 09:02:01 +0530600 'Payable Voucher': {'fields':['conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'entries':['import_amount','import_rate']},
601 'Purchase Order': {'fields':['Note HTML','conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'po_details':['import_amount','import_rate']},
Brahma K8e8c4822011-08-31 15:46:29 +0530602 'Purchase Receipt': {'fields':['conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'purchase_receipt_details':['import_amount','import_rate']},
603 'Supplier Quotation': {'fields':['conversion_rate','currency']}
Brahma K5ecb6932011-08-31 09:02:01 +0530604 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530605 'fs_item_advanced': {
Brahma K5ecb6932011-08-31 09:02:01 +0530606 'Item': {'fields':['item_customer_details']}
607 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530608 'fs_sales_extras': {
Brahma K5ecb6932011-08-31 09:02:01 +0530609 'Address': {'fields':['sales_partner']},
610 'Contact': {'fields':['sales_partner']},
611 'Customer': {'fields':['sales_team']},
612 'Delivery Note': {'fields':['sales_team','Packing List']},
613 'Item': {'fields':['item_customer_details']},
614 'Receivable Voucher': {'fields':['sales_team']},
615 'Sales Order': {'fields':['sales_team','Packing List']}
616 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530617 'fs_more_info': {
Brahma K5ecb6932011-08-31 09:02:01 +0530618 'Customer': {'fields':['More Info']},
619 'Delivery Note': {'fields':['More Info']},
620 'Enquiry': {'fields':['More Info']},
621 'Indent': {'fields':['More Info']},
622 'Lead': {'fields':['More Info']},
623 'Payable Voucher': {'fields':['More Info']},
624 'Purchase Order': {'fields':['More Info']},
625 'Purchase Receipt': {'fields':['More Info']},
626 'Quotation': {'fields':['More Info']},
627 'Receivable Voucher': {'fields':['More Info']},
628 'Sales Order': {'fields':['More Info']},
629 'Serial No': {'fields':['More Info']},
630 'Supplier': {'fields':['More Info']}
631 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530632 'fs_quality': {
Brahma K5ecb6932011-08-31 09:02:01 +0530633 'Item': {'fields':['Item Inspection Criteria','inspection_required']},
634 'Purchase Receipt': {'purchase_receipt_details':['qa_no']}
635 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530636 'fs_manufacturing': {
Brahma K5ecb6932011-08-31 09:02:01 +0530637 'Item': {'fields':['Manufacturing']}
638 },
Nabin Haitb30c4a62011-10-05 11:36:16 +0530639 'fs_pos': {
Brahma K5ecb6932011-08-31 09:02:01 +0530640 'Receivable Voucher': {'fields':['is_pos']}
Nabin Hait38d24532011-12-06 19:04:21 +0530641 },
642 'fs_recurring_invoice': {
643 'Receivable Voucher': {'fields': ['Recurring Invoice']}
Brahma Kd1a2cea2011-08-30 09:33:29 +0530644 }
Brahma Kd1a2cea2011-08-30 09:33:29 +0530645}
646
647$(document).bind('form_refresh', function() {
648 for(sys_feat in sys_defaults)
649 {
650 if(sys_defaults[sys_feat]=='0' && (sys_feat in pscript.feature_dict)) //"Features to hide" exists
651 {
652 if(cur_frm.doc.doctype in pscript.feature_dict[sys_feat])
653 {
654 for(fort in pscript.feature_dict[sys_feat][cur_frm.doc.doctype])
655 {
656 if(fort=='fields')
657 hide_field(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort]);
Brahma K5ecb6932011-08-31 09:02:01 +0530658 else if(cur_frm.fields_dict[fort])
Brahma Kd1a2cea2011-08-30 09:33:29 +0530659 {
660 for(grid_field in pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort])
Brahma K5ecb6932011-08-31 09:02:01 +0530661 cur_frm.fields_dict[fort].grid.set_column_disp(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort][grid_field], false);
Brahma Kd1a2cea2011-08-30 09:33:29 +0530662 }
Brahma K5ecb6932011-08-31 09:02:01 +0530663 else
664 msgprint('Grid "'+fort+'" does not exists');
Brahma Kd1a2cea2011-08-30 09:33:29 +0530665 }
666 }
667 }
668 }
669})