Project

General

Profile

Bug #481 » MinovaXtype.js

Tri Rizqiaty, 10/15/2021 09:33 AM

 
1
var isMobile = {
2
	Android: function () {
3
		return navigator.userAgent.match(/Android/i);
4
	},
5
	BlackBerry: function () {
6
		return navigator.userAgent.match(/BlackBerry/i);
7
	},
8
	iOS: function () {
9
		return navigator.userAgent.match(/iPhone|iPad|iPod/i);
10
	},
11
	Opera: function () {
12
		return navigator.userAgent.match(/Opera Mini/i);
13
	},
14
	Windows: function () {
15
		return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);
16
	},
17
	any: function () {
18
		return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
19
	}
20
};
21
var isDesk = true;
22
var layoutForm = 'column';
23
if (isMobile.Android() != null || isMobile.BlackBerry() != null || isMobile.iOS() != null) {
24
	isDesk = false;
25
	layoutForm = 'column'
26
} else {
27
	isDesk = true;
28
	layoutForm = 'column';
29
}
30

    
31
Ext.define('MinovaUtil.MinovaES.MinovaLookupGridold', {
32
	extend: 'Ext.form.field.Trigger',
33
	alias: ['widget.minovalookupgridold'],
34

    
35
	tableName: undefined,
36
	param: undefined,
37
	formtarget: undefined,
38
	anchor: '50%',
39
	pagesize: undefined,
40
	fieldTarget: undefined,
41
	fieldValue: undefined,
42
	isGrid: undefined,
43
	isMultiSelect: undefined,
44
	LookupFunction: undefined,
45
	SearchFunction: undefined,
46

    
47
	trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger',
48
	trigger2Cls: Ext.baseCSSPrefix + 'form-search-trigger',
49
	setValue: function (v) {
50
		var me = this;
51
		var value = v;
52
		this.value = '';
53
		this.value = v;
54
		if (value != "" && value != undefined) {
55
			data_ = undefined;
56
			Ext.Ajax.request({
57
				async: false,
58
				method: 'POST',
59
				url: '/UserControl/GetStore',
60
				params: {
61
					tableName: 'PDSCMTABLE',
62
					param: this.tableName + ',' + v + ',hasil'
63
				},
64
				success: function (response) {
65
					var results = Ext.decode(response.responseText);
66
					data_ = results.data
67
						if (data_.length > 0) {
68
							me.setRawValue(v + ' - ' + data_[0].hasil)
69

    
70
						}
71
				}
72
			});
73
		}
74
	},
75
	getValue: function () {
76
		var hasil = this.value;
77
		if (this.valData) {
78
			hasil = this.valData;
79
		}
80
		return hasil;
81
	},
82
	getSubmitValue: function () {
83
		var hasil = this.value;
84
		if (this.valData) {
85
			hasil = this.valData;
86
		}
87
		return hasil;
88
	},
89
	initComponent: function () {
90
		//var formtarget_ = this.formtarget;
91
		var pagesize = this.pagesize;
92
		var tableName = this.tableName;
93
		this.callParent();
94
	},
95
	onRender: function () {
96
		var me = this,
97
		el;
98

    
99
		me.callParent(arguments);
100

    
101
		el = me.triggerEl.first().parent();
102
		el.setVisibilityMode(Ext.Element.DISPLAY);
103
		el.hide();
104
	},
105

    
106
	onChange: function (newVal, oldVal) {
107
		var me = this
108
			el = me.triggerEl.first().parent();
109

    
110
		me.callParent(arguments);
111

    
112
		if (newVal.length) {
113
			el.show();
114
		} else {
115
			el.hide();
116
		}
117
	},
118

    
119
	onTrigger1Click: function (event) {
120
		var me = this;
121
		if (me.hideTrigger) {
122
			return;
123
		}
124
		me.setValue("");
125
		me.fireEvent('cleartriggerclick', me, event);
126
	},
127
	onTrigger2Click: function () {
128
		//alert('asa')
129
		var isGrid_ = this.isGrid;
130
		var fieldTarget_ = this.fieldTarget;
131
		var formtarget_ = this.formtarget;
132
		var fieldValue_ = this.fieldValue;
133
		var tableName = this.tableName;
134
		var LookupFunction_ = this.LookupFunction;
135
		var SearchFunction_ = this.SearchFunction;
136
		var pnl = Ext.ComponentQuery.query('[name=' + formtarget_ + ']')[0];
137

    
138
		if (tableName == 'PDSPY0006') {
139
			Ext.create('Ext.window.Window', {
140
				title: 'Lookup - ' + this.fieldLabel,
141
				//hamid
142
				controller: 'rdlreportPayResult',
143
				//end hamid
144
				height: 530,
145
				width: 500,
146
				fieldTarget: fieldTarget_,
147
				fieldValue: fieldValue_,
148
				isGrid: isGrid_,
149
				name: 'lookupMain',
150
				//modal: true,
151
				listeners: {
152
					'beforeshow': function (g) {
153
						pnl.mask('Loading...');
154
						setTimeout(function () {
155
							pnl.unmask();
156
						}, 100);
157
					}
158
				},
159
				items: [{
160
						xtype: 'minovaform',
161
						bodyBorder: false,
162
						MaxHeigth: '100',
163
						cls: 'borderLookup',
164
						border: false,
165
						scroll: true,
166
						isLookup: true,
167
						name: "formLookupFilter",
168
						tableName: this.tableName,
169
						buttons: [{
170
								text: 'Search',
171
								//iconCls : 'fa-edit',
172
								//style : 'font-family: FontAwesome',
173
								handler: function () {
174
									var store = Ext.data.StoreManager.lookup('lookupStore');
175
									var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
176
									grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
177
									var values_ = form.getValues();
178
									var fields_ = form.getFields().items;
179
									var param_ = '';
180
									for (var i = 0; i < fields_.length; i++) {
181
										var val_ = form.getFields().items[i].getValue();
182
										var xtype_ = form.getFields().items[i].xtype;
183
										var oprator_ = '[like]';
184
										if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
185
											oprator_ = '[Equal]';
186
										}
187
										if (xtype_ == 'datefield') {
188
											if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
189
												oprator_ = '[LessThanEqual]';
190
											} else {
191
												oprator_ = '[GreaterThanEqual]';
192
											}
193
										}
194
										if (val_ != 'undefined' && val_ != "" && val_ != null) {
195
											param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
196
										}
197
									}
198
									store.proxy.extraParams = {
199
										tableName: grid.tableName,
200
										param: param_,
201
										menuId: MinovaUtil.GetMenuID()
202
									};
203
									store.removeAll();
204
									store.reload();
205
									store.loadPage(1);
206
								}
207

    
208
							}
209
						],
210
					}, {
211
						xtype: 'minovagrid1',
212
						isLookup: true,
213
						autoLoad: false,
214
						minHeight: 280,
215
						height: 380,
216
						tableName: this.tableName,
217
						param: '',
218
						//name: 'gridForm' + this.tableName,
219
						name: 'gridLookup',
220
						hidebutton: 0,
221
						pagesize: 25,
222
						storename: 'lookupStore',
223
						listeners: {
224
							itemdblclick: function (g) {
225

    
226
								var me = this;
227
								var selection = this.getView().getSelectionModel().getSelection()[0];
228
								var name_ = 'form[name=' + formtarget_ + ']';
229
								var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
230
								var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
231
								var targetField = mainLookup.fieldTarget;
232
								if (mainLookup.isGrid) {
233
									if (targetField) {
234
										targetField = targetField.split('$')
235
											var dt = targetField[0].split(',');
236
										var fieldValue = targetField[1].split(',');
237
										if (fieldValue.length > 0) {
238
											for (i in dt) {
239
												field_ = dt[i];
240
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
241
											}
242
										} else {
243
											for (i in dt) {
244
												field_ = dt[i];
245
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
246
											}
247
										}
248

    
249
									}
250
								}
251
								//else {// untuk form
252
								if (targetField) {
253
									var dt = targetField.split(',');
254
									var fieldValue = mainLookup.fieldValue.split(',');
255
									if (fieldValue.length > 0) {
256
										for (i in dt) {
257
											field_ = dt[i];
258
											Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
259
										}
260
									} else {
261
										for (i in dt) {
262
											field_ = dt[i];
263
											Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
264
										}
265
									}
266
								} else {
267
									form_.setValues(selection.data);
268
								}
269
								//}
270

    
271
								mainLookup.destroy();
272
							},
273
							beforeedit: function (grid) {
274
								return false;
275
							}
276
						},
277
						dockedItems: [{
278
								xtype: 'pagingtoolbar',
279
								store: 'lookupStore',
280
								dock: 'bottom',
281
								pageSize: 25,
282
								displayInfo: true
283
							}
284
						]
285

    
286
					}, ]
287
			}).show();
288
		} else {
289
			// hamid
290
			Ext.create('Ext.window.Window', {
291
				title: 'Lookup - ' + this.fieldLabel,
292
				height: 560,
293
				width: 500,
294
				fieldTarget: fieldTarget_,
295
				fieldValue: fieldValue_,
296
				isGrid: isGrid_,
297
				name: 'lookupMain',
298
				//modal: true,
299
				listeners: {
300
					'beforeshow': function (g) {
301
						pnl.mask('Loading...');
302
						setTimeout(function () {
303
							pnl.unmask();
304
						}, 100);
305
					}
306
				},
307
				items: [{
308
						xtype: 'minovaform',
309
						bodyBorder: false,
310
						MaxHeigth: '100',
311
						cls: 'borderLookup',
312
						border: false,
313
						MaxHeigth: '30',
314
						scroll: true,
315
						isLookup: true,
316
						name: "formLookupFilter",
317
						tableName: this.tableName,
318
						buttons: [{
319
								text: 'Search',
320
								//iconCls : 'fa-edit',
321
								//style : 'font-family: FontAwesome',
322
								handler: function () {
323

    
324
									var store = Ext.data.StoreManager.lookup('lookupStore');
325
									var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
326
									grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
327
									var values_ = form.getValues();
328
									var fields_ = form.getFields().items;
329
									var param_ = '';
330
									for (var i = 0; i < fields_.length; i++) {
331
										var val_ = form.getFields().items[i].getValue();
332
										var xtype_ = form.getFields().items[i].xtype;
333
										var oprator_ = '[like]';
334
										if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
335
											oprator_ = '[Equal]';
336
										}
337
										if (xtype_ == 'datefield') {
338
											if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
339
												oprator_ = '[LessThanEqual]';
340
											} else {
341
												oprator_ = '[GreaterThanEqual]';
342
											}
343
										}
344
										if (val_ != 'undefined' && val_ != "" && val_ != null) {
345
											param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
346
										}
347
									}
348

    
349
									if (SearchFunction_ != undefined && SearchFunction_ != "") {
350
										eval(SearchFunction_);
351
									} else {
352
										store.proxy.extraParams = {
353
											tableName: grid.tableName,
354
											param: param_,
355
											menuId: MinovaUtil.GetMenuID()
356
										};
357
									}
358
									store.removeAll();
359
									store.reload();
360
									store.loadPage(1);
361
								}
362

    
363
							}
364
						],
365
					}, {
366
						xtype: 'minovagrid1',
367
						isLookup: true,
368
						autoLoad: false,
369
						minHeight: 240,
370
						height: 340,
371
						tableName: this.tableName,
372
						param: '',
373
						//name: 'gridForm' + this.tableName,
374
						name: 'gridLookup',
375
						hidebutton: 0,
376
						pagesize: 25,
377
						storename: 'lookupStore',
378
						listeners: {
379
							itemdblclick: function (g) {
380
								var LookupFunction = LookupFunction_;
381

    
382
								var me = this;
383
								var selection = this.getView().getSelectionModel().getSelection()[0];
384
								var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
385
								var name_ = 'form[name=' + formtarget_ + ']';
386
								if (pnlMain) {
387
									name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
388
								}
389

    
390
								var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
391
								var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
392
								var targetField = mainLookup.fieldTarget;
393
								if (mainLookup.isGrid) {
394
									if (targetField) {
395
										targetField = targetField.split('$')
396
											var dt = targetField[0].split(',');
397
										var fieldValue = targetField[1].split(',');
398
										if (fieldValue.length > 0) {
399
											for (i in dt) {
400
												field_ = dt[i];
401
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
402
											}
403
										} else {
404
											for (i in dt) {
405
												field_ = dt[i];
406
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
407
											}
408
										}
409

    
410
									}
411
								} else { // untuk form
412
									if (targetField) {
413
										var dt = targetField.split(',');
414
										var fieldValue = mainLookup.fieldValue.split(',');
415
										if (fieldValue.length > 0) {
416
											for (i in dt) {
417
												field_ = dt[i];
418
												Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
419
											}
420
										} else {
421
											for (i in dt) {
422
												field_ = dt[i];
423
												Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
424
											}
425
										}
426
									} else {
427
										form_.setValues(selection.data);
428
									}
429
								}
430
								eval(LookupFunction);
431
								mainLookup.destroy();
432
							},
433
							beforeedit: function (grid) {
434
								return false;
435
							}
436
						},
437
						dockedItems: [{
438
								xtype: 'pagingtoolbar',
439
								store: 'lookupStore',
440
								dock: 'bottom',
441
								pageSize: 25,
442
								displayInfo: true
443
							}
444
						]
445

    
446
					}, ]
447
			}).show();
448
		}
449
		//Ext.create('Ext.window.Window', {
450
		//    title: 'Lookup - ' + this.fieldLabel,
451
		//    height: 530,
452
		//    width: 500,
453
		//    fieldTarget: fieldTarget_,
454
		//    fieldValue: fieldValue_,
455
		//    isGrid: isGrid_,
456
		//    name: 'lookupMain',
457
		//    //modal: true,
458
		//    listeners: {
459
		//        'beforeshow': function (g) {
460
		//            pnl.mask('Loading...');
461
		//            setTimeout(function () {
462
		//                pnl.unmask();
463
		//            }, 100);
464
		//        }
465
		//    },
466
		//    items: [{
467
		//        xtype: 'minovaform',
468
		//        bodyBorder: false,
469
		//        MaxHeigth: '100',
470
		//        cls: 'borderLookup',
471
		//        border: false,
472
		//        MaxHeigth: '30',
473
		//        scroll: true,
474
		//        isLookup: true,
475
		//        name: "formLookupFilter",
476
		//        tableName: this.tableName,
477
		//        buttons: [{
478
		//            text: 'Search',
479
		//            //iconCls : 'fa-edit',
480
		//            //style : 'font-family: FontAwesome',
481
		//            handler: function () {
482
		//                var store = Ext.data.StoreManager.lookup('lookupStore');
483
		//                var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
484
		//                grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
485
		//                var values_ = form.getValues();
486
		//                var fields_ = form.getFields().items;
487
		//                var param_ = '';
488
		//                for (var i = 0; i < fields_.length; i++) {
489
		//                    var val_ = form.getFields().items[i].getValue();
490
		//                    var xtype_ = form.getFields().items[i].xtype;
491
		//                    var oprator_ = '[like]';
492
		//                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
493
		//                        oprator_ = '[Equal]';
494
		//                    }
495
		//                    if (xtype_ == 'datefield') {
496
		//                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
497
		//                            oprator_ = '[LessThanEqual]';
498
		//                        } else {
499
		//                            oprator_ = '[GreaterThanEqual]';
500
		//                        }
501
		//                    }
502
		//                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
503
		//                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
504
		//                    }
505
		//                }
506
		//                store.proxy.extraParams = {
507
		//                    tableName: grid.tableName,
508
		//                    param: param_
509
		//                };
510
		//                store.removeAll();
511
		//                store.reload();
512
		//                store.loadPage(1);
513
		//            }
514

    
515
		//        }
516
		//        ],
517
		//    }, {
518
		//        xtype: 'minovagrid1',
519
		//        isLookup: true,
520
		//        autoLoad: false,
521
		//        minHeight: 280,
522
		//        height: 380,
523
		//        tableName: this.tableName,
524
		//        param: '',
525
		//        //name: 'gridForm' + this.tableName,
526
		//        name: 'gridLookup',
527
		//        hidebutton: 0,
528
		//        pagesize: 25,
529
		//        storename: 'lookupStore',
530
		//        listeners: {
531
		//            itemdblclick: function (g) {
532
		//                var me = this;
533
		//                var selection = this.getView().getSelectionModel().getSelection()[0];
534
		//                var name_ = 'form[name=' + formtarget_ + ']';
535
		//                var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
536
		//                var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
537
		//                var targetField = mainLookup.fieldTarget;
538
		//                if (mainLookup.isGrid) {
539
		//                    if (targetField) {
540
		//                        targetField = targetField.split('$')
541
		//                        var dt = targetField[0].split(',');
542
		//                        var fieldValue = targetField[1].split(',');
543
		//                        if (fieldValue.length > 0) {
544
		//                            for (i in dt) {
545
		//                                field_ = dt[i];
546
		//                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
547
		//                            }
548
		//                        } else {
549
		//                            for (i in dt) {
550
		//                                field_ = dt[i];
551
		//                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
552
		//                            }
553
		//                        }
554

    
555

    
556
		//                    }
557
		//                }
558
		//                else {// untuk form
559
		//                    if (targetField) {
560
		//                        var dt = targetField.split(',');
561
		//                        var fieldValue = mainLookup.fieldValue.split(',');
562
		//                        if (fieldValue.length > 0) {
563
		//                            for (i in dt) {
564
		//                                field_ = dt[i];
565
		//                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
566
		//                            }
567
		//                        } else {
568
		//                            for (i in dt) {
569
		//                                field_ = dt[i];
570
		//                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
571
		//                            }
572
		//                        }
573
		//                    }
574
		//                    else {
575
		//                        form_.setValues(selection.data);
576
		//                    }
577
		//                }
578

    
579
		//                mainLookup.destroy();
580
		//            },
581
		//            beforeedit: function (grid) {
582
		//                return false;
583
		//            }
584
		//        },
585
		//        dockedItems: [{
586
		//            xtype: 'pagingtoolbar',
587
		//            store: 'lookupStore',
588
		//            dock: 'bottom',
589
		//            pageSize: 25,
590
		//            displayInfo: true
591
		//        }
592
		//        ]
593

    
594
		//    }, ]
595
		//}).show();
596

    
597
	},
598
	onTrigger1Click: function (event) {
599
		var me = this;
600
		if (me.hideTrigger) {
601
			return;
602
		}
603
		me.setValue("");
604
		me.fireEvent('cleartriggerclick', me, event);
605
	},
606

    
607
});
608

    
609
Ext.define('MinovaUtil.MinovaES.MinovaLookupGrid', {
610
	extend: 'Ext.form.field.Trigger',
611
	alias: ['widget.minovalookupgrid', 'widget.minovalookupgrid2'],
612
	tableName: undefined,
613
	param: undefined,
614
	formtarget: undefined,
615
	anchor: '50%',
616
	pagesize: undefined,
617
	fieldTarget: undefined,
618
	fieldValue: undefined,
619
	isGrid: undefined,
620
	isMultiSelect: undefined,
621
	LookupFunction: undefined,
622
	SearchFunction: undefined,
623
	trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger',
624
	trigger2Cls: Ext.baseCSSPrefix + 'form-search-trigger',
625
	//clearCls: 'x-form-search-clear',
626
	fieldGrid: undefined,
627

    
628
	onTrigger1Click: function (event) {
629
		var me = this;
630
		if (me.hideTrigger) {
631
			return;
632
		}
633
		me.setValue("");
634
		me.setRawValue("");
635
		me.fireEvent('cleartriggerclick', me, event);
636
	},
637
	//onTrigger1Click: function (field) {
638
	//    Ext.Msg.alert("Trigger 1", "Trigger One!!!");
639
	//},
640
	setValue: function (v) {
641
		var me = this;
642
		var value = v;
643
		this.value = '';
644
		this.value = v;
645
		me.setRawValue(v);
646
		if (value != "" && value != undefined) {
647
			data_ = undefined;
648
			Ext.Ajax.request({
649
				async: false,
650
				method: 'POST',
651
				url: '/UserControl/GetStore',
652
				params: {
653
					tableName: 'PDSCMTABLE',
654
					param: this.tableName + ',' + v + ',hasil'
655
				},
656
				success: function (response) {
657
					var results = Ext.decode(response.responseText);
658
					data_ = results.data
659
						if (data_ != null) {
660
							if (data_.length > 0) {
661
								me.setRawValue(v + ' - ' + data_[0].hasil);
662

    
663
							}
664
						}
665

    
666
				}
667
			});
668
		}
669
		//if (me.getRawValue() == "") {
670
		//    me.value(v);
671
		//    me.setRawValue(v);
672
		//}
673
	},
674
	getValue: function () {
675
		var me = this;
676
		var hasil = this.value;
677
		if (this.valData) {
678
			hasil = this.valData;
679
		}
680
		if (hasil == undefined) {
681
			hasil = me.getRawValue();
682
		}
683
		return hasil;
684
	},
685
	getSubmitValue: function () {
686
		var me = this;
687
		var hasil = this.value;
688
		if (this.valData) {
689
			hasil = this.valData;
690
		}
691
		if (hasil == undefined) {
692
			hasil = me.getRawValue();
693
		}
694
		return hasil;
695
	},
696
	initComponent: function () {
697
		//var formtarget_ = this.formtarget;
698
		var pagesize = this.pagesize;
699
		var tableName = this.tableName;
700
		var fieldGrid_ = this.fieldGrid;
701
		this.callParent();
702
	},
703
	onTrigger2Click: function () {
704
		//alert('asa')
705
		var isGrid_ = this.isGrid;
706
		var fieldTarget_ = this.fieldTarget;
707
		var formtarget_ = this.formtarget;
708
		var fieldValue_ = this.fieldValue;
709
		var tableName = this.tableName;
710
		var LookupFunction_ = this.LookupFunction;
711
		var SearchFunction_ = this.SearchFunction;
712
		var fieldGrid_ = this.fieldGrid;
713
		var pnl = Ext.ComponentQuery.query('[name=' + formtarget_ + ']')[0];
714

    
715
		if (tableName == 'PDSPY0006') {
716
			Ext.create('Ext.window.Window', {
717
				title: 'Lookup - ' + this.fieldLabel,
718
				//hamid
719
				controller: 'rdlreportPayResult',
720
				//end hamid
721
				height: 530,
722
				width: 500,
723
				fieldTarget: fieldTarget_,
724
				fieldValue: fieldValue_,
725
				isGrid: isGrid_,
726
				name: 'lookupMain',
727
				//modal: true,
728
				listeners: {
729
					'beforeshow': function (g) {
730
						pnl.mask('Loading...');
731
						setTimeout(function () {
732
							pnl.unmask();
733
						}, 100);
734
					}
735
				},
736
				items: [{
737
						xtype: 'minovaform',
738
						bodyBorder: false,
739
						MaxHeigth: '100',
740
						cls: 'borderLookup',
741
						border: false,
742
						scroll: true,
743
						isLookup: true,
744
						name: "formLookupFilter",
745
						tableName: this.tableName,
746
						buttons: [{
747
								text: 'Search',
748
								//iconCls : 'fa-edit',
749
								//style : 'font-family: FontAwesome',
750
								handler: function () {
751
									var store = Ext.data.StoreManager.lookup('lookupStore');
752
									var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
753
									grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
754
									var values_ = form.getValues();
755
									var fields_ = form.getFields().items;
756
									var param_ = '';
757
									for (var i = 0; i < fields_.length; i++) {
758
										var val_ = form.getFields().items[i].getValue();
759
										var xtype_ = form.getFields().items[i].xtype;
760
										var oprator_ = '[like]';
761
										if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
762
											oprator_ = '[Equal]';
763
										}
764
										if (xtype_ == 'datefield') {
765
											if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
766
												oprator_ = '[LessThanEqual]';
767
											} else {
768
												oprator_ = '[GreaterThanEqual]';
769
											}
770
										}
771
										if (val_ != 'undefined' && val_ != "" && val_ != null) {
772
											param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
773
										}
774
									}
775
									store.proxy.extraParams = {
776
										tableName: grid.tableName,
777
										param: param_,
778
										menuId: MinovaUtil.GetMenuID()
779
									};
780
									store.removeAll();
781
									store.reload();
782
									store.loadPage(1);
783
								}
784

    
785
							}
786
						],
787
					}, {
788
						xtype: 'minovagrid2',
789
						isLookup: true,
790
						autoLoad: false,
791
						minHeight: 280,
792
						fieldGrid: fieldGrid_,
793
						height: 380,
794
						tableName: this.tableName,
795
						param: '',
796
						//name: 'gridForm' + this.tableName,
797
						name: 'gridLookup',
798
						hidebutton: 0,
799
						pagesize: 25,
800
						storename: 'lookupStore',
801
						listeners: {
802
							itemdblclick: function (g) {
803

    
804
								var me = this;
805

    
806
								var selection = this.getView().getSelectionModel().getSelection()[0];
807
								var name_ = 'form[name=' + formtarget_ + ']';
808
								var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
809
								var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
810
								var targetField = mainLookup.fieldTarget;
811
								if (mainLookup.isGrid) {
812
									var b = Ext.ComponentQuery.query('[fieldGrid=' + me.fieldGrid + ']')[0];
813
									if (b) {
814
										b.setValue(eval('selection.data.' + me.fieldGrid));
815
									}
816
									if (targetField) {
817
										targetField = targetField.split('$')
818
											var dt = targetField[0].split(',');
819
										var fieldValue = targetField[1].split(',');
820
										if (fieldValue.length > 0) {
821
											for (i in dt) {
822
												field_ = dt[i];
823
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
824
											}
825
										} else {
826
											for (i in dt) {
827
												field_ = dt[i];
828
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
829
											}
830
										}
831
									}
832
								}
833
								//else {// untuk form
834
								if (targetField) {
835
									var dt = targetField.split(',');
836
									var fieldValue = mainLookup.fieldValue.split(',');
837
									if (fieldValue.length > 0) {
838
										for (i in dt) {
839
											field_ = dt[i];
840
											Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
841
										}
842
									} else {
843
										for (i in dt) {
844
											field_ = dt[i];
845
											Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
846
										}
847
									}
848
								} else {
849
									form_.setValues(selection.data);
850
								}
851
								//}
852

    
853
								mainLookup.destroy();
854
							},
855
							beforeedit: function (grid) {
856
								return false;
857
							}
858
						},
859
						dockedItems: [{
860
								xtype: 'pagingtoolbar',
861
								store: 'lookupStore',
862
								dock: 'bottom',
863
								pageSize: 25,
864
								displayInfo: true
865
							}
866
						]
867

    
868
					}, ]
869
			}).show();
870
		} else {
871
			// hamid
872
			Ext.create('Ext.window.Window', {
873
				title: 'Lookup - ' + this.fieldLabel,
874
				height: 560,
875
				width: 500,
876
				fieldTarget: fieldTarget_,
877
				fieldValue: fieldValue_,
878
				isGrid: isGrid_,
879
				name: 'lookupMain',
880
				//modal: true,
881
				listeners: {
882
					'beforeshow': function (g) {
883
						pnl.mask('Loading...');
884
						setTimeout(function () {
885
							pnl.unmask();
886
						}, 100);
887
					}
888
				},
889
				items: [{
890
						xtype: 'minovaform',
891
						bodyBorder: false,
892
						MaxHeigth: '100',
893
						cls: 'borderLookup',
894
						border: false,
895
						MaxHeigth: '30',
896
						scroll: true,
897
						isLookup: true,
898
						name: "formLookupFilter",
899
						tableName: this.tableName,
900
						buttons: [{
901
								text: 'Search',
902
								//iconCls : 'fa-edit',
903
								//style : 'font-family: FontAwesome',
904
								handler: function () {
905

    
906
									var store = Ext.data.StoreManager.lookup('lookupStore');
907
									var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
908
									grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
909
									var values_ = form.getValues();
910
									var fields_ = form.getFields().items;
911
									var param_ = '';
912
									for (var i = 0; i < fields_.length; i++) {
913
										var val_ = form.getFields().items[i].getValue();
914
										var xtype_ = form.getFields().items[i].xtype;
915
										var oprator_ = '[like]';
916
										if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
917
											oprator_ = '[Equal]';
918
										}
919
										if (xtype_ == 'datefield') {
920
											if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
921
												oprator_ = '[LessThanEqual]';
922
											} else {
923
												oprator_ = '[GreaterThanEqual]';
924
											}
925
										}
926
										if (val_ != 'undefined' && val_ != "" && val_ != null) {
927
											param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
928
										}
929
									}
930

    
931
									if (SearchFunction_ != undefined && SearchFunction_ != "") {
932
										eval(SearchFunction_);
933
									} else {
934
										store.proxy.extraParams = {
935
											tableName: grid.tableName,
936
											param: param_,
937
											menuId: MinovaUtil.GetMenuID()
938
										};
939
									}
940
									store.removeAll();
941
									store.reload();
942
									store.loadPage(1);
943
								}
944

    
945
							}
946
						],
947
					}, {
948
						xtype: 'minovagrid2',
949
						isLookup: true,
950
						autoLoad: false,
951
						minHeight: 240,
952
						height: 340,
953
						tableName: this.tableName,
954
						param: '',
955
						//name: 'gridForm' + this.tableName,
956
						name: 'gridLookup',
957
						hidebutton: 0,
958
						pagesize: 25,
959
						storename: 'lookupStore',
960
						fieldGrid: fieldGrid_,
961
						listeners: {
962
							itemdblclick: function (g) {
963
								var LookupFunction = LookupFunction_;
964

    
965
								var me = this;
966
								var selection = this.getView().getSelectionModel().getSelection()[0];
967
								var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
968
								var name_ = 'form[name=' + formtarget_ + ']';
969
								if (pnlMain) {
970
									name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
971
								}
972

    
973
								var formM = Ext.ComponentQuery.query(name_)[0];
974
								var form_ = null;
975
								if (!formM) {
976
									form_ = Ext.ComponentQuery.query('[name=MinovaGridFormEdit]')[0].getForm();
977
								} else {
978
									form_ = formM.getForm();
979
								}
980
								var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
981
								var targetField = mainLookup.fieldTarget;
982
								if (mainLookup.isGrid) {
983
									var b = Ext.ComponentQuery.query('[fieldGrid=' + me.fieldGrid + ']')[0];
984
									if (b) {
985
										b.setValue(eval('selection.data.' + me.fieldGrid));
986
									}
987
									if (targetField) {
988
										targetField = targetField.split('$')
989
											var dt = targetField[0].split(',');
990
										var fieldValue = targetField[1].split(',');
991
										if (fieldValue.length > 0) {
992
											for (i in dt) {
993
												field_ = dt[i];
994
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
995
											}
996
										} else {
997
											for (i in dt) {
998
												field_ = dt[i];
999
												Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1000
											}
1001
										}
1002

    
1003
									}
1004
								} else { // untuk form
1005
									if (targetField) {
1006
										var dt = targetField.split(',');
1007
										var fieldValue = mainLookup.fieldValue.split(',');
1008
										if (fieldValue.length > 0) {
1009
											for (i in dt) {
1010
												field_ = dt[i];
1011
												Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1012
											}
1013
										} else {
1014
											for (i in dt) {
1015
												field_ = dt[i];
1016
												Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1017
											}
1018
										}
1019
									} else {
1020
										form_.setValues(selection.data);
1021
									}
1022
								}
1023
								eval(LookupFunction);
1024
								mainLookup.destroy();
1025
							},
1026
							beforeedit: function (grid) {
1027
								return false;
1028
							}
1029
						},
1030
						dockedItems: [{
1031
								xtype: 'pagingtoolbar',
1032
								store: 'lookupStore',
1033
								dock: 'bottom',
1034
								pageSize: 25,
1035
								displayInfo: true
1036
							}
1037
						]
1038

    
1039
					}, ]
1040
			}).show();
1041
		}
1042
		//Ext.create('Ext.window.Window', {
1043
		//    title: 'Lookup - ' + this.fieldLabel,
1044
		//    height: 530,
1045
		//    width: 500,
1046
		//    fieldTarget: fieldTarget_,
1047
		//    fieldValue: fieldValue_,
1048
		//    isGrid: isGrid_,
1049
		//    name: 'lookupMain',
1050
		//    //modal: true,
1051
		//    listeners: {
1052
		//        'beforeshow': function (g) {
1053
		//            pnl.mask('Loading...');
1054
		//            setTimeout(function () {
1055
		//                pnl.unmask();
1056
		//            }, 100);
1057
		//        }
1058
		//    },
1059
		//    items: [{
1060
		//        xtype: 'minovaform',
1061
		//        bodyBorder: false,
1062
		//        MaxHeigth: '100',
1063
		//        cls: 'borderLookup',
1064
		//        border: false,
1065
		//        MaxHeigth: '30',
1066
		//        scroll: true,
1067
		//        isLookup: true,
1068
		//        name: "formLookupFilter",
1069
		//        tableName: this.tableName,
1070
		//        buttons: [{
1071
		//            text: 'Search',
1072
		//            //iconCls : 'fa-edit',
1073
		//            //style : 'font-family: FontAwesome',
1074
		//            handler: function () {
1075
		//                var store = Ext.data.StoreManager.lookup('lookupStore');
1076
		//                var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
1077
		//                grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
1078
		//                var values_ = form.getValues();
1079
		//                var fields_ = form.getFields().items;
1080
		//                var param_ = '';
1081
		//                for (var i = 0; i < fields_.length; i++) {
1082
		//                    var val_ = form.getFields().items[i].getValue();
1083
		//                    var xtype_ = form.getFields().items[i].xtype;
1084
		//                    var oprator_ = '[like]';
1085
		//                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1086
		//                        oprator_ = '[Equal]';
1087
		//                    }
1088
		//                    if (xtype_ == 'datefield') {
1089
		//                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1090
		//                            oprator_ = '[LessThanEqual]';
1091
		//                        } else {
1092
		//                            oprator_ = '[GreaterThanEqual]';
1093
		//                        }
1094
		//                    }
1095
		//                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
1096
		//                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1097
		//                    }
1098
		//                }
1099
		//                store.proxy.extraParams = {
1100
		//                    tableName: grid.tableName,
1101
		//                    param: param_
1102
		//                };
1103
		//                store.removeAll();
1104
		//                store.reload();
1105
		//                store.loadPage(1);
1106
		//            }
1107

    
1108
		//        }
1109
		//        ],
1110
		//    }, {
1111
		//        xtype: 'minovagrid1',
1112
		//        isLookup: true,
1113
		//        autoLoad: false,
1114
		//        minHeight: 280,
1115
		//        height: 380,
1116
		//        tableName: this.tableName,
1117
		//        param: '',
1118
		//        //name: 'gridForm' + this.tableName,
1119
		//        name: 'gridLookup',
1120
		//        hidebutton: 0,
1121
		//        pagesize: 25,
1122
		//        storename: 'lookupStore',
1123
		//        listeners: {
1124
		//            itemdblclick: function (g) {
1125
		//                var me = this;
1126
		//                var selection = this.getView().getSelectionModel().getSelection()[0];
1127
		//                var name_ = 'form[name=' + formtarget_ + ']';
1128
		//                var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
1129
		//                var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
1130
		//                var targetField = mainLookup.fieldTarget;
1131
		//                if (mainLookup.isGrid) {
1132
		//                    if (targetField) {
1133
		//                        targetField = targetField.split('$')
1134
		//                        var dt = targetField[0].split(',');
1135
		//                        var fieldValue = targetField[1].split(',');
1136
		//                        if (fieldValue.length > 0) {
1137
		//                            for (i in dt) {
1138
		//                                field_ = dt[i];
1139
		//                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1140
		//                            }
1141
		//                        } else {
1142
		//                            for (i in dt) {
1143
		//                                field_ = dt[i];
1144
		//                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1145
		//                            }
1146
		//                        }
1147

    
1148

    
1149
		//                    }
1150
		//                }
1151
		//                else {// untuk form
1152
		//                    if (targetField) {
1153
		//                        var dt = targetField.split(',');
1154
		//                        var fieldValue = mainLookup.fieldValue.split(',');
1155
		//                        if (fieldValue.length > 0) {
1156
		//                            for (i in dt) {
1157
		//                                field_ = dt[i];
1158
		//                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1159
		//                            }
1160
		//                        } else {
1161
		//                            for (i in dt) {
1162
		//                                field_ = dt[i];
1163
		//                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1164
		//                            }
1165
		//                        }
1166
		//                    }
1167
		//                    else {
1168
		//                        form_.setValues(selection.data);
1169
		//                    }
1170
		//                }
1171

    
1172
		//                mainLookup.destroy();
1173
		//            },
1174
		//            beforeedit: function (grid) {
1175
		//                return false;
1176
		//            }
1177
		//        },
1178
		//        dockedItems: [{
1179
		//            xtype: 'pagingtoolbar',
1180
		//            store: 'lookupStore',
1181
		//            dock: 'bottom',
1182
		//            pageSize: 25,
1183
		//            displayInfo: true
1184
		//        }
1185
		//        ]
1186

    
1187
		//    }, ]
1188
		//}).show();
1189

    
1190
	},
1191
});
1192
Ext.define('MinovaUtil.MinovaES.MinovaComboDisplay', {
1193
	extend: 'Ext.form.field.Display',
1194
	alias: ['widget.minovacombodisplay'],
1195
	initComponent: function () {
1196
		this.callParent(arguments);
1197
	},
1198

    
1199
	defaultRenderer: function (value) {
1200
		if (typeof(this.store) !== 'object') {
1201
			this.store = Ext.data.StoreManager.lookup(this.store);
1202
		}
1203
		var idx = this.store.findExact(this.valueField, value);
1204
		if (this.store.getAt(idx)) {
1205
			var result = this.store.getAt(idx).get(this.displayField);
1206
			value = result ? result : value;
1207
		}
1208
		this.setRawValue(value);
1209

    
1210
	}
1211
});
1212
Ext.define('MinovaUtil.MinovaES.DisplayDate', {
1213
	extend: 'Ext.form.field.Display',
1214
	alias: ['widget.minovadisplaydate'],
1215
	undefinedText: '&#160;',
1216
	setValue: function (v) {
1217
		var value = v;
1218
		if (value === undefined) {
1219
			return this.undefinedText;
1220
		}
1221
		if (value === null) {
1222
			return this.setRawValue(null);
1223
		}
1224
		var d = value.substring(6, 8);
1225
		var m = value.substring(4, 6);
1226
		var y = value.substring(0, 4);
1227

    
1228
		var hasil = d + '/' + m + '/' + y;
1229
		//this.setRawValue(hasil);
1230
		this.setValue(hasil);
1231
	},
1232
	getRawValue: function () {
1233
		return this.getValue();
1234
	},
1235
	getValue: function () {
1236
		var value = this.rawValue;
1237
		var hasil = null;
1238
		if (value != undefined) {
1239
			var d = value.substring(0, 2);
1240
			var m = value.substring(3, 5);
1241
			var y = value.substring(6, 10);
1242

    
1243
			hasil = y + m + d;
1244
		}
1245
		return hasil;
1246
	}
1247
});
1248
Ext.define('MinovaUtil.MinovaES.DisplaySysDateTime', {
1249
	extend: 'Ext.form.field.Display',
1250
	alias: ['widget.minovadisplaysysdatetime'],
1251
	undefinedText: '&#160;',
1252
	//hamid
1253
	listeners: {
1254
		change: function (f) {
1255
			var field = f.getValue()
1256
				var value = field;
1257
			if (value === "" || value === undefined) {
1258
				return this.setRawValue("");
1259
			} else {
1260
				var d = value.substring(6, 8);
1261
				var m = value.substring(4, 6);
1262
				var y = value.substring(0, 4);
1263
				var h = value.substring(8, 10);
1264
				var mt = value.substring(10, 12);
1265
				var s = value.substring(12, 14);
1266
				var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
1267

    
1268
			}
1269

    
1270
			f.setRawValue(hasil)
1271
		},
1272
	},
1273
	//end
1274

    
1275
});
1276
Ext.define('MinovaUtil.MinovaES.MinovaButton', {
1277
	extend: 'Ext.button.Button',
1278
	alias: ['widget.minovabutton', 'widget.MinovaButton'],
1279
	nextid: undefined,
1280
	parid: undefined,
1281
	page: undefined,
1282
	start: undefined,
1283
	limit: 1,
1284
	setStart: function (value) {
1285
		var me = this;
1286
		me.start = value;
1287
		return me;
1288
	},
1289
	getStart: function () {
1290
		return this.start;
1291
	},
1292
	setNextid: function (value) {
1293
		var me = this;
1294
		me.nextid = value;
1295
		return me;
1296
	},
1297
	getNextid: function () {
1298
		return this.nextid;
1299
	},
1300
	setParid: function (value) {
1301
		var me = this;
1302
		me.parid = value;
1303
		return me;
1304
	},
1305
	getParid: function () {
1306
		return this.parid;
1307
	},
1308
	anchor: '50%',
1309
	initComponent: function () {
1310
		var me = this;
1311
		Ext.applyIf(me, {});
1312
		me.callParent(arguments);
1313
	}
1314
});
1315
Ext.define('MinovaUtil.MinovaES.MinovaComboBox', {
1316
	extend: 'Ext.form.field.ComboBox',
1317
	alias: ['widget.minovacombobox', 'widget.minovacombo'],
1318
	tableName: undefined,
1319
	param: undefined,
1320
	anyMatch: true,
1321
	anchor: '50%',
1322
	queryMode: 'local',	
1323
	forceSelection: true, // cek data
1324
	initComponent: function () {
1325
		var me = this;
1326
		Ext.applyIf(me, {
1327

    
1328
			store: Ext.create('Ext.data.Store', {
1329
				storeId: 'store' + me.name,
1330
				autoLoad: true,
1331
				proxy: {
1332
					method: 'POST',
1333
					type: 'ajax',
1334
					url: '/UserControl/GetStoreAuth',
1335
					extraParams: {
1336
						tableName: me.tableName,
1337
						param: me.param,
1338
						menuId: MinovaUtil.GetMenuID()
1339
					},
1340
					reader: {
1341
						type: 'json',
1342
						root: 'data'
1343
					}
1344
				}
1345
			})
1346
		});
1347
		me.callParent(arguments);
1348
	}
1349
});
1350

    
1351
Ext.define('MinovaUtil.MinovaES.MinovaComboBoxTpl', {
1352
	extend: 'Ext.form.field.ComboBox',
1353
	alias: ['widget.minovacomboboxtpl', 'widget.minovacombotpl'],
1354
	tableName: undefined,
1355
	param: undefined,
1356
	dis1: undefined,
1357
	dis2: undefined,
1358
	anchor: '50%',
1359
	queryMode: 'local',
1360
	forceSelection: true,
1361
	tpl: Ext.create('Ext.XTemplate',
1362
		'<tpl for=".">',
1363
		'<div class="x-boundlist-item">' + this.dis1 + '</div>',
1364
		'</tpl>'),
1365
	displayTpl: Ext.create('Ext.XTemplate',
1366
		'<tpl for=".">',
1367
		+this.dis1,
1368
		'</tpl>'),
1369
	initComponent: function () {
1370
		var me = this;
1371
		Ext.applyIf(me, {
1372
			store: Ext.create('Ext.data.Store', {
1373
				storeId: 'store' + me.name,
1374
				autoLoad: true,
1375
				proxy: {
1376
					method: 'POST',
1377
					type: 'ajax',
1378
					url: '/UserControl/GetStore',
1379
					extraParams: {
1380
						tableName: me.tableName,
1381
						param: me.param
1382
					},
1383
					reader: {
1384
						type: 'json',
1385
						root: 'data'
1386
					}
1387
				}
1388
			})
1389
		});
1390
		me.callParent(arguments);
1391
	}
1392
});
1393
Ext.define('MinovaUtil.MinovaES.MinovaMultiComboBox', {
1394
	extend: 'Ext.form.field.ComboBox',
1395
	alias: ['widget.minovamulticombobox', 'widget.minovamulticombo'],
1396
	tableName: undefined,
1397
	param: undefined,
1398
	anchor: '50%',
1399
	queryMode: 'local',
1400
	forceSelection: true, // cek data
1401
	multiSelect: true,
1402
	getValue: function () {
1403
		var hasil = null;
1404
		var val = this.value;
1405
		if (val != undefined) {
1406
			hasil = val.toString();
1407
		}
1408
		return hasil;
1409
	},
1410
	initComponent: function () {
1411
		var me = this;
1412
		Ext.applyIf(me, {
1413
			store: Ext.create('Ext.data.Store', {
1414
				storeId: 'store' + me.name,
1415
				autoLoad: true,
1416
				proxy: {
1417
					method: 'POST',
1418
					type: 'ajax',
1419
					url: '/UserControl/GetStore',
1420
					extraParams: {
1421
						tableName: me.tableName,
1422
						param: me.param
1423
					},
1424
					reader: {
1425
						type: 'json',
1426
						root: 'data'
1427
					}
1428
				}
1429
			})
1430
		});
1431
		me.callParent(arguments);
1432
	}
1433
});
1434
Ext.define('Ext.ux.MinovaLookupGrid1', {
1435
	extend: 'Ext.form.field.Trigger',
1436
	alias: 'widget.minovalookupgrid1',
1437
	tableName: undefined,
1438
	param: undefined,
1439
	formtarget_: this.formtarget,
1440
	anchor: '50%',
1441
	pagesize: undefined,
1442
	initComponent: function () {
1443
		var target = this.formtarget;
1444
		this.callParent();
1445
	},
1446
	onTriggerClick: function () {
1447
		var count_lookup = Ext.ComponentQuery.query('[name=mainLookup]').length;
1448
		if (count_lookup == 1) {
1449
			Ext.ComponentQuery.query('[name=mainLookup]')[0].show();
1450
		} else {
1451
			var target_ = this.formtarget;
1452
			var fieldtarget = this.name;
1453
			var pagesize_ = this.pagesize;
1454
			if (pagesize_ == undefined) {
1455
				pagesize_ = 25;
1456
			}
1457
			var mainLookup = Ext.create('Ext.window.Window', {
1458
					name: 'mainLookup',
1459
					width: 500,
1460
					heigth: 300,
1461
					maxHeigth: 300,
1462
					minWidth: 400,
1463
					scroll: true,
1464
					modal: true,
1465
					title: 'Lookup - ' + this.fieldLabel,
1466
					items: [{
1467
							xtype: 'form',
1468
							collapsible: false,
1469
							items: [{
1470
									xtype: 'form',
1471
									//width: '90%',
1472
									name: 'formFilter',
1473
									layout: 'column',
1474
									dockedItems: [{
1475
											xtype: 'toolbar',
1476
											dock: 'bottom',
1477
											items: [{
1478
													xtype: 'tbfill'
1479
												}, {
1480
													text: 'Search',
1481
													scope: this,
1482
													handler: function () {
1483
														var store = Ext.data.StoreManager.lookup('lookupStore');
1484
														var form = Ext.ComponentQuery.query('[name=formFilter]')[0].getForm();
1485
														var values_ = form.getValues();
1486
														var fields_ = form.getFields().items;
1487
														var param_ = '';
1488
														for (var i = 0; i < fields_.length; i++) {
1489
															var val_ = form.getFields().items[i].getValue();
1490
															var xtype_ = form.getFields().items[i].xtype;
1491
															var oprator_ = '[like]';
1492
															if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1493
																oprator_ = '[Equal]';
1494
															}
1495
															if (xtype_ == 'datefield') {
1496
																if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1497
																	oprator_ = '[LessThanEqual]';
1498
																} else {
1499
																	oprator_ = '[GreaterThanEqual]';
1500
																}
1501
															}
1502
															if (val_ != 'undefined' && val_ != "") {
1503
																param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1504
															}
1505
														}
1506
														store.proxy.extraParams = {
1507
															tableName: this.tableName,
1508
															param: param_
1509
														};
1510
														store.removeAll();
1511
														store.reload();
1512
														store.loadPage(1);
1513
													}
1514
												}, ]
1515
										}
1516
									],
1517
									defaults: {
1518
										xtype: 'container',
1519
										defaultType: 'textfield',
1520
										style: 'width: 50%'
1521
									},
1522
									items: [{
1523
											xtype: 'minovaform',
1524
											bodyBorder: false,
1525
											cls: 'borderLookup',
1526
											border: false,
1527
											MaxHeigth: '30',
1528
											scroll: true,
1529
											isLookup: 1,
1530
											name: "formLookupFilter",
1531
											tableName: this.tableName,
1532
										}
1533
									],
1534
								}
1535
							]
1536
						}, {
1537
							xtype: 'form',
1538
							name: 'formResult',
1539
							title: 'Result',
1540
							collapsible: true,
1541
							items: [{
1542
									xtype: "minovagrid",
1543
									name: "lookupgrid",
1544
									tableName: this.tableName,
1545
									param: '',
1546
									pagesize: pagesize_,
1547
									storename: 'lookupStore',
1548
									isLookup: 1,
1549
									border: false,
1550
									minHeight: 300,
1551
									maxHeight: 500,
1552
									height: 100,
1553
									columnLines: true,
1554
									scrollable: true,
1555
									listeners: {
1556
										itemdblclick: function (formtarget_) {
1557
											var me = this;
1558
											var selection = this.getView().getSelectionModel().getSelection()[0];
1559
											if (target_ == null || target_ == undefined) {
1560
												var formtarget_ = '[name=' + fieldtarget + ']';
1561
												var form_ = Ext.ComponentQuery.query(formtarget_)[0];
1562
											} else {
1563
												var formtarget_ = 'form[name=' + target_ + ']';
1564
												var form_ = Ext.ComponentQuery.query(formtarget_)[0].getForm();
1565
												form_.setValues(selection.data)
1566
											}
1567
											mainLookup.hide();
1568
										},
1569
										beforeedit: function (grid) {
1570
											return false;
1571
										}
1572
									},
1573
									dockedItems: [{
1574
											xtype: 'pagingtoolbar',
1575
											store: 'lookupStore',
1576
											dock: 'bottom',
1577
											pageSize: pagesize_,
1578
											displayInfo: true
1579
										}
1580
									],
1581
								}
1582
							]
1583
						}
1584
					]
1585
				}).show();
1586
		}
1587
	},
1588
});
1589
Ext.define('Ext.ux.MinovaLookupTree', {
1590
	extend: 'Ext.form.field.Trigger',
1591
	alias: 'widget.minovalookuptree',
1592
	tableName: undefined,
1593
	param: undefined,
1594
	onTriggerClick: function () {}
1595

    
1596
});
1597
Ext.define('Ext.ux.MinovaLookupFile', {
1598
	extend: 'Ext.form.field.Trigger',
1599
	alias: 'widget.minovalookupfile',
1600
	tableName: undefined,
1601
	param: undefined,
1602
	onTriggerClick: function () {}
1603

    
1604
});
1605
Ext.define('MinovaUtil.MinovaES.MinovaGrid1', {
1606
	extend: 'Ext.grid.Panel',
1607
	requires: ['Ext.grid.RowNumberer'],
1608
	alias: 'widget.minovagrid1',
1609
	//alias: ['widget.minovagrid1', 'widget.minovagrid'],
1610
	//alias: ['widget.minovagrid1', 'widget.minovagrid'],
1611
	alternateClassName: 'Ext.grid.MinovaGrid',
1612
	//controller:'orm-manage2-controller',
1613
	tableName: undefined,
1614
	isLookup: undefined,
1615
	param: undefined,
1616
	pagesize: undefined,
1617
	storename: undefined,
1618
	layoutType: undefined,
1619
	enableLocking: true,
1620
	autoLoad: undefined,
1621
	multiSelect: undefined,
1622
	getTableName: function () {
1623
		return this.tableName;
1624
	},
1625

    
1626
	initComponent: function () {
1627
		var me = this;
1628
		var cols_ = [];
1629
		var fieldeditor = {};
1630
		var hasil = null;
1631
		var autoLoad = true;
1632
		var LangID = localStorage.LangId;
1633
		var fielGrid = 'rec.GridView == 1';
1634
		var locking = true;
1635
		var checkSelection = '';
1636
		var widthLock = 250;
1637
		if (me.multiSelect) {
1638
			locking = false;
1639
			checkSelection = 'checkboxmodel';
1640
			widthLock = 40;
1641
		}
1642
		//var _url = 'GetAllField';
1643
		if (me.autoLoad == false) {
1644
			autoLoad = false;
1645
		}
1646
		parameter = null;
1647
		if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1648
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
1649
			fielGrid = 'rec.LookupGrid == 1';
1650
			locking = false;
1651

    
1652
		} else {
1653
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
1654
				//autoLoad = false;
1655
				//_url = 'GetAllFieldGridLookUp';
1656
		};
1657

    
1658
		//Ext.Ajax.request({
1659
		//	async : false,
1660
		//	method : 'POST',
1661
		//	url : '/Devt/' + _url + '?tableName=' + me.tableName,
1662
		//	success : function (response) {
1663
		//		var results = Ext.decode(response.responseText);
1664
		//		hasil = results.data;
1665
		//	}
1666
		//});
1667
		//hamid03102016
1668

    
1669
		Ext.Ajax.request({
1670
			async: false,
1671
			method: 'POST',
1672
			url: '/UserControl/GetStore',
1673
			params: {
1674
				tableName: 'PDSBS0007',
1675
				param: parameter
1676
			},
1677
			success: function (response) {
1678
				var results = Ext.decode(response.responseText);
1679
				hasil = results.data;
1680
			}
1681
		});
1682
		//end
1683

    
1684
		if (hasil.length > 0) {
1685

    
1686
			Ext.each(hasil, function (rec) {
1687
				var null_ = null;
1688
				if (rec.IsPrimaryKey == true) {
1689
					null_ = false;
1690
				}
1691
				if (rec.IsRequired == true) {
1692
					null_ = false;
1693
				} else {
1694
					null_ = true;
1695
				}
1696

    
1697
				if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1698
					if (rec.LookupGrid == 1) {
1699
						switch (rec.FormatRef) {
1700
						case "file":
1701
							cols_.push({
1702
								xtype: 'minovapicturecolumn',
1703
								text: rec.HeaderTitle,
1704
								dataIndex: rec.FieldName,
1705
								width: 100,
1706
								//filter: {
1707
								//    type: 'image',
1708
								//    itemDefaults: {
1709
								//        emptyText: 'Search for...'
1710
								//    }
1711
								//}
1712
							});
1713
							break
1714
						case "date":
1715
							cols_.push({
1716
								xtype: 'minovadatecolumn',
1717
								text: rec.HeaderTitle,
1718
								dataIndex: rec.FieldName,
1719
								width: 100,
1720
								filter: {
1721
									type: 'date',
1722
									itemDefaults: {
1723
										emptyText: 'Search for...'
1724
									}
1725
								}
1726
							});
1727
							break
1728
						case "amount":
1729
							cols_.push({
1730
								xtype: 'minovacurrancycolumn',
1731
								text: rec.HeaderTitle,
1732
								dataIndex: rec.FieldName,
1733
								align: 'right',
1734
								width: 300,
1735
								filter: {
1736
									type: 'number',
1737
									itemDefaults: {
1738
										emptyText: 'Search for...'
1739
									}
1740
								}
1741
							});
1742
							break
1743
						case "amountencrypt":
1744
							cols_.push({
1745
								xtype: 'minovaamountcolumn',
1746
								text: rec.HeaderTitle,
1747
								dataIndex: rec.FieldName,
1748
								align: 'right',
1749
								width: 300,
1750
								filter: {
1751
									type: 'string',
1752
									itemDefaults: {
1753
										emptyText: 'Search for...'
1754
									}
1755
								}
1756
							});
1757
							break
1758
						case "datetime":
1759
							cols_.push({
1760
								xtype: 'minovadatetimecolumn',
1761
								text: rec.HeaderTitle,
1762
								dataIndex: rec.FieldName,
1763
								width: 140,
1764
								filter: {
1765
									type: 'string',
1766
									itemDefaults: {
1767
										emptyText: 'Search for...'
1768
									}
1769
								}
1770
							});
1771
							break
1772
						default:
1773
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
1774
								cols_.push({
1775
									text: rec.HeaderTitle,
1776
									dataIndex: rec.FieldName,
1777
									width: 100,
1778
									filter: {
1779
										type: 'string',
1780
										itemDefaults: {
1781
											emptyText: 'Search for...'
1782
										}
1783
									}
1784
								});
1785
							} else if (rec.SearchType == '2') {
1786
								cols_.push({
1787
									xtype: 'minovalookupcolumn',
1788
									text: rec.HeaderTitle,
1789
									tableName: rec.TableRef,
1790
									dataIndex: rec.FieldName,
1791
									filter: {
1792
										itemDefaults: {
1793
											emptyText: 'Search for...'
1794
										}
1795
									}
1796
								});
1797
							} else if (rec.TableRef != "" && rec.SearchType != '2') {
1798
								if (rec.TableRef != null) {
1799
									var valueField = null;
1800
									var displayValue = null;
1801
									Ext.Ajax.request({
1802
										async: false,
1803
										method: 'POST',
1804
										url: '/UserControl/GetStore',
1805
										params: {
1806
											tableName: 'SDATATABLEFIELD',
1807
											param: 'TableName[equal]' + rec.TableRef
1808
										},
1809
										success: function (response) {
1810
											var results = Ext.decode(response.responseText);
1811
											data_ = results.data;
1812
											if (data_ != undefined) {
1813
												valueField_ = $.grep(data_, function (r) {
1814
														return r.ValueField == '1'
1815
													});
1816
												valueField = valueField_[0].FieldName
1817
													displayValue_ = $.grep(data_, function (r) {
1818
														return r.DisplayValue == '1'
1819
													});
1820
												displayValue = displayValue_[0].FieldName
1821
											}
1822
										}
1823
									});
1824
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
1825
									var count_ = 0;
1826
									if (store_) {
1827
										count_ = store_.count();
1828
									}
1829
									if (count_ == 0) {
1830
										Ext.create('Ext.data.Store', {
1831
											storeId: 'store_' + rec.FieldName,
1832
											//autoLoad: true,
1833
											proxy: {
1834
												method: 'POST',
1835
												type: 'ajax',
1836
												url: '/UserControl/GetStore',
1837
												extraParams: {
1838
													tableName: rec.TableRef,
1839
													param: rec.ParamCombo
1840
												},
1841
												reader: {
1842
													type: 'json',
1843
													root: 'data',
1844
													totalProperty: 'data[0].TotalCount'
1845
												}
1846
											}
1847
										})
1848
									}
1849
									cols_.push({
1850
										xtype: 'minovacombocolumn',
1851
										text: rec.HeaderTitle,
1852
										dataIndex: rec.FieldName,
1853
										valueField: valueField,
1854
										displayField: displayValue,
1855
										store: 'store_' + rec.FieldName,
1856
										filter: {
1857
											type: 'list',
1858
											itemDefaults: {
1859
												emptyText: 'Search for...'
1860
											}
1861
										}
1862
									});
1863
								}
1864

    
1865
							} else {
1866
								cols_.push({
1867
									text: rec.HeaderTitle,
1868
									dataIndex: rec.FieldName,
1869
									filter: {
1870
										itemDefaults: {
1871
											emptyText: 'Search for...'
1872
										}
1873
									}
1874
								});
1875
							}
1876
							break
1877
						}
1878
					} else {
1879
						cols_.push({
1880
							text: rec.HeaderTitle,
1881
							dataIndex: rec.FieldName,
1882
							hidden: true,
1883
							filter: {
1884
								itemDefaults: {
1885
									emptyText: 'Search for...'
1886
								}
1887
							}
1888
						});
1889
					}
1890

    
1891
				} else {
1892
					if (rec.GridView == 1) {
1893
						switch (rec.FormatRef) {
1894
						case "action":
1895
							cols_.push({
1896
								text: rec.HeaderTitle,
1897
								width: 100,
1898
								xtype: 'actioncolumn',
1899
								tooltip: 'View Data',
1900
								name: rec.FieldName,
1901
								itemId: me.tableName + rec.FieldName,
1902
								align: 'center',
1903
								iconCls: 'fa-edit',
1904
								renderer: function (value, metadata, record) {
1905
									metadata.tdStyle = 'font-family: FontAwesome'
1906
								},
1907
								handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
1908

    
1909
									this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
1910
								}
1911
							});
1912
							break
1913
						case "file":
1914
							cols_.push({
1915
								xtype: 'minovapicturecolumn',
1916
								text: rec.HeaderTitle,
1917
								dataIndex: rec.FieldName,
1918
								width: 100,
1919
								//filter: {
1920
								//    type: '',
1921
								//    itemDefaults: {
1922
								//        emptyText: 'Search for...'
1923
								//    }
1924
								//}
1925
							});
1926
							break
1927
						case "date":
1928
							cols_.push({
1929
								xtype: 'minovadatecolumn',
1930
								text: rec.HeaderTitle,
1931
								dataIndex: rec.FieldName,
1932
								width: 100,
1933
								filter: {
1934
									type: 'date',
1935
									itemDefaults: {
1936
										emptyText: 'Search for...'
1937
									}
1938
								}
1939
							});
1940
							break
1941
						case "amountencrypt":
1942
							cols_.push({
1943
								xtype: 'minovaamountcolumn',
1944
								text: rec.HeaderTitle,
1945
								dataIndex: rec.FieldName,
1946
								align: 'right',
1947
								width: 300,
1948
								filter: {
1949
									type: 'string',
1950
									itemDefaults: {
1951
										emptyText: 'Search for...'
1952
									}
1953
								}
1954
							});
1955
							break
1956
						case "amount":
1957
							cols_.push({
1958
								xtype: 'minovacurrancycolumn',
1959
								text: rec.HeaderTitle,
1960
								dataIndex: rec.FieldName,
1961
								align: 'right',
1962
								width: 300,
1963
								filter: {
1964
									type: 'number',
1965
									itemDefaults: {
1966
										emptyText: 'Search for...'
1967
									}
1968
								}
1969
							});
1970
							break
1971
						case "datetime":
1972
							cols_.push({
1973
								xtype: 'minovadatetimecolumn',
1974
								text: rec.HeaderTitle,
1975
								dataIndex: rec.FieldName,
1976
								width: 140,
1977
								filter: {
1978
									type: 'string',
1979
									itemDefaults: {
1980
										emptyText: 'Search for...'
1981
									}
1982
								}
1983
							});
1984
							break
1985
						default:
1986
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
1987
								cols_.push({
1988
									text: rec.HeaderTitle,
1989
									dataIndex: rec.FieldName,
1990
									width: 100,
1991
									filter: {
1992
										type: 'string',
1993
										itemDefaults: {
1994
											emptyText: 'Search for...'
1995
										}
1996
									}
1997
								});
1998
							} else if (rec.TableRef != "") {
1999
								if (rec.TableRef != null) {
2000
									var valueField = null;
2001
									var displayValue = null;
2002
									Ext.Ajax.request({
2003
										async: false,
2004
										method: 'POST',
2005
										url: '/UserControl/GetStore',
2006
										params: {
2007
											tableName: 'SDATATABLEFIELD',
2008
											param: 'TableName[equal]' + rec.TableRef
2009
										},
2010
										success: function (response) {
2011
											var results = Ext.decode(response.responseText);
2012
											data_ = results.data;
2013
											//if (data_ != undefined) {
2014
											if (data_.length > 0) {
2015
												valueField_ = $.grep(data_, function (r) {
2016
														return r.ValueField == '1'
2017
													});
2018
												valueField = valueField_[0].FieldName
2019
													displayValue_ = $.grep(data_, function (r) {
2020
														return r.DisplayValue == '1'
2021
													});
2022
												displayValue = displayValue_[0].FieldName
2023
											} else {
2024
												MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2025
											}
2026
										}
2027
									});
2028
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2029
									var count_ = 0;
2030
									if (store_) {
2031
										count_ = store_.count();
2032
									}
2033
									if (count_ == 0) {
2034
										Ext.create('Ext.data.Store', {
2035
											storeId: 'store_' + rec.FieldName,
2036
											autoLoad: false,
2037
											proxy: {
2038
												method: 'POST',
2039
												type: 'ajax',
2040
												url: '/UserControl/GetStore',
2041
												extraParams: {
2042
													tableName: rec.TableRef,
2043
													param: rec.ParamCombo
2044
												},
2045
												reader: {
2046
													type: 'json',
2047
													root: 'data',
2048
													totalProperty: 'data[0].TotalCount'
2049
												}
2050
											}
2051
										})
2052
									}
2053
									cols_.push({
2054
										xtype: 'minovacombocolumn',
2055
										text: rec.HeaderTitle,
2056
										dataIndex: rec.FieldName,
2057
										valueField: valueField,
2058
										displayField: displayValue,
2059
										store: 'store_' + rec.FieldName,
2060
										filter: {
2061
											type: 'list',
2062
											itemDefaults: {
2063
												emptyText: 'Search for...'
2064
											}
2065
										}
2066
									});
2067
								}
2068

    
2069
							} else if (rec.FixedValue != "") {
2070
								cols_.push({
2071
									xtype: 'minovacombocolumnfixvalue',
2072
									text: rec.HeaderTitle,
2073
									dataIndex: rec.FieldName,
2074
									fixedValue: rec.FixedValue,
2075
									filter: {
2076
										type: 'list',
2077
										itemDefaults: {
2078
											emptyText: 'Search for...'
2079
										}
2080
									}
2081
								});
2082
							} else {
2083
								cols_.push({
2084
									text: rec.HeaderTitle,
2085
									dataIndex: rec.FieldName,
2086
									filter: {
2087
										itemDefaults: {
2088
											emptyText: 'Search for...'
2089
										}
2090
									}
2091
								});
2092
							}
2093
							break
2094
						}
2095
					} else {
2096
						cols_.push({
2097
							text: rec.HeaderTitle,
2098
							dataIndex: rec.FieldName,
2099
							hidden: true,
2100
							filter: {
2101
								itemDefaults: {
2102
									emptyText: 'Search for...'
2103
								}
2104
							}
2105
						});
2106
					}
2107

    
2108
				}
2109
			});
2110
		};
2111
		var param_ = me.param;
2112
		if (param_ == undefined) {
2113
			param_ = ''
2114
		}
2115
		var jsStoreGrid = new Ext.data.Store({
2116
				storeId: me.storename,
2117
				autoLoad: autoLoad,
2118
				pageSize: me.pagesize,
2119
				proxy: {
2120
					method: 'POST',
2121
					type: 'ajax',
2122
					url: '/UserControl/GetStorePagingAuth',
2123
					extraParams: {
2124
						tableName: me.tableName,
2125
						param: param_,
2126
						menuId: MinovaUtil.GetMenuID()
2127
					},
2128
					reader: {
2129
						type: 'json',
2130
						root: 'data',
2131
						totalProperty: 'totalRecords'
2132
					}
2133
				},
2134
			});
2135
		Ext.applyIf(me, {
2136
			autoScroll: true,
2137
			enableLocking: locking,
2138
			lockedGridConfig: {
2139
				header: false,
2140
				collapsible: true,
2141
				width: widthLock,
2142
				forceFit: locking,
2143
				listeners: {
2144
					render: function (grid) {
2145
						var pagingToolbar = grid.child('pagingtoolbar');
2146
						if (pagingToolbar) {
2147
							grid.remove(pagingToolbar, true);
2148
						}
2149
					}
2150
				}
2151
			},
2152
			listeners: {
2153
				viewready: function () {
2154
					if (autoLoad == true) {
2155
						this.getStore().loadPage(1);
2156
					}
2157
				},
2158
				beforeedit: function () {
2159
					return false;
2160
				},
2161
			},
2162
			lockedViewConfig: {
2163
				scroll: 'horizontal'
2164
			},
2165
			viewConfig: {
2166
				emptyText: 'No Data Display',
2167
				deferEmptyText: false,
2168
				//Add Nana For Autosize Column Mode
2169
				listeners: {
2170
					refresh: function (dataview) {
2171
						Ext.each(dataview.panel.columns, function (column) {
2172
							//if (column.autoSizeColumn == false)
2173
							//	column.autoSizeColumn = true;
2174
							column.autoSize();
2175
							//dataview.store.reload();
2176
						})
2177
					},
2178
					afterrender: function (dataview) {
2179
						Ext.defer(function () {
2180
							dataview.store.reload();
2181
						}, 2000, this);
2182
						//dataview.store.reload();
2183
					}
2184
				},
2185
				render: function (comp) {
2186
					comp.getStore().reload();
2187
				}
2188
			},
2189
			//for chekbox
2190
			selModel: {
2191
				//type: 'cellmodel'
2192
			},
2193
			selType: checkSelection,
2194
			columns: cols_,
2195

    
2196
			store: jsStoreGrid,
2197

    
2198
			plugins: [{
2199
					ptype: 'gridfilters'
2200
				}
2201
			],
2202

    
2203
		});
2204
		me.callParent(arguments);
2205
	}
2206

    
2207
});
2208

    
2209
Ext.define('MinovaUtil.MinovaES.MinovaGrid2', {
2210
	extend: 'Ext.grid.Panel',
2211
	requires: ['Ext.grid.RowNumberer'],
2212
	alias: 'widget.minovagrid2',
2213
	//alias: ['widget.minovagrid2', 'widget.minovagrid'],
2214
	//alias: ['widget.minovagrid2', 'widget.minovagrid'],
2215
	alternateClassName: 'Ext.grid.MinovaGrid',
2216
	//controller:'orm-manage2-controller',
2217
	tableName: undefined,
2218
	isLookup: undefined,
2219
	param: undefined,
2220
	pagesize: undefined,
2221
	storename: undefined,
2222
	layoutType: undefined,
2223
	enableLocking: true,
2224
	autoLoad: undefined,
2225
	multiSelect: undefined,
2226
	getTableName: function () {
2227
		return this.tableName;
2228
	},
2229

    
2230
	initComponent: function () {
2231
		var me = this;
2232
		var cols_ = [];
2233
		var fieldeditor = {};
2234
		var hasil = null;
2235
		var autoLoad = true;
2236
		var LangID = localStorage.LangId;
2237
		var fielGrid = 'rec.GridView == 1';
2238
		var locking = true;
2239
		var checkSelection = '';
2240
		var widthLock = 250;
2241
		if (me.multiSelect) {
2242
			locking = false;
2243
			checkSelection = 'checkboxmodel';
2244
			widthLock = 40;
2245
		}
2246
		//var _url = 'GetAllField';
2247
		if (me.autoLoad == false) {
2248
			autoLoad = false;
2249
		}
2250
		parameter = null;
2251
		if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2252
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
2253
			fielGrid = 'rec.LookupGrid == 1';
2254
			locking = false;
2255

    
2256
		} else {
2257
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
2258
				//autoLoad = false;
2259
				//_url = 'GetAllFieldGridLookUp';
2260
		};
2261

    
2262
		//Ext.Ajax.request({
2263
		//	async : false,
2264
		//	method : 'POST',
2265
		//	url : '/Devt/' + _url + '?tableName=' + me.tableName,
2266
		//	success : function (response) {
2267
		//		var results = Ext.decode(response.responseText);
2268
		//		hasil = results.data;
2269
		//	}
2270
		//});
2271
		//hamid03102016
2272

    
2273
		Ext.Ajax.request({
2274
			async: false,
2275
			method: 'POST',
2276
			url: '/UserControl/GetStore',
2277
			params: {
2278
				tableName: 'PDSBS0007',
2279
				param: parameter
2280
			},
2281
			success: function (response) {
2282
				var results = Ext.decode(response.responseText);
2283
				hasil = results.data;
2284
			}
2285
		});
2286
		//end
2287

    
2288
		if (hasil.length > 0) {
2289

    
2290
			Ext.each(hasil, function (rec) {
2291
				var null_ = null;
2292
				if (rec.IsPrimaryKey == true) {
2293
					null_ = false;
2294
				}
2295
				if (rec.IsRequired == true) {
2296
					null_ = false;
2297
				} else {
2298
					null_ = true;
2299
				}
2300

    
2301
				if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2302
					if (rec.LookupGrid == 1) {
2303
						switch (rec.FormatRef) {
2304
						case "file":
2305
							cols_.push({
2306
								xtype: 'minovapicturecolumn',
2307
								text: rec.HeaderTitle,
2308
								dataIndex: rec.FieldName,
2309
								width: 100,
2310
								//filter: {
2311
								//    type: 'image',
2312
								//    itemDefaults: {
2313
								//        emptyText: 'Search for...'
2314
								//    }
2315
								//}
2316
							});
2317
							break
2318
						case "date":
2319
							cols_.push({
2320
								xtype: 'minovadatecolumn',
2321
								text: rec.HeaderTitle,
2322
								dataIndex: rec.FieldName,
2323
								width: 100,
2324
								filter: {
2325
									type: 'date',
2326
									itemDefaults: {
2327
										emptyText: 'Search for...'
2328
									}
2329
								}
2330
							});
2331
							break
2332
						case "amount":
2333
							cols_.push({
2334
								xtype: 'minovacurrancycolumn',
2335
								text: rec.HeaderTitle,
2336
								dataIndex: rec.FieldName,
2337
								align: 'right',
2338
								width: 300,
2339
								filter: {
2340
									type: 'number',
2341
									itemDefaults: {
2342
										emptyText: 'Search for...'
2343
									}
2344
								}
2345
							});
2346
							break
2347
						case "amountencrypt":
2348
							cols_.push({
2349
								xtype: 'minovaamountcolumn',
2350
								text: rec.HeaderTitle,
2351
								dataIndex: rec.FieldName,
2352
								align: 'right',
2353
								width: 300,
2354
								filter: {
2355
									type: 'string',
2356
									itemDefaults: {
2357
										emptyText: 'Search for...'
2358
									}
2359
								}
2360
							});
2361
							break
2362
						case "datetime":
2363
							cols_.push({
2364
								xtype: 'minovadatetimecolumn',
2365
								text: rec.HeaderTitle,
2366
								dataIndex: rec.FieldName,
2367
								width: 140,
2368
								filter: {
2369
									type: 'string',
2370
									itemDefaults: {
2371
										emptyText: 'Search for...'
2372
									}
2373
								}
2374
							});
2375
							break
2376
						default:
2377
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2378
								cols_.push({
2379
									text: rec.HeaderTitle,
2380
									dataIndex: rec.FieldName,
2381
									width: 100,
2382
									filter: {
2383
										type: 'string',
2384
										itemDefaults: {
2385
											emptyText: 'Search for...'
2386
										}
2387
									}
2388
								});
2389
							} else if (rec.SearchType == '2') {
2390
								cols_.push({
2391
									xtype: 'minovalookupcolumn',
2392
									text: rec.HeaderTitle,
2393
									tableName: rec.TableRef,
2394
									dataIndex: rec.FieldName,
2395
									filter: {
2396
										itemDefaults: {
2397
											emptyText: 'Search for...'
2398
										}
2399
									}
2400
								});
2401
							} else if (rec.TableRef != "" && rec.SearchType != '2') {
2402
								if (rec.TableRef != null) {
2403
									var valueField = null;
2404
									var displayValue = null;
2405
									Ext.Ajax.request({
2406
										async: false,
2407
										method: 'POST',
2408
										url: '/UserControl/GetStore',
2409
										params: {
2410
											tableName: 'SDATATABLEFIELD',
2411
											param: 'TableName[equal]' + rec.TableRef
2412
										},
2413
										success: function (response) {
2414
											var results = Ext.decode(response.responseText);
2415
											data_ = results.data;
2416
											if (data_ != undefined) {
2417
												valueField_ = $.grep(data_, function (r) {
2418
														return r.ValueField == '1'
2419
													});
2420
												valueField = valueField_[0].FieldName
2421
													displayValue_ = $.grep(data_, function (r) {
2422
														return r.DisplayValue == '1'
2423
													});
2424
												displayValue = displayValue_[0].FieldName
2425
											}
2426
										}
2427
									});
2428
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2429
									var count_ = 0;
2430
									if (store_) {
2431
										count_ = store_.count();
2432
									}
2433
									if (count_ == 0) {
2434
										Ext.create('Ext.data.Store', {
2435
											storeId: 'store_' + rec.FieldName,
2436
											//autoLoad: true,
2437
											proxy: {
2438
												method: 'POST',
2439
												type: 'ajax',
2440
												url: '/UserControl/GetStore',
2441
												extraParams: {
2442
													tableName: rec.TableRef,
2443
													param: rec.ParamCombo
2444
												},
2445
												reader: {
2446
													type: 'json',
2447
													root: 'data',
2448
													totalProperty: 'data[0].TotalCount'
2449
												}
2450
											}
2451
										})
2452
									}
2453
									cols_.push({
2454
										xtype: 'minovacombocolumn',
2455
										text: rec.HeaderTitle,
2456
										dataIndex: rec.FieldName,
2457
										valueField: valueField,
2458
										displayField: displayValue,
2459
										store: 'store_' + rec.FieldName,
2460
										filter: {
2461
											type: 'list',
2462
											itemDefaults: {
2463
												emptyText: 'Search for...'
2464
											}
2465
										}
2466
									});
2467
								}
2468

    
2469
							} else {
2470
								cols_.push({
2471
									text: rec.HeaderTitle,
2472
									dataIndex: rec.FieldName,
2473
									filter: {
2474
										itemDefaults: {
2475
											emptyText: 'Search for...'
2476
										}
2477
									}
2478
								});
2479
							}
2480
							break
2481
						}
2482
					} else {
2483
						cols_.push({
2484
							text: rec.HeaderTitle,
2485
							dataIndex: rec.FieldName,
2486
							hidden: true,
2487
							filter: {
2488
								itemDefaults: {
2489
									emptyText: 'Search for...'
2490
								}
2491
							}
2492
						});
2493
					}
2494

    
2495
				} else {
2496
					if (rec.GridView == 1) {
2497
						switch (rec.FormatRef) {
2498
						case "action":
2499
							cols_.push({
2500
								text: rec.HeaderTitle,
2501
								width: 100,
2502
								xtype: 'actioncolumn',
2503
								tooltip: 'View Data',
2504
								name: rec.FieldName,
2505
								itemId: me.tableName + rec.FieldName,
2506
								align: 'center',
2507
								iconCls: 'fa-edit',
2508
								renderer: function (value, metadata, record) {
2509
									metadata.tdStyle = 'font-family: FontAwesome'
2510
								},
2511
								handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
2512

    
2513
									this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
2514
								}
2515
							});
2516
							break
2517
						case "file":
2518
							cols_.push({
2519
								xtype: 'minovapicturecolumn',
2520
								text: rec.HeaderTitle,
2521
								dataIndex: rec.FieldName,
2522
								width: 100,
2523
								//filter: {
2524
								//    type: '',
2525
								//    itemDefaults: {
2526
								//        emptyText: 'Search for...'
2527
								//    }
2528
								//}
2529
							});
2530
							break
2531
						case "date":
2532
							cols_.push({
2533
								xtype: 'minovadatecolumn',
2534
								text: rec.HeaderTitle,
2535
								dataIndex: rec.FieldName,
2536
								width: 100,
2537
								filter: {
2538
									type: 'date',
2539
									itemDefaults: {
2540
										emptyText: 'Search for...'
2541
									}
2542
								}
2543
							});
2544
							break
2545
						case "amountencrypt":
2546
							cols_.push({
2547
								xtype: 'minovaamountcolumn',
2548
								text: rec.HeaderTitle,
2549
								dataIndex: rec.FieldName,
2550
								align: 'right',
2551
								width: 300,
2552
								filter: {
2553
									type: 'string',
2554
									itemDefaults: {
2555
										emptyText: 'Search for...'
2556
									}
2557
								}
2558
							});
2559
							break
2560
						case "amount":
2561
							cols_.push({
2562
								xtype: 'minovacurrancycolumn',
2563
								text: rec.HeaderTitle,
2564
								dataIndex: rec.FieldName,
2565
								align: 'right',
2566
								width: 300,
2567
								filter: {
2568
									type: 'number',
2569
									itemDefaults: {
2570
										emptyText: 'Search for...'
2571
									}
2572
								}
2573
							});
2574
							break
2575
						case "datetime":
2576
							cols_.push({
2577
								xtype: 'minovadatetimecolumn',
2578
								text: rec.HeaderTitle,
2579
								dataIndex: rec.FieldName,
2580
								width: 140,
2581
								filter: {
2582
									type: 'string',
2583
									itemDefaults: {
2584
										emptyText: 'Search for...'
2585
									}
2586
								}
2587
							});
2588
							break
2589
						default:
2590
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2591
								cols_.push({
2592
									text: rec.HeaderTitle,
2593
									dataIndex: rec.FieldName,
2594
									width: 100,
2595
									filter: {
2596
										type: 'string',
2597
										itemDefaults: {
2598
											emptyText: 'Search for...'
2599
										}
2600
									}
2601
								});
2602
							} else if (rec.TableRef != "") {
2603
								if (rec.TableRef != null) {
2604
									var valueField = null;
2605
									var displayValue = null;
2606
									Ext.Ajax.request({
2607
										async: false,
2608
										method: 'POST',
2609
										url: '/UserControl/GetStore',
2610
										params: {
2611
											tableName: 'SDATATABLEFIELD',
2612
											param: 'TableName[equal]' + rec.TableRef
2613
										},
2614
										success: function (response) {
2615
											var results = Ext.decode(response.responseText);
2616
											data_ = results.data;
2617
											//if (data_ != undefined) {
2618
											if (data_.length > 0) {
2619
												valueField_ = $.grep(data_, function (r) {
2620
														return r.ValueField == '1'
2621
													});
2622
												valueField = valueField_[0].FieldName
2623
													displayValue_ = $.grep(data_, function (r) {
2624
														return r.DisplayValue == '1'
2625
													});
2626
												displayValue = displayValue_[0].FieldName
2627
											} else {
2628
												MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2629
											}
2630
										}
2631
									});
2632
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2633
									var count_ = 0;
2634
									if (store_) {
2635
										count_ = store_.count();
2636
									}
2637
									if (count_ == 0) {
2638
										Ext.create('Ext.data.Store', {
2639
											storeId: 'store_' + rec.FieldName,
2640
											autoLoad: false,
2641
											proxy: {
2642
												method: 'POST',
2643
												type: 'ajax',
2644
												url: '/UserControl/GetStore',
2645
												extraParams: {
2646
													tableName: rec.TableRef,
2647
													param: rec.ParamCombo
2648
												},
2649
												reader: {
2650
													type: 'json',
2651
													root: 'data',
2652
													totalProperty: 'data[0].TotalCount'
2653
												}
2654
											}
2655
										})
2656
									}
2657
									cols_.push({
2658
										xtype: 'minovacombocolumn',
2659
										text: rec.HeaderTitle,
2660
										dataIndex: rec.FieldName,
2661
										valueField: valueField,
2662
										displayField: displayValue,
2663
										store: 'store_' + rec.FieldName,
2664
										filter: {
2665
											type: 'list',
2666
											itemDefaults: {
2667
												emptyText: 'Search for...'
2668
											}
2669
										}
2670
									});
2671
								}
2672

    
2673
							} else if (rec.FixedValue != "") {
2674
								cols_.push({
2675
									xtype: 'minovacombocolumnfixvalue',
2676
									text: rec.HeaderTitle,
2677
									dataIndex: rec.FieldName,
2678
									fixedValue: rec.FixedValue,
2679
									filter: {
2680
										type: 'list',
2681
										itemDefaults: {
2682
											emptyText: 'Search for...'
2683
										}
2684
									}
2685
								});
2686
							} else {
2687
								cols_.push({
2688
									text: rec.HeaderTitle,
2689
									dataIndex: rec.FieldName,
2690
									filter: {
2691
										itemDefaults: {
2692
											emptyText: 'Search for...'
2693
										}
2694
									}
2695
								});
2696
							}
2697
							break
2698
						}
2699
					} else {
2700
						cols_.push({
2701
							text: rec.HeaderTitle,
2702
							dataIndex: rec.FieldName,
2703
							hidden: true,
2704
							filter: {
2705
								itemDefaults: {
2706
									emptyText: 'Search for...'
2707
								}
2708
							}
2709
						});
2710
					}
2711

    
2712
				}
2713
			});
2714
		};
2715
		var param_ = me.param;
2716
		if (param_ == undefined) {
2717
			param_ = ''
2718
		}
2719
		var jsStoreGrid = new Ext.data.Store({
2720
				storeId: me.storename,
2721
				autoLoad: autoLoad,
2722
				pageSize: me.pagesize,
2723
				proxy: {
2724
					method: 'POST',
2725
					type: 'ajax',
2726
					url: '/UserControl/GetStorePagingAuth',
2727
					extraParams: {
2728
						tableName: me.tableName,
2729
						param: param_,
2730
						menuId: MinovaUtil.GetMenuID()
2731
					},
2732
					reader: {
2733
						type: 'json',
2734
						root: 'data',
2735
						totalProperty: 'totalRecords'
2736
					}
2737
				},
2738
			});
2739
		Ext.applyIf(me, {
2740
			autoScroll: true,
2741
			enableLocking: locking,
2742
			lockedGridConfig: {
2743
				header: false,
2744
				collapsible: true,
2745
				width: widthLock,
2746
				forceFit: locking,
2747
				listeners: {
2748
					render: function (grid) {
2749
						var pagingToolbar = grid.child('pagingtoolbar');
2750
						if (pagingToolbar) {
2751
							grid.remove(pagingToolbar, true);
2752
						}
2753
					}
2754
				}
2755
			},
2756
			listeners: {
2757
				viewready: function () {
2758
					if (autoLoad == true) {
2759
						this.getStore().loadPage(1);
2760
					}
2761
				},
2762
				beforeedit: function () {
2763
					return false;
2764
				},
2765
			},
2766
			lockedViewConfig: {
2767
				scroll: 'horizontal'
2768
			},
2769
			viewConfig: {
2770
				emptyText: 'No Data Display',
2771
				deferEmptyText: false,
2772
				//Add Nana For Autosize Column Mode
2773
				listeners: {
2774
					refresh: function (dataview) {
2775
						Ext.each(dataview.panel.columns, function (column) {
2776
							//if (column.autoSizeColumn == false)
2777
							//	column.autoSizeColumn = true;
2778
							column.autoSize();
2779
							//dataview.store.reload();
2780
						})
2781
					}
2782
				},
2783
				render: function (comp) {
2784
					comp.getStore().reload();
2785
				}
2786
			},
2787
			//for chekbox
2788
			selModel: {
2789
				//type: 'cellmodel'
2790
			},
2791
			selType: checkSelection,
2792
			columns: cols_,
2793

    
2794
			store: jsStoreGrid,
2795

    
2796
			plugins: [{
2797
					ptype: 'gridfilters'
2798
				}
2799
			],
2800

    
2801
		});
2802
		me.callParent(arguments);
2803
	}
2804

    
2805
});
2806
Ext.define('MinovaUtil.MinovaES.MinovaGrid', {
2807
	extend: 'Ext.grid.Panel',
2808
	requires: ['Ext.grid.RowNumberer'],
2809
	alias: 'widget.minovagrid',
2810
	//alternateClassName : 'Ext.grid.MinovaGrid',
2811
	tableName: undefined,
2812
	isLookup: undefined,
2813
	param: undefined,
2814
	pagesize: undefined,
2815
	storename: undefined,
2816
	layoutType: undefined,
2817
	enableLocking: true,
2818

    
2819
	tbar: [{
2820
			xtype: 'button',
2821
			text: 'Action',
2822
			name: 'actionBtn',
2823
			//scale: 'medium',
2824
			menu: [{
2825
					text: 'Add',
2826
					name: 'Add_',
2827
					action: 'CRUDaddNewRecord',
2828
					style: 'font-family: FontAwesome',
2829
					iconCls: 'fa-plus-circle',
2830
					handler: function () {
2831
						var layout = null;
2832
						var tolbar = this.up();
2833
						var name = '';
2834
						var tableName = tolbar.up().up().up().tableName;
2835
						var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
2836
						var titleMain = mpnl.getTitle();
2837
						var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
2838
						if (pnl) {
2839
							layout = pnl.getLayoutType();
2840
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
2841
							pnl.setLastTitle(titleMain);
2842
							mpnl.setTitle('Add ' + titleMain);
2843
						} else {
2844
							pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
2845
							layout = pnl.getLayoutType();
2846
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
2847
							pnl.setLastTitle(titleMain);
2848
							mpnl.setTitle('Add ' + titleMain);
2849
						}
2850
						if (layout == 'L003') {
2851
							var _grid = "MinovaGridFormGrid" + tableName;
2852
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
2853
							var _formEdit = "MinovaGridFormEdit" + tableName;
2854
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2855
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2856
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2857
							g.setHidden(true);
2858
							formDisplay.setHidden(true);
2859
							formEdit.reset();
2860
							formEdit.setActionSubmit(0)
2861
							formEdit.setSubmitProc(true)
2862
							formEdit.setHidden(false);
2863
							var heigh = pnl.getLastheightform();
2864
							var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
2865
								if (pDetail) {
2866
									// pDetail.setHeight(heigh + 100);
2867
								} else {
2868
									pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
2869
									var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2870
										var mainPnl = mainPnl_.getHeight();
2871
									//pDetail.setHeight(mainPnl + 100);
2872

    
2873
								}
2874

    
2875
								var emp = formEdit.getForm().findField("EmployeeID");
2876
							if (emp) {
2877
								emp.setValue(getParam("EmployeeID"))
2878
								emp.setHidden(true);
2879
							}
2880

    
2881
						} else {
2882
							var _grid = "MinovaGridFormGrid" + tableName;
2883
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
2884
							var _formEdit = "MinovaGridFormEdit" + tableName;
2885
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2886
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2887
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2888
							formEdit.setActionSubmit(0)
2889
							formDisplay.setHidden(true);
2890
							formDisplay.setTitle("Add");
2891

    
2892
							formEdit.setTitle("Add - " + titleMain);
2893
							formEdit.reset();
2894
							formEdit.setSubmitProc(true)
2895
							formEdit.setHidden(false);
2896
							var emp = formEdit.getForm().findField("EmployeeID");
2897
							if (emp) {
2898
								emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
2899
								emp.setHidden(true);
2900
							}
2901

    
2902
						}
2903
					}
2904
				}, {
2905
					text: 'Copy',
2906
					name: 'Copy_',
2907
					iconCls: 'fa-copy',
2908
					style: 'font-family: FontAwesome',
2909
					handler: function () {
2910
						var layout = null;
2911
						var tolbar = this.up();
2912
						var name = '';
2913
						var tableName = tolbar.up().up().up().tableName;
2914
						var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
2915
						var titleMain = mpnl.getTitle();
2916
						var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
2917

    
2918
						if (pnl) {
2919
							layout = pnl.getLayoutType();
2920
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
2921
							pnl.setLastTitle(titleMain);
2922
							mpnl.setTitle('Copy ' + titleMain);
2923
						} else {
2924
							pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
2925
							layout = pnl.getLayoutType();
2926
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
2927
							pnl.setLastTitle(titleMain);
2928
							mpnl.setTitle('Copy ' + titleMain);
2929
						}
2930
						if (layout == 'L003') {
2931
							var _grid = "MinovaGridFormGrid" + tableName;
2932
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
2933
							var _formEdit = "MinovaGridFormEdit" + tableName;
2934
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2935
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2936
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2937
							g.setHidden(true);
2938
							formDisplay.setHidden(true);
2939
							formEdit.reset();
2940
							formEdit.setActionSubmit(0)
2941
							formEdit.setSubmitProc(true)
2942
							formEdit.setHidden(false);
2943
							var heigh = pnl.getLastheightform();
2944
							var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
2945
								if (pDetail) {
2946
									//pDetail.setHeight(heigh + 100);
2947
								} else {
2948
									pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
2949
									var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2950
										var mainPnl = mainPnl_.getHeight();
2951
									//pDetail.setHeight(mainPnl + 100);
2952

    
2953
								}
2954
								Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2955

    
2956
								var emp = formEdit.getForm().findField("EmployeeID");
2957
							if (emp) {
2958
								emp.setValue(getParam("EmployeeID"))
2959
								emp.setHidden(true);
2960
							}
2961
							var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
2962
							if (selection) {
2963
								formDisplay.getForm().setValues(selection.data);
2964
								formEdit.getForm().setValues(selection.data);
2965
							}
2966

    
2967
						} else {
2968
							var _grid = "MinovaGridFormGrid" + tableName;
2969
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
2970
							var _formEdit = "MinovaGridFormEdit" + tableName;
2971
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2972
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2973
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2974
							formEdit.setActionSubmit(0)
2975
							formDisplay.setHidden(true);
2976
							formDisplay.setTitle("Add");
2977

    
2978
							formEdit.setTitle("Copy - " + titleMain);
2979
							formEdit.reset();
2980
							formEdit.setSubmitProc(true)
2981
							formEdit.setHidden(false);
2982
							var emp = formEdit.getForm().findField("EmployeeID");
2983
							if (emp) {
2984
								emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
2985
								emp.setHidden(true);
2986
							}
2987
							var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
2988
							if (selection) {
2989
								formDisplay.getForm().setValues(selection.data);
2990
								formEdit.getForm().setValues(selection.data);
2991
								formEdit.setSubmitProc(true);
2992
								formEdit.setActionSubmit(0);
2993
							}
2994

    
2995
						}
2996
					}
2997
				}, {
2998
					text: 'Edit',
2999
					name: 'Edit_',
3000
					iconCls: 'fa-edit',
3001
					style: 'font-family: FontAwesome',
3002
					handler: function () {
3003
						var layout = null;
3004
						var tolbar = this.up();
3005
						var name = '';
3006
						var tableName = tolbar.up().up().up().tableName;
3007

    
3008
						var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
3009
						if (pnl) {
3010
							layout = pnl.getLayoutType();
3011
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
3012

    
3013
						} else {
3014
							pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
3015
							layout = pnl.getLayoutType();
3016
							pnl.setLastpage('MinovaGridFormGrid' + tableName);
3017
						}
3018

    
3019
						if (layout == 'L003') {
3020
							var _grid = "MinovaGridFormGrid" + tableName;
3021
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
3022
							var _formEdit = "MinovaGridFormEdit" + tableName;
3023
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3024
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3025
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3026

    
3027
							var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3028
							if (selection) {
3029
								formDisplay.getForm().setValues(selection.data);
3030
								formEdit.getForm().setValues(selection.data);
3031
								formDisplay.setHidden(true);
3032
								formEdit.setSubmitProc(true);
3033
								formEdit.setActionSubmit(1);
3034
								formEdit.setHidden(false);
3035
								formEdit.setHidden(false);
3036
								g.setHidden(true);
3037
								var heigh = pnl.getLastheightform();
3038
								var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
3039
									if (pDetail) {
3040
										pDetail.setHeight(heigh + 100);
3041
									} else {
3042
										pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
3043
										var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3044
											var mainPnl = mainPnl_.getHeight();
3045
										//pDetail.setHeight(mainPnl + 100);
3046

    
3047
									}
3048

    
3049
									var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
3050
								if (p) {
3051
									var lastTitile = p.getTitle();
3052
									pnl.setLastTitle(lastTitile);
3053
									p.setTitle('Edit - ' + lastTitile)
3054

    
3055
								}
3056
							}
3057
						} else {
3058
							var _grid = "MinovaGridFormGrid" + tableName;
3059
							var _formDisplay = "MinovaGridFormDisplay" + tableName;
3060
							var _formEdit = "MinovaGridFormEdit" + tableName;
3061
							var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3062
							var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3063
							var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3064

    
3065
							var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3066
							if (selection) {
3067
								formDisplay.getForm().setValues(selection.data);
3068
								formEdit.getForm().setValues(selection.data);
3069
								formDisplay.setTitle("Edit");
3070
								formEdit.setTitle("Edit");
3071
								if (layout == 'L003') {
3072
									g.setHidden(true);
3073
								}
3074

    
3075
								formDisplay.setHidden(true);
3076
								formEdit.setActionSubmit(1)
3077
								formEdit.setSubmitProc(true)
3078
								formEdit.setHidden(false);
3079

    
3080
								var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
3081
									var lastTitile = mpnl.getTitle();
3082
								formEdit.setTitle('Edit - ' + lastTitile);
3083
								//mpnl.setTitle('Edit ' + lastTitile);
3084
							}
3085
						}
3086
					}
3087
				}, {
3088
					text: 'Delete',
3089
					name: 'Delete_',
3090
					iconCls: 'fa-trash-o',
3091
					style: 'font-family: FontAwesome',
3092
				}
3093
			]
3094
		}, {
3095
			xtype: 'tbfill'
3096
		}, {
3097
			text: 'Clear Filters',
3098
			tooltip: 'Clear all filters',
3099
			name: 'clearbtn',
3100
			handler: function () {
3101
				var tolbar = this.up()
3102
					var grid_ = tolbar.up()
3103
					grid_.filters.clearFilters()
3104
			}
3105
		}, ],
3106

    
3107
	getTableName: function () {
3108
		return this.tableName;
3109
	},
3110

    
3111
	initComponent: function () {
3112
		var me = this;
3113
		var cols_ = [];
3114
		var fieldeditor = {};
3115
		var hasil = null;
3116
		var autoLoad = true;
3117
		var LangID = MinovaUtil.GetLangID();
3118
		//var _url = 'GetAllField';
3119

    
3120
		//if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3121
		//	autoLoad = false;
3122
		//    _url = 'GetAllFieldGridLookUp';
3123

    
3124
		//};
3125
		//Ext.Ajax.request({
3126
		//	async : false,
3127
		//	method : 'POST',
3128
		//	url : '/Devt/' + _url + '?tableName=' + me.tableName,
3129
		//	success : function (response) {
3130
		//		var results = Ext.decode(response.responseText);
3131
		//		hasil = results.data;
3132
		//	}
3133
		//});
3134
		//hamid03102016
3135
		//if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
3136
		parameter = null;
3137
		if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
3138
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
3139
		} else {
3140
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3141
		}
3142
		Ext.Ajax.request({
3143
			async: false,
3144
			method: 'POST',
3145
			url: '/UserControl/GetStore',
3146
			params: {
3147
				tableName: 'PDSBS0007',
3148
				param: parameter
3149
			},
3150
			success: function (response) {
3151
				var results = Ext.decode(response.responseText);
3152
				hasil = results.data;
3153
			}
3154
		});
3155
		//end
3156
		if (hasil.length > 0) {
3157
			Ext.each(hasil, function (rec) {
3158
				var null_ = null;
3159
				if (rec.IsPrimaryKey == true) {
3160
					null_ = false;
3161
				}
3162
				if (rec.IsRequired == true) {
3163
					null_ = false;
3164
				} else {
3165
					null_ = true;
3166
				}
3167
				if (rec.GridView == 1) {
3168
					switch (rec.FormatRef) {
3169
					case "date":
3170
						cols_.push({
3171
							xtype: 'minovadatecolumn',
3172
							text: rec.HeaderTitle,
3173
							dataIndex: rec.FieldName,
3174
							width: 100,
3175
							filter: {
3176
								type: 'date',
3177
								itemDefaults: {
3178
									emptyText: 'Search for...'
3179
								}
3180
							}
3181
						});
3182
						break
3183
					case "amountencrypt":
3184
						cols_.push({
3185
							xtype: 'minovaamountcolumn',
3186
							text: rec.HeaderTitle,
3187
							dataIndex: rec.FieldName,
3188
							align: 'right',
3189
							width: 100,
3190
							filter: {
3191
								type: 'string',
3192
								itemDefaults: {
3193
									emptyText: 'Search for...'
3194
								}
3195
							}
3196
						});
3197
						break
3198
					case "amount":
3199
						cols_.push({
3200
							xtype: 'minovacurrancycolumn',
3201
							text: rec.HeaderTitle,
3202
							dataIndex: rec.FieldName,
3203
							align: 'right',
3204
							width: 100,
3205
							filter: {
3206
								type: 'number',
3207
								itemDefaults: {
3208
									emptyText: 'Search for...'
3209
								}
3210
							}
3211
						});
3212
						break
3213
					case "datetime":
3214
						cols_.push({
3215
							xtype: 'minovadatetimecolumn',
3216
							text: rec.HeaderTitle,
3217
							dataIndex: rec.FieldName,
3218
							width: 140,
3219
							filter: {
3220
								type: 'string',
3221
								itemDefaults: {
3222
									emptyText: 'Search for...'
3223
								}
3224
							}
3225
						});
3226
						break
3227
					default:
3228
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
3229
							cols_.push({
3230
								text: rec.HeaderTitle,
3231
								dataIndex: rec.FieldName,
3232
								width: 100,
3233
								filter: {
3234
									type: 'string',
3235
									itemDefaults: {
3236
										emptyText: 'Search for...'
3237
									}
3238
								}
3239
							});
3240
						} else if (rec.SearchType == '2') {
3241
							cols_.push({
3242
								xtype: 'minovalookupcolumn',
3243
								text: rec.HeaderTitle,
3244
								tableName: rec.TableRef,
3245
								dataIndex: rec.FieldName,
3246
								filter: {
3247
									itemDefaults: {
3248
										emptyText: 'Search for...'
3249
									}
3250
								}
3251
							});
3252
						} else if (rec.TableRef != "") {
3253
							if (rec.TableRef != null) {
3254
								var valueField = null;
3255
								Ext.Ajax.request({
3256
									async: false,
3257
									method: 'POST',
3258
									url: '/UserControl/GetStore',
3259
									params: {
3260
										tableName: 'SDATATABLEFIELD',
3261
										param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
3262
									},
3263
									success: function (response) {
3264
										var results = Ext.decode(response.responseText);
3265
										data_ = results.data[0];
3266
										if (data_ != undefined) {
3267
											valueField = data_.FieldName;
3268
										}
3269
									}
3270
								});
3271

    
3272
								displayValue = null;
3273
								Ext.Ajax.request({
3274
									async: false,
3275
									method: 'POST',
3276
									url: '/UserControl/GetStore',
3277
									params: {
3278
										tableName: 'SDATATABLEFIELD',
3279
										param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
3280
									},
3281
									success: function (response) {
3282
										var results = Ext.decode(response.responseText);
3283
										data_ = results.data[0];
3284
										if (data_ != undefined) {
3285
											displayValue = data_.FieldName;
3286
											//console.log(data_)
3287
										}
3288
									}
3289
								});
3290
								var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3291
								var count_ = 0;
3292
								if (store_) {
3293
									count_ = store_.count();
3294
								}
3295
								if (count_ == 0) {
3296
									Ext.create('Ext.data.Store', {
3297
										storeId: 'store_' + rec.FieldName,
3298
										autoLoad: true,
3299
										proxy: {
3300
											method: 'POST',
3301
											type: 'ajax',
3302
											url: '/UserControl/GetStore',
3303
											extraParams: {
3304
												tableName: rec.TableRef,
3305
												param: rec.ParamCombo
3306
											},
3307
											reader: {
3308
												type: 'json',
3309
												root: 'data',
3310
												totalProperty: 'data[0].TotalCount'
3311
											}
3312
										}
3313
									})
3314
								}
3315
								cols_.push({
3316
									xtype: 'minovacombocolumn',
3317
									text: rec.HeaderTitle,
3318
									dataIndex: rec.FieldName,
3319
									valueField: valueField,
3320
									displayField: displayValue,
3321
									store: 'store_' + rec.FieldName,
3322
									filter: {
3323
										type: 'list',
3324
										itemDefaults: {
3325
											emptyText: 'Search for...'
3326
										}
3327
									}
3328
								});
3329
							}
3330

    
3331
						} else {
3332
							cols_.push({
3333
								text: rec.HeaderTitle,
3334
								dataIndex: rec.FieldName,
3335
								filter: {
3336
									itemDefaults: {
3337
										emptyText: 'Search for...'
3338
									}
3339
								}
3340
							});
3341
						}
3342
						break
3343
					}
3344
				} else {
3345
					cols_.push({
3346
						text: rec.HeaderTitle,
3347
						dataIndex: rec.FieldName,
3348
						hidden: true,
3349
						filter: {
3350
							itemDefaults: {
3351
								emptyText: 'Search for...'
3352
							}
3353
						}
3354
					});
3355
				}
3356
			});
3357
		};
3358
		var param_ = me.param;
3359
		if (param_ == undefined) {
3360
			param_ = ''
3361
		}
3362
		var jsStoreGrid = new Ext.data.Store({
3363
				storeId: me.storename,
3364
				autoLoad: autoLoad,
3365
				pageSize: me.pagesize,
3366
				proxy: {
3367
					method: 'POST',
3368
					type: 'ajax',
3369
					url: '/UserControl/GetStorePaging',
3370
					extraParams: {
3371
						tableName: me.tableName,
3372
						param: param_
3373
					},
3374
					reader: {
3375
						type: 'json',
3376
						root: 'data',
3377
						totalProperty: 'totalRecords'
3378
					}
3379
				}
3380
			});
3381
		Ext.applyIf(me, {
3382
			autoScroll: true,
3383
			enableLocking: true,
3384
			lockedGridConfig: {
3385
				header: false,
3386
				collapsible: true,
3387
				width: 250,
3388
				forceFit: true,
3389
				listeners: {
3390
					render: function (grid) {
3391
						var pagingToolbar = grid.child('pagingtoolbar');
3392
						if (pagingToolbar) {
3393
							grid.remove(pagingToolbar, true);
3394
						}
3395
					}
3396
				}
3397
			},
3398
			listeners: {
3399
				viewready: function () {
3400
					if (autoLoad == true) {
3401
						this.getStore().loadPage(1);
3402
					}
3403

    
3404
				},
3405
				beforeedit: function () {
3406
					return false;
3407
				}
3408
			},
3409
			lockedViewConfig: {
3410
				scroll: 'horizontal'
3411
			},
3412
			viewConfig: {
3413
				emptyText: 'No Data Display',
3414
				deferEmptyText: false,
3415
				//add Nana for Autosize Column Mode
3416
				listeners: {
3417
					refresh: function (dataview) {
3418
						Ext.each(dataview.panel.columns, function (column) {
3419
							if (column.autoSizeColumn == false)
3420
								column.autoSizeColumn = true;
3421
							column.autoSize();
3422
						})
3423
					}
3424
				}
3425
			},
3426
			columns: cols_,
3427

    
3428
			store: jsStoreGrid,
3429

    
3430
			plugins: [{
3431
					ptype: 'gridfilters'
3432
				}, {
3433
					ptype: 'rowediting',
3434
					clicksToEdit: 2,
3435
					listeners: {
3436
						edit: function (editor, context, eOpts) {}
3437
					}
3438
				}, ]
3439
		});
3440
		me.callParent(arguments);
3441
	}
3442

    
3443
});
3444
/*MinovaGrid Report Generator*/
3445
Ext.define('MinovaUtil.MinovaES.MinovaRptGeneratorGrid', {
3446
	extend: 'Ext.grid.Panel',
3447
	requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3448
	alias: 'widget.minovareportgeneratorgrid',
3449
	storeOutput: undefined,
3450
	storeName: undefined,
3451
	filter: undefined,
3452
	tableName: undefined,
3453
	pagesize: undefined,
3454
	autoLoad: undefined,
3455
	initComponent: function () {
3456
		var me = this;
3457
		var store = me.storeOutput;
3458
		var cols = [];
3459
		var groupField = '';
3460
		var autoLoad = true;
3461
		if (me.autoLoad == false) {
3462
			autoLoad = false;
3463
		}
3464
		if (store.length > 0) {
3465
			Ext.each(store, function (rec) {
3466
				var isHide = false;
3467
				if (rec.IsGrouping == "YES") {
3468
					groupField = rec.FieldName;
3469
					isHide = true;
3470
				}
3471
				var format = rec.FormatRef;
3472
				if (format != null && format != undefined)
3473
					format = format.toLowerCase();
3474
				switch (format) {
3475
				case "file":
3476
					cols.push({
3477
						xtype: 'minovapicturecolumn',
3478
						text: rec.HeaderTitle,
3479
						dataIndex: rec.FieldName,
3480
						hidden: isHide,
3481
						width: 100
3482
					});
3483
					break
3484
				case "date":
3485
					cols.push({
3486
						xtype: 'minovadatecolumn',
3487
						text: rec.HeaderTitle,
3488
						dataIndex: rec.FieldName,
3489
						hidden: isHide,
3490
						width: 100
3491
					});
3492
					break
3493
				case "amount":
3494
					cols.push({
3495
						xtype: 'minovacurrancycolumn',
3496
						text: rec.HeaderTitle,
3497
						align: 'right',
3498
						dataIndex: rec.FieldName,
3499
						width: 150,
3500
						hidden: isHide,
3501
						summaryType: rec.Aggregator,
3502
						summaryRenderer: function (value) {
3503
							return Ext.util.Format.number(value, '0,000.00');
3504
						}
3505
					});
3506
					break
3507
				case "amountencrypt":
3508
					cols.push({
3509
						xtype: 'minovaamountcolumn',
3510
						align: 'right',
3511
						text: rec.HeaderTitle,
3512
						dataIndex: rec.FieldName,
3513
						width: 150,
3514
						hidden: isHide,
3515
						summaryType: rec.Aggregator,
3516
						summaryRenderer: function (value) {
3517
							if (rec.Aggregator == "sum") {
3518
								var str = Ext.StoreManager.lookup("store" + me.tableName);
3519
								var records = str.data.items;
3520
								var total = 0,
3521
								len = records.length;
3522
								if (len > 0) {
3523
									for (var i = 0; i < len; ++i) {
3524
										var nilai = records[i].get(rec.FieldName);
3525
										Ext.Ajax.request({
3526
											async: false,
3527
											method: 'POST',
3528
											url: '/Devt/DecryptData',
3529
											params: {
3530
												dt: nilai
3531
											},
3532
											success: function (response) {
3533
												var results = Ext.decode(response.responseText);
3534
												nilai = results.data;
3535
												total += parseFloat(nilai);
3536
											}
3537
										});
3538
									}
3539
									Ext.util.Format.thousandSeparator = ".";
3540
									return Ext.util.Format.number(total, '0,000');
3541
								}
3542
								return 0;
3543
							} else if (rec.Aggregator == "average") {
3544
								var str = Ext.StoreManager.lookup("store" + me.tableName);
3545
								var records = str.data.items;
3546
								var len = records.length,
3547
								sum = 0;
3548
								if (len > 0) {
3549
									for (var i = 0; i < len; ++i) {
3550
										var nilai = records[i].get(rec.FieldName);
3551
										Ext.Ajax.request({
3552
											async: false,
3553
											method: 'POST',
3554
											url: '/Devt/DecryptData',
3555
											params: {
3556
												dt: nilai
3557
											},
3558
											success: function (response) {
3559
												var results = Ext.decode(response.responseText);
3560
												nilai = results.data;
3561
												sum += parseFloat(nilai);
3562
											}
3563
										});
3564
									}
3565
									var rs = sum / len;
3566
									Ext.util.Format.thousandSeparator = ".";
3567
									return Ext.util.Format.number(rs, '0,000');
3568
								}
3569
								return 0;
3570
							} else {
3571
								return value;
3572
							}
3573
						}
3574
					});
3575
					break
3576
				case "datetime":
3577
					cols.push({
3578
						xtype: 'minovadatetimecolumn',
3579
						text: rec.HeaderTitle,
3580
						dataIndex: rec.FieldName,
3581
						width: 150,
3582
						hidden: isHide
3583
					});
3584
					break
3585
				default:
3586
					if (rec.TableRef != "" && rec.TableRef != null) {
3587
						var valueField = null;
3588
						var displayValue = null;
3589
						Ext.Ajax.request({
3590
							async: false,
3591
							method: 'POST',
3592
							url: '/UserControl/GetStore',
3593
							params: {
3594
								tableName: 'SDATATABLEFIELD',
3595
								param: 'TableName[equal]' + rec.TableRef
3596
							},
3597
							success: function (response) {
3598
								var results = Ext.decode(response.responseText);
3599
								data_ = results.data;
3600
								if (data_.length > 0) {
3601
									valueField_ = $.grep(data_, function (r) {
3602
											return r.ValueField == '1'
3603
										});
3604
									valueField = valueField_[0].FieldName
3605
										displayValue_ = $.grep(data_, function (r) {
3606
											return r.DisplayValue == '1'
3607
										});
3608
									displayValue = displayValue_[0].FieldName
3609
								} else {
3610
									MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
3611
								}
3612
							}
3613
						});
3614
						var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3615
						var count_ = 0;
3616
						if (store_) {
3617
							count_ = store_.count();
3618
						}
3619
						if (count_ == 0) {
3620
							Ext.create('Ext.data.Store', {
3621
								storeId: 'store_' + rec.FieldName,
3622
								autoLoad: false,
3623
								proxy: {
3624
									method: 'POST',
3625
									type: 'ajax',
3626
									url: '/UserControl/GetStore',
3627
									extraParams: {
3628
										tableName: rec.TableRef,
3629
										param: ""
3630
									},
3631
									reader: {
3632
										type: 'json',
3633
										root: 'data',
3634
										totalProperty: 'data[0].TotalCount'
3635
									}
3636
								}
3637
							})
3638
						}
3639
						Ext.StoreMgr.lookup('store_' + rec.FieldName).load();
3640
						var stror = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3641
						cols.push({
3642
							xtype: 'minovacombocolumn',
3643
							text: rec.HeaderTitle,
3644
							dataIndex: rec.FieldName,
3645
							valueField: valueField,
3646
							displayField: displayValue,
3647
							store: 'store_' + rec.FieldName,
3648
							width: 200,
3649
							hidden: isHide,
3650
							renderer: function (val) {
3651
								var stor = stror;
3652
								if (stor.getCount() === 0) {}
3653
								var index = stor.find(valueField, val);
3654
								if (index != -1) {
3655
									var rec = stor.getAt(index);
3656
									return val + ' - ' + rec.get(displayValue);
3657
								} else {
3658
									return val;
3659
								}
3660
							}
3661
						});
3662
					} else if (rec.FixedValue != "" && rec.FixedValue != null) {
3663
						cols.push({
3664
							xtype: 'minovacombocolumnfixvalue',
3665
							text: rec.HeaderTitle,
3666
							dataIndex: rec.FieldName,
3667
							fixedValue: rec.FixedValue,
3668
							width: 100,
3669
							hidden: isHide
3670
						});
3671
					} else {
3672
						if (rec.DataType == "0") {
3673
							cols.push({
3674
								text: rec.HeaderTitle,
3675
								dataIndex: rec.FieldName,
3676
								width: 150,
3677
								hidden: isHide
3678
							});
3679
						} else {
3680
							cols.push({
3681
								text: rec.HeaderTitle,
3682
								dataIndex: rec.FieldName,
3683
								width: 150,
3684
								hidden: isHide,
3685
								summaryType: rec.Aggregator,
3686
							});
3687
						}
3688
					}
3689
					break
3690
				}
3691
			});
3692
			var featuretype = "summary";
3693
			if (groupField != "") {
3694
				featuretype = "groupingsummary";
3695
			}
3696
			var param = me.filter;
3697
			if (param == undefined) {
3698
				param = ''
3699
			}
3700
			var jsStoreGrid = new Ext.data.Store({
3701
					storeId: me.storeName,
3702
					autoLoad: autoLoad,
3703
					pageSize: me.pagesize,
3704
					proxy: {
3705
						method: 'POST',
3706
						type: 'ajax',
3707
						url: '/UserControl/GetStorePagingAuth',
3708
						extraParams: {
3709
							tableName: me.tableName,
3710
							param: param,
3711
							menuId: MinovaUtil.GetMenuID()
3712
						},
3713
						reader: {
3714
							type: 'json',
3715
							root: 'data',
3716
							totalProperty: 'totalRecords'
3717
						}
3718
					},
3719
					groupField: groupField
3720
				});
3721
			Ext.applyIf(me, {
3722
				autoScroll: true,
3723
				enableLocking: false,
3724
				lockedGridConfig: {
3725
					header: false,
3726
					collapsible: true,
3727
					width: 250,
3728
					forceFit: false,
3729
					listeners: {
3730
						render: function (grid) {
3731
							var pagingToolbar = grid.child('pagingtoolbar');
3732
							if (pagingToolbar) {
3733
								grid.remove(pagingToolbar, true);
3734
							}
3735
						}
3736
					}
3737
				},
3738
				listeners: {
3739
					viewready: function () {
3740
						if (autoLoad == true) {
3741
							this.getStore().loadPage(1);
3742
						}
3743
					},
3744
					beforeedit: function () {
3745
						return false;
3746
					}
3747
				},
3748
				lockedViewConfig: {
3749
					scroll: 'horizontal'
3750
				},
3751
				viewConfig: {
3752
					emptyText: 'No Data Display',
3753
					deferEmptyText: false
3754
				},
3755
				selModel: {},
3756
				columns: cols,
3757
				store: jsStoreGrid,
3758
				features: [{
3759
						ftype: 'groupingsummary'
3760
					}
3761
				],
3762
				plugins: [{
3763
						ptype: 'gridfilters'
3764
					}
3765
				]
3766
			});
3767
		}
3768
		me.callParent(arguments);
3769
	}
3770
});
3771
/*MinovaGrouping Grid*/
3772
Ext.define('MinovaUtil.MinovaES.MinovaGroupingGrid', {
3773
	extend: 'Ext.grid.Panel',
3774
	requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3775
	alias: 'widget.minovagroupinggrid',
3776
	tableName: undefined,
3777
	isLookup: undefined,
3778
	param: undefined,
3779
	pagesize: undefined,
3780
	storeName: undefined,
3781
	layoutType: undefined,
3782
	enableLocking: true,
3783
	autoLoad: undefined,
3784
	multiSelect: undefined,
3785
	getTableName: function () {
3786
		return this.tableName;
3787
	},
3788
	initComponent: function () {
3789
		var me = this;
3790
		var cols_ = [];
3791
		var fieldeditor = {};
3792
		var hasil = null;
3793
		var autoLoad = true;
3794
		var LangID = localStorage.LangId;
3795
		var fielGrid = 'rec.GridView == 1';
3796
		var locking = true;
3797
		var checkSelection = '';
3798
		var widthLock = 250;
3799
		var GroupField = '';
3800
		if (me.multiSelect) {
3801
			locking = false;
3802
			checkSelection = 'checkboxmodel';
3803
			widthLock = 40;
3804
		}
3805
		if (me.autoLoad == false) {
3806
			autoLoad = false;
3807
		}
3808
		parameter = null;
3809
		if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3810
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
3811
			fielGrid = 'rec.LookupGrid == 1';
3812
			locking = false;
3813
		} else {
3814
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3815
		};
3816

    
3817
		Ext.Ajax.request({
3818
			async: false,
3819
			method: 'POST',
3820
			url: '/UserControl/GetStore',
3821
			params: {
3822
				tableName: 'PDSBS0007',
3823
				param: parameter
3824
			},
3825
			success: function (response) {
3826
				var results = Ext.decode(response.responseText);
3827
				hasil = results.data;
3828
			}
3829
		});
3830
		if (hasil.length > 0) {
3831
			Ext.each(hasil, function (rec) {
3832
				var null_ = null;
3833
				if (rec.SearchFunction == "group") {
3834
					GroupField = rec.FieldName;
3835
				}
3836
				if (rec.IsPrimaryKey == true) {
3837
					null_ = false;
3838
				}
3839
				if (rec.IsRequired == true) {
3840
					null_ = false;
3841
				} else {
3842
					null_ = true;
3843
				}
3844
				if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3845
					if (rec.LookupGrid == 1) {
3846
						switch (rec.FormatRef) {
3847
						case "date":
3848
							cols_.push({
3849
								xtype: 'minovadatecolumn',
3850
								text: rec.HeaderTitle,
3851
								dataIndex: rec.FieldName,
3852
								width: 100,
3853
								filter: {
3854
									type: 'date',
3855
									itemDefaults: {
3856
										emptyText: 'Search for...'
3857
									}
3858
								}
3859
							});
3860
							break
3861
						case "amount":
3862
							cols_.push({
3863
								xtype: 'minovacurrancycolumn',
3864
								text: rec.HeaderTitle,
3865
								align: 'right',
3866
								dataIndex: rec.FieldName,
3867
								width: 100,
3868
								filter: {
3869
									type: 'number',
3870
									itemDefaults: {
3871
										emptyText: 'Search for...'
3872
									}
3873
								}
3874
							});
3875
							break
3876
						case "amountencrypt":
3877
							cols_.push({
3878
								xtype: 'minovaamountcolumn',
3879
								align: 'right',
3880
								text: rec.HeaderTitle,
3881
								dataIndex: rec.FieldName,
3882
								width: 100,
3883
								filter: {
3884
									type: 'string',
3885
									itemDefaults: {
3886
										emptyText: 'Search for...'
3887
									}
3888
								}
3889
							});
3890
							break
3891
						case "datetime":
3892
							cols_.push({
3893
								xtype: 'minovadatetimecolumn',
3894
								text: rec.HeaderTitle,
3895
								dataIndex: rec.FieldName,
3896
								width: 140,
3897
								filter: {
3898
									type: 'string',
3899
									itemDefaults: {
3900
										emptyText: 'Search for...'
3901
									}
3902
								}
3903
							});
3904
							break
3905
						default:
3906
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
3907
								cols_.push({
3908
									text: rec.HeaderTitle,
3909
									dataIndex: rec.FieldName,
3910
									width: 100,
3911
									filter: {
3912
										type: 'string',
3913
										itemDefaults: {
3914
											emptyText: 'Search for...'
3915
										}
3916
									}
3917
								});
3918
							} else if (rec.TableRef != "") {
3919
								if (rec.TableRef != null) {
3920
									var valueField = null;
3921
									var displayValue = null;
3922
									Ext.Ajax.request({
3923
										async: false,
3924
										method: 'POST',
3925
										url: '/UserControl/GetStore',
3926
										params: {
3927
											tableName: 'SDATATABLEFIELD',
3928
											param: 'TableName[equal]' + rec.TableRef
3929
										},
3930
										success: function (response) {
3931
											var results = Ext.decode(response.responseText);
3932
											data_ = results.data;
3933
											if (data_ != undefined) {
3934
												valueField_ = $.grep(data_, function (r) {
3935
														return r.ValueField == '1'
3936
													});
3937
												valueField = valueField_[0].FieldName
3938
													displayValue_ = $.grep(data_, function (r) {
3939
														return r.DisplayValue == '1'
3940
													});
3941
												displayValue = displayValue_[0].FieldName
3942
											}
3943
										}
3944
									});
3945
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3946
									var count_ = 0;
3947
									if (store_) {
3948
										count_ = store_.count();
3949
									}
3950
									if (count_ == 0) {
3951
										Ext.create('Ext.data.Store', {
3952
											storeId: 'store_' + rec.FieldName,
3953
											//autoLoad: true,
3954
											proxy: {
3955
												method: 'POST',
3956
												type: 'ajax',
3957
												url: '/UserControl/GetStore',
3958
												extraParams: {
3959
													tableName: rec.TableRef,
3960
													param: rec.ParamCombo
3961
												},
3962
												reader: {
3963
													type: 'json',
3964
													root: 'data',
3965
													totalProperty: 'data[0].TotalCount'
3966
												}
3967
											}
3968
										})
3969
									}
3970
									cols_.push({
3971
										xtype: 'minovacombocolumn',
3972
										text: rec.HeaderTitle,
3973
										dataIndex: rec.FieldName,
3974
										valueField: valueField,
3975
										displayField: displayValue,
3976
										store: 'store_' + rec.FieldName,
3977
										filter: {
3978
											type: 'list',
3979
											itemDefaults: {
3980
												emptyText: 'Search for...'
3981
											}
3982
										}
3983
									});
3984
								}
3985
							} else {
3986
								cols_.push({
3987
									text: rec.HeaderTitle,
3988
									dataIndex: rec.FieldName,
3989
									filter: {
3990
										itemDefaults: {
3991
											emptyText: 'Search for...'
3992
										}
3993
									}
3994
								});
3995
							}
3996
							break
3997
						}
3998
					} else {
3999
						cols_.push({
4000
							text: rec.HeaderTitle,
4001
							dataIndex: rec.FieldName,
4002
							hidden: true,
4003
							filter: {
4004
								itemDefaults: {
4005
									emptyText: 'Search for...'
4006
								}
4007
							}
4008
						});
4009
					}
4010

    
4011
				} else {
4012
					if (rec.GridView == 1) {
4013
						switch (rec.FormatRef) {
4014
						case "date":
4015
							cols_.push({
4016
								xtype: 'minovadatecolumn',
4017
								text: rec.HeaderTitle,
4018
								dataIndex: rec.FieldName,
4019
								width: 100,
4020
								flex: 1,
4021
								filter: {
4022
									type: 'date',
4023
									itemDefaults: {
4024
										emptyText: 'Search for...'
4025
									}
4026
								}
4027
							});
4028
							break
4029
						case "amountencrypt":
4030
							cols_.push({
4031
								xtype: 'minovaamountcolumn',
4032
								align: 'right',
4033
								text: rec.HeaderTitle,
4034
								dataIndex: rec.FieldName,
4035
								width: 100,
4036
								flex: 1,
4037
								filter: {
4038
									type: 'string',
4039
									itemDefaults: {
4040
										emptyText: 'Search for...'
4041
									}
4042
								}
4043
							});
4044
							break
4045
						case "amount":
4046
							cols_.push({
4047
								xtype: 'minovacurrancycolumn',
4048
								text: rec.HeaderTitle,
4049
								align: 'right',
4050
								dataIndex: rec.FieldName,
4051
								width: 100,
4052
								flex: 1,
4053
								filter: {
4054
									type: 'number',
4055
									itemDefaults: {
4056
										emptyText: 'Search for...'
4057
									}
4058
								}
4059
							});
4060
							break
4061
						case "datetime":
4062
							cols_.push({
4063
								xtype: 'minovadatetimecolumn',
4064
								text: rec.HeaderTitle,
4065
								dataIndex: rec.FieldName,
4066
								width: 140,
4067
								flex: 1,
4068
								filter: {
4069
									type: 'string',
4070
									itemDefaults: {
4071
										emptyText: 'Search for...'
4072
									}
4073
								}
4074
							});
4075
							break
4076
						default:
4077
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
4078
								cols_.push({
4079
									text: rec.HeaderTitle,
4080
									dataIndex: rec.FieldName,
4081
									width: 100,
4082
									flex: 1,
4083
									filter: {
4084
										type: 'string',
4085
										itemDefaults: {
4086
											emptyText: 'Search for...'
4087
										}
4088
									}
4089
								});
4090
							} else if (rec.TableRef != "") {
4091
								if (rec.TableRef != null) {
4092
									var valueField = null;
4093
									var displayValue = null;
4094
									Ext.Ajax.request({
4095
										async: false,
4096
										method: 'POST',
4097
										url: '/UserControl/GetStore',
4098
										params: {
4099
											tableName: 'SDATATABLEFIELD',
4100
											param: 'TableName[equal]' + rec.TableRef
4101
										},
4102
										success: function (response) {
4103
											var results = Ext.decode(response.responseText);
4104
											data_ = results.data;
4105
											if (data_ != undefined) {
4106
												valueField_ = $.grep(data_, function (r) {
4107
														return r.ValueField == '1'
4108
													});
4109
												valueField = valueField_[0].FieldName
4110
													displayValue_ = $.grep(data_, function (r) {
4111
														return r.DisplayValue == '1'
4112
													});
4113
												displayValue = displayValue_[0].FieldName
4114
											}
4115
										}
4116
									});
4117
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
4118
									var count_ = 0;
4119
									if (store_) {
4120
										count_ = store_.count();
4121
									}
4122
									if (count_ == 0) {
4123
										Ext.create('Ext.data.Store', {
4124
											storeId: 'store_' + rec.FieldName,
4125
											autoLoad: false,
4126
											proxy: {
4127
												method: 'POST',
4128
												type: 'ajax',
4129
												url: '/UserControl/GetStore',
4130
												extraParams: {
4131
													tableName: rec.TableRef,
4132
													param: rec.ParamCombo
4133
												},
4134
												reader: {
4135
													type: 'json',
4136
													root: 'data',
4137
													totalProperty: 'data[0].TotalCount'
4138
												}
4139
											}
4140
										})
4141
									}
4142
									cols_.push({
4143
										xtype: 'minovacombocolumn',
4144
										text: rec.HeaderTitle,
4145
										dataIndex: rec.FieldName,
4146
										valueField: valueField,
4147
										displayField: displayValue,
4148
										store: 'store_' + rec.FieldName,
4149
										flex: 1,
4150
										filter: {
4151
											type: 'list',
4152
											itemDefaults: {
4153
												emptyText: 'Search for...'
4154
											}
4155
										}
4156
									});
4157
								}
4158

    
4159
							} else {
4160
								cols_.push({
4161
									text: rec.HeaderTitle,
4162
									dataIndex: rec.FieldName,
4163
									flex: 1,
4164
									filter: {
4165
										itemDefaults: {
4166
											emptyText: 'Search for...'
4167
										}
4168
									}
4169
								});
4170
							}
4171
							break
4172
						}
4173
					} else {
4174
						cols_.push({
4175
							text: rec.HeaderTitle,
4176
							dataIndex: rec.FieldName,
4177
							hidden: true,
4178
							filter: {
4179
								itemDefaults: {
4180
									emptyText: 'Search for...'
4181
								}
4182
							}
4183
						});
4184
					}
4185

    
4186
				}
4187
			});
4188
		}
4189
		var param_ = me.param;
4190
		if (param_ == undefined) {
4191
			param_ = ''
4192
		}
4193
		var jsStoreGrid = new Ext.data.Store({
4194
				storeId: me.storeName,
4195
				autoLoad: autoLoad,
4196
				pageSize: me.pagesize,
4197
				proxy: {
4198
					method: 'POST',
4199
					type: 'ajax',
4200
					url: '/UserControl/GetStorePagingAuth',
4201
					extraParams: {
4202
						tableName: me.tableName,
4203
						param: param_,
4204
						menuId: MinovaUtil.GetMenuID()
4205
					},
4206
					reader: {
4207
						type: 'json',
4208
						root: 'data',
4209
						totalProperty: 'totalRecords'
4210
					}
4211
				},
4212
				groupField: GroupField,
4213
				//sorters: ['tipe','cuisine','name'],
4214
			});
4215
		Ext.applyIf(me, {
4216
			autoScroll: true,
4217
			enableLocking: locking,
4218
			lockedGridConfig: {
4219
				header: false,
4220
				collapsible: true,
4221
				width: widthLock,
4222
				forceFit: locking,
4223
				listeners: {
4224
					render: function (grid) {
4225
						var pagingToolbar = grid.child('pagingtoolbar');
4226
						if (pagingToolbar) {
4227
							grid.remove(pagingToolbar, true);
4228
						}
4229
					}
4230
				}
4231
			},
4232
			listeners: {
4233
				viewready: function () {
4234
					if (autoLoad == true) {
4235
						this.getStore().loadPage(1);
4236
					}
4237

    
4238
				},
4239
				beforeedit: function () {
4240
					return false;
4241
				}
4242
			},
4243
			lockedViewConfig: {
4244
				scroll: 'horizontal'
4245
			},
4246
			viewConfig: {
4247
				emptyText: 'No Data Display',
4248
				deferEmptyText: false,
4249
				listeners: {
4250
					refresh: function (dataview) {
4251
						Ext.each(dataview.panel.columns, function (column) {
4252
							if (column.autoSizeColumn == false)
4253
								column.autoSizeColumn = true;
4254
							column.autoSize();
4255
						})
4256
					}
4257
				}
4258
			},
4259
			selModel: {},
4260
			selType: checkSelection,
4261
			columns: cols_,
4262
			store: jsStoreGrid,
4263
			features: [{
4264
					ftype: 'grouping'
4265
				}
4266
			],
4267
			plugins: [{
4268
					ptype: 'gridfilters'
4269
				}
4270
			]
4271
		});
4272
		me.callParent(arguments);
4273
	}
4274
});
4275
/*Form ESS Generator*/
4276
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm', {
4277
	extend: 'Ext.form.Panel',
4278
	alias: ['widget.MinovaWorkflowForm', 'widget.minovaworkflowform', 'widget.workflowform'],
4279
	formname: this.name,
4280
	bizprocid: undefined,
4281
	taskid: undefined,
4282
	tableName: undefined,
4283
	titleform: undefined,
4284
	resizable: true,
4285
	border: false,
4286
	autoScroll: true,
4287
	minHeight: 20,
4288
	layout: 'column',
4289
	listeners: {
4290
		render: function () {
4291
			if (this.titleform != undefined) {
4292
				this.setTitle(this.titleform);
4293
			}
4294
		},
4295
	},
4296
	defaults: {
4297
		layout: 'form',
4298
		xtype: 'container',
4299
		defaultType: 'textfield',
4300
		style: 'width: 50%',
4301
	},
4302
	initComponent: function () {
4303
		var col1 = [];
4304
		var col2 = [];
4305
		var me = this;
4306
		var LangID = localStorage.LangId;
4307
		var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
4308
		var formname_ = me.name;
4309
		var nameTable_ = me.tableName;
4310
		Ext.Ajax.request({
4311
			async: false,
4312
			method: 'POST',
4313
			url: '/UserControl/GetStore',
4314
			params: {
4315
				tableName: 'PDSWFSTRUCTUREFIELD',
4316
				param: parameter
4317
			},
4318
			success: function (response) {
4319
				var results = Ext.decode(response.responseText);
4320
				hasil = results.data;
4321
			}
4322
		});
4323
		if (hasil.length > 0) {
4324
			Ext.each(hasil, function (rec) {
4325
				var formfield = undefined;
4326
				var readonly = false;
4327
				var ishidden = false;
4328
				var allowblank = true;
4329
				var startDt = null;
4330
				var endDt = null;
4331
				if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4332
					startDt = 'StartDate';
4333
					endDt = 'EndDate';
4334
				}
4335
				if (rec.IsReadOnly == '1') {
4336
					readonly = true;
4337
				}
4338
				if (rec.IsRequired == '1') {
4339
					allowblank = false;
4340
				}
4341
				if (rec.IsVisible == '0') {
4342
					ishidden = true;
4343
				}
4344
				if (rec.SearchType == "") //textfield
4345
				{
4346
					switch (rec.FormatRef) {
4347
					case "date":
4348
						if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4349
							formfield = new Ext.form.DateField({
4350
									allowBlank: allowblank,
4351
									fieldLabel: rec.ScreenCaption,
4352
									readOnly: readonly,
4353
									msgTarget: 'side',
4354
									labelCls: 'label-minova',
4355
									labelWidth: 150,
4356
									hidden: ishidden,
4357
									name: rec.FieldName,
4358
									submitFormat: 'Ymd',
4359
									value: rec.DefaultValue,
4360
									anchor: '100%',
4361
									vtype: 'daterange',
4362
									start: startDt,
4363
									end: endDt,
4364
									formname: formname_,
4365
									nameTable: nameTable_,
4366
									hideMode: 'visibility',
4367
									listeners: {
4368
										change: function (val) {
4369
											var _label = val.name;
4370
											var _form = val.formname;
4371
											var _Value = val.getValue();
4372
											var target = rec.TriggerCombo;
4373
											var custumFunc = rec.SelectFunction;
4374
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4375
												Ext.Ajax.request({
4376
													async: false,
4377
													method: 'POST',
4378
													url: '/UserControl/GetStore',
4379
													params: {
4380
														tableName: 'PCMFUNC',
4381
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4382
													},
4383
													success: function (response) {
4384
														var results = Ext.decode(response.responseText);
4385
														data_ = results.data[0];
4386
														if (data_ != undefined) {
4387
															custumFunc = data_.FunctionCode;
4388
														}
4389
													}
4390
												});
4391
											}
4392
											var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4393
											if (frm) {
4394
												if (custumFunc) {
4395
													eval(custumFunc)
4396
												}
4397
											}
4398
										}
4399
									}
4400
								});
4401
						} else {
4402
							formfield = new Ext.form.DateField({
4403
									allowBlank: allowblank,
4404
									fieldLabel: rec.ScreenCaption,
4405
									readOnly: readonly,
4406
									msgTarget: 'side',
4407
									labelCls: 'label-minova',
4408
									labelWidth: 150,
4409
									hidden: ishidden,
4410
									name: rec.FieldName,
4411
									submitFormat: 'Ymd',
4412
									value: rec.DefaultValue,
4413
									anchor: '100%',
4414
									formname: formname_,
4415
									nameTable: nameTable_,
4416
									hideMode: 'visibility',
4417
									listeners: {
4418
										change: function (val) {
4419
											var _label = val.name;
4420
											var _form = val.formname;
4421
											var _Value = val.getValue();
4422
											var target = rec.TriggerCombo;
4423
											var custumFunc = rec.SelectFunction;
4424
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4425
												Ext.Ajax.request({
4426
													async: false,
4427
													method: 'POST',
4428
													url: '/UserControl/GetStore',
4429
													params: {
4430
														tableName: 'PCMFUNC',
4431
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4432
													},
4433
													success: function (response) {
4434
														var results = Ext.decode(response.responseText);
4435
														data_ = results.data[0];
4436
														if (data_ != undefined) {
4437
															custumFunc = data_.FunctionCode;
4438
														}
4439
													}
4440
												});
4441
											}
4442
											var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4443
											if (frm) {
4444
												if (custumFunc) {
4445
													eval(custumFunc)
4446
												}
4447
											}
4448
										}
4449
									}
4450
								});
4451
						}
4452
						break;
4453
					case "time":
4454
						formfield = new Ext.form.TimeField({
4455
								allowBlank: allowblank,
4456
								fieldLabel: rec.ScreenCaption,
4457
								readOnly: readonly,
4458
								labelCls: 'label-minova',
4459
								labelWidth: 150,
4460
								hidden: ishidden,
4461
								name: rec.FieldName,
4462
								msgTarget: 'side',
4463
								format: 'Hi',
4464
								submitFormat: 'Hi',
4465
								increment: 5,
4466
								value: rec.DefaultValue,
4467
								anchor: '100%',
4468
								formname: formname_,
4469
								nameTable: nameTable_,
4470
								listeners: {
4471
									change: function (val) {
4472
										var _label = val.name;
4473
										var _form = val.formname;
4474
										var _Value = val.getValue();
4475
										var target = rec.TriggerCombo;
4476
										var custumFunc = rec.SelectFunction;
4477
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4478
											Ext.Ajax.request({
4479
												async: false,
4480
												method: 'POST',
4481
												url: '/UserControl/GetStore',
4482
												params: {
4483
													tableName: 'PCMFUNC',
4484
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
4485
												},
4486
												success: function (response) {
4487
													var results = Ext.decode(response.responseText);
4488
													data_ = results.data[0];
4489
													if (data_ != undefined) {
4490
														custumFunc = data_.FunctionCode;
4491
													}
4492
												}
4493
											});
4494
										}
4495
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4496
										if (frm) {
4497
											if (custumFunc) {
4498
												eval(custumFunc)
4499
											}
4500
										}
4501
									}
4502
								}
4503
							});
4504
						break;
4505
					case "amount":
4506
						formfield = new Ext.form.TextField({
4507
								allowBlank: allowblank,
4508
								fieldLabel: rec.ScreenCaption,
4509
								readOnly: readonly,
4510
								labelCls: 'label-minova',
4511
								labelWidth: 150,
4512
								hidden: ishidden,
4513
								name: rec.FieldName,
4514
								msgTarget: 'side',
4515
								value: rec.DefaultValue,
4516
								maxLength: rec.Length,
4517
								anchor: '100%',
4518
								formname: formname_,
4519
								nameTable: nameTable_,
4520
								fieldStyle: 'text-align:right;',
4521
								listeners: {
4522
									change: function (val) {
4523
										var _label = val.name;
4524
										var _form = val.formname;
4525
										var _Value = val.getValue();
4526
										var target = rec.TriggerCombo;
4527
										var custumFunc = rec.SelectFunction;
4528
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4529
											Ext.Ajax.request({
4530
												async: false,
4531
												method: 'POST',
4532
												url: '/UserControl/GetStore',
4533
												params: {
4534
													tableName: 'PCMFUNC',
4535
													param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4536
												},
4537
												success: function (response) {
4538
													var results = Ext.decode(response.responseText);
4539
													data_ = results.data[0];
4540
													if (data_ != undefined) {
4541
														custumFunc = data_.FunctionCode;
4542
													}
4543
												}
4544
											});
4545
										}
4546
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4547
										if (frm) {
4548
											if (custumFunc) {
4549
												eval(custumFunc)
4550
											}
4551
										}
4552
									}
4553
								}
4554
							});
4555
						break;
4556
					case "file":
4557
						formfield = new MinovaUtil.MinovaES.UploadFile({
4558
								allowBlank: allowblank,
4559
								fieldLabel: rec.ScreenCaption,
4560
								readOnly: readonly,
4561
								readOnlyCls: 'minova-readonly',
4562
								hidden: ishidden,
4563
								labelCls: 'label-minova',
4564
								name: rec.FieldName,
4565
								msgTarget: 'side',
4566
								fieldname: rec.FieldName,
4567
								IsPrimaryKey: rec.IsPrimaryKey,
4568
								tableName: rec.TableRef,
4569
								triggerCls: 'x-form-search-trigger',
4570
								formtarget: me.formname,
4571
								anchor: '100%',
4572
								formname: formname_,
4573
								nameTable: nameTable_,
4574
								listeners: {
4575
									change: function (val) {
4576
										var _label = val.name;
4577
										var _form = val.formname;
4578
										var _Value = val.getValue();
4579
										var target = rec.TriggerCombo;
4580
										var custumFunc = rec.SelectFunction;
4581
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4582
											Ext.Ajax.request({
4583
												async: false,
4584
												method: 'POST',
4585
												url: '/UserControl/GetStore',
4586
												params: {
4587
													tableName: 'PCMFUNC',
4588
													param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4589
												},
4590
												success: function (response) {
4591
													var results = Ext.decode(response.responseText);
4592
													data_ = results.data[0];
4593
													if (data_ != undefined) {
4594
														custumFunc = data_.FunctionCode;
4595
													}
4596
												}
4597
											});
4598
										}
4599
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4600
										if (frm) {
4601
											if (target) {
4602
												var f = frm.getForm().findField(target)
4603
													_store = f.getStore();
4604
												var _tbl = _store.proxy.extraParams.tableName;
4605
												var oldParam = _store.proxy.extraParams.param;
4606
												_store.proxy.extraParams = {
4607
													tableName: _tbl,
4608
													param: _label + '[=]' + _Value
4609
												};
4610
												_store.load();
4611
											}
4612
											if (custumFunc) {
4613
												eval(custumFunc)
4614
											}
4615
										}
4616
									}
4617
								}
4618
							});
4619
						break;
4620
					default:
4621
						if (rec.DataType == 0) {
4622
							if (rec.Length > 250) {
4623
								formfield = new Ext.form.TextArea({
4624
										allowBlank: allowblank,
4625
										fieldLabel: rec.ScreenCaption,
4626
										readOnly: readonly,
4627
										labelCls: 'label-minova',
4628
										labelWidth: 150,
4629
										hidden: ishidden,
4630
										name: rec.FieldName,
4631
										msgTarget: 'side',
4632
										value: rec.DefaultValue,
4633
										maxLength: rec.Length,
4634
										anchor: '100%',
4635
										formname: formname_,
4636
										nameTable: nameTable_,
4637
										listeners: {
4638
											change: function (val) {
4639
												var _label = val.name;
4640
												var _form = val.formname;
4641
												var _Value = val.getValue();
4642
												var target = rec.TriggerCombo;
4643
												var custumFunc = rec.SelectFunction;
4644
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4645
													Ext.Ajax.request({
4646
														async: false,
4647
														method: 'POST',
4648
														url: '/UserControl/GetStore',
4649
														params: {
4650
															tableName: 'PCMFUNC',
4651
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4652
														},
4653
														success: function (response) {
4654
															var results = Ext.decode(response.responseText);
4655
															data_ = results.data[0];
4656
															if (data_ != undefined) {
4657
																custumFunc = data_.FunctionCode;
4658
															}
4659
														}
4660
													});
4661
												}
4662
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4663
												if (frm) {
4664
													if (custumFunc) {
4665
														eval(custumFunc)
4666
													}
4667
												}
4668
											}
4669
										}
4670
									});
4671
							} else {
4672
								if (rec.FixedValue != '') {
4673
									var storeData = [];
4674
									var str = rec.FixedValue;
4675
									var hasil = str.split('||');
4676
									hasil.forEach(function (h) {
4677
										store_ = h.split('=')
4678
											storeData.push({
4679
												code: store_[0],
4680
												desc: store_[1],
4681
											});
4682
									});
4683
									formfield = new Ext.form.ComboBox({
4684
											allowBlank: allowblank,
4685
											fieldLabel: rec.ScreenCaption,
4686
											forceSelection: true,
4687
											readOnly: readonly,
4688
											labelCls: 'label-minova',
4689
											labelWidth: 150,
4690
											hidden: ishidden,
4691
											name: rec.FieldName,
4692
											msgTarget: 'side',
4693
											value: rec.DefaultValue,
4694
											anchor: '100%',
4695
											formname: formname_,
4696
											nameTable: nameTable_,
4697
											formtarget: me.formname,
4698
											store: Ext.create('Ext.data.Store', {
4699
												storeId: 'store' + rec.FieldName,
4700
												autoLoad: true,
4701
												data: storeData
4702

    
4703
											}),
4704
											listeners: {
4705
												change: function (val) {
4706
													var _label = val.name;
4707
													var _form = val.formtarget;
4708
													var _Value = val.getValue();
4709
													var target = rec.TriggerCombo;
4710
													var custumFunc = rec.SelectFunction;
4711
													var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4712
													if (frm) {
4713
														if (target) {
4714
															var f = frm.getForm().findField(target)
4715
																_store = f.getStore();
4716
															var _tbl = _store.proxy.extraParams.tableName;
4717
															var oldParam = _store.proxy.extraParams.param;
4718
															_store.proxy.extraParams = {
4719
																tableName: _tbl,
4720
																param: _label + '[=]' + _Value
4721
															};
4722
															_store.load();
4723
														}
4724
														if (custumFunc) {
4725
															eval(custumFunc)
4726
														}
4727
													}
4728
												}
4729
											},
4730
											queryMode: 'local',
4731
											valueField: 'code',
4732
											displayField: 'desc',
4733
										});
4734
								} else {
4735
									formfield = new Ext.form.TextField({
4736
											allowBlank: allowblank,
4737
											fieldLabel: rec.ScreenCaption,
4738
											readOnly: readonly,
4739
											labelCls: 'label-minova',
4740
											labelWidth: 150,
4741
											hidden: ishidden,
4742
											name: rec.FieldName,
4743
											msgTarget: 'side',
4744
											value: rec.DefaultValue,
4745
											maxLength: rec.Length,
4746
											anchor: '100%',
4747
											formname: formname_,
4748
											nameTable: nameTable_,
4749
											listeners: {
4750
												change: function (val) {
4751
													var _label = val.name;
4752
													var _form = val.formname;
4753
													var _Value = val.getValue();
4754
													var target = rec.TriggerCombo;
4755
													var custumFunc = rec.SelectFunction;
4756
													if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4757
														Ext.Ajax.request({
4758
															async: false,
4759
															method: 'POST',
4760
															url: '/UserControl/GetStore',
4761
															params: {
4762
																tableName: 'PCMFUNC',
4763
																param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4764
															},
4765
															success: function (response) {
4766
																var results = Ext.decode(response.responseText);
4767
																data_ = results.data[0];
4768
																if (data_ != undefined) {
4769
																	custumFunc = data_.FunctionCode;
4770
																}
4771
															}
4772
														});
4773
													}
4774
													var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4775
													if (frm) {
4776
														if (custumFunc) {
4777
															eval(custumFunc)
4778
														}
4779
													}
4780
												}
4781
											}
4782
										});
4783
								}
4784
							}
4785
						} else if (rec.DataType == 1 || rec.DataType == 2) {
4786
							formfield = new MinovaUtil.MinovaES.MinovaNumberField({
4787
									allowBlank: allowblank,
4788
									fieldLabel: rec.ScreenCaption,
4789
									readOnly: readonly,
4790
									labelCls: 'label-minova',
4791
									labelWidth: 150,
4792
									msgTarget: 'side',
4793
									hidden: ishidden,
4794
									name: rec.FieldName,
4795
									value: rec.DefaultValue,
4796
									maxLength: rec.Length,
4797
									anchor: '100%',
4798
									formname: formname_,
4799
									nameTable: nameTable_,
4800
									fieldStyle: 'text-align:right;',
4801
									listeners: {
4802
										change: function (val) {
4803
											var _label = val.name;
4804
											var _form = val.formname;
4805
											var _Value = val.getValue();
4806
											var target = rec.TriggerCombo;
4807
											var custumFunc = rec.SelectFunction;
4808
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4809
												Ext.Ajax.request({
4810
													async: false,
4811
													method: 'POST',
4812
													url: '/UserControl/GetStore',
4813
													params: {
4814
														tableName: 'PCMFUNC',
4815
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4816
													},
4817
													success: function (response) {
4818
														var results = Ext.decode(response.responseText);
4819
														data_ = results.data[0];
4820
														if (data_ != undefined) {
4821
															custumFunc = data_.FunctionCode;
4822
														}
4823
													}
4824
												});
4825
											}
4826
											var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4827
											if (frm) {
4828
												if (target) {
4829
													var f = frm.getForm().findField(target)
4830
														_store = f.getStore();
4831
													var _tbl = _store.proxy.extraParams.tableName;
4832
													var oldParam = _store.proxy.extraParams.param;
4833
													_store.proxy.extraParams = {
4834
														tableName: _tbl,
4835
														param: _label + '[=]' + _Value
4836
													};
4837
													_store.load();
4838
												}
4839
												if (custumFunc) {
4840
													eval(custumFunc)
4841
												}
4842
											}
4843
										}
4844
									}
4845
								});
4846
						} else if (rec.DataType == 3) {
4847
							formfield = new Ext.form.TextField({
4848
									allowBlank: allowblank,
4849
									fieldLabel: rec.ScreenCaption,
4850
									readOnly: readonly,
4851
									labelCls: 'label-minova',
4852
									labelWidth: 150,
4853
									msgTarget: 'side',
4854
									hidden: ishidden,
4855
									name: rec.FieldName,
4856
									value: rec.DefaultValue,
4857
									maxLength: rec.Length,
4858
									precision: rec.Prec,
4859
									anchor: '100%',
4860
									formname: formname_,
4861
									nameTable: nameTable_,
4862
									fieldStyle: 'text-align:right;',
4863
									maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
4864
									listeners: {
4865
										change: function (val) {
4866
											var _label = val.name;
4867
											var _form = val.formname;
4868
											var _Value = val.getValue();
4869
											var target = rec.TriggerCombo;
4870
											var custumFunc = rec.SelectFunction;
4871
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4872
												Ext.Ajax.request({
4873
													async: false,
4874
													method: 'POST',
4875
													url: '/UserControl/GetStore',
4876
													params: {
4877
														tableName: 'PCMFUNC',
4878
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4879
													},
4880
													success: function (response) {
4881
														var results = Ext.decode(response.responseText);
4882
														data_ = results.data[0];
4883
														if (data_ != undefined) {
4884
															custumFunc = data_.FunctionCode;
4885
														}
4886
													}
4887
												});
4888
											}
4889
											var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4890
											if (frm) {
4891
												if (target) {
4892
													var f = frm.getForm().findField(target)
4893
														_store = f.getStore();
4894
													var _tbl = _store.proxy.extraParams.tableName;
4895
													var oldParam = _store.proxy.extraParams.param;
4896
													_store.proxy.extraParams = {
4897
														tableName: _tbl,
4898
														param: _label + '[=]' + _Value
4899
													};
4900
													_store.load();
4901
												}
4902
												if (custumFunc) {
4903
													eval(custumFunc)
4904
												}
4905
											}
4906
										}
4907
									}
4908
								});
4909
						}
4910
					}
4911
				} else if (rec.SearchType != "") {
4912
					if (rec.SearchType == "0") //combobox
4913
					{
4914
						valueField = null;
4915
						displayValue = null;
4916
						Ext.Ajax.request({
4917
							async: false,
4918
							method: 'POST',
4919
							url: '/UserControl/GetStore',
4920
							params: {
4921
								tableName: 'SDATATABLEFIELD',
4922
								param: 'TableName[equal]' + rec.TableRef
4923
							},
4924
							success: function (response) {
4925
								var results = Ext.decode(response.responseText);
4926
								data_ = results.data;
4927
								if (data_ != undefined) {
4928
									valueField_ = $.grep(data_, function (r) {
4929
											return r.ValueField == '1'
4930
										});
4931
									if (valueField_.length > 0) {
4932
										valueField = valueField_[0].FieldName
4933
									}
4934
									displayValue_ = $.grep(data_, function (r) {
4935
											return r.DisplayValue == '1'
4936
										});
4937
									if (displayValue_.length > 0) {
4938
										displayValue = displayValue_[0].FieldName
4939
									}
4940
								}
4941
							}
4942
						});
4943
						formfield = new Ext.form.ComboBox({
4944
								allowBlank: allowblank,
4945
								fieldLabel: rec.ScreenCaption,
4946
								forceSelection: true,
4947
								readOnly: readonly,
4948
								labelCls: 'label-minova',
4949
								labelWidth: 150,
4950
								hidden: ishidden,
4951
								msgTarget: 'side',
4952
								name: rec.FieldName,
4953
								formname: formname_,
4954
								nameTable: nameTable_,
4955
								value: rec.DefaultValue,
4956
								width: '95%',
4957
								store: Ext.create('Ext.data.Store', {
4958
									storeId: 'store' + rec.FieldName,
4959
									autoLoad: false,
4960
									proxy: {
4961
										method: 'POST',
4962
										type: 'ajax',
4963
										url: '/UserControl/GetStore',
4964
										extraParams: {
4965
											tableName: rec.TableRef,
4966
											param: rec.ParamCombo
4967
										},
4968
										reader: {
4969
											type: 'json',
4970
											root: 'data',
4971
											totalProperty: 'data[0].TotalCount'
4972
										}
4973
									}
4974
								}),
4975
								formtarget: formname_,
4976
								listeners: {
4977
									afterrender: function (f) {
4978
										var store_ = f.getStore();
4979
										store_.load();
4980
									},
4981
									change: function (val) {
4982
										var _label = val.name;
4983
										var _form = val.formtarget;
4984
										var _Value = val.getValue();
4985
										var target = rec.TriggerCombo;
4986
										var custumFunc = rec.SelectFunction;
4987
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4988
										if (frm) {
4989

    
4990
											if (target) {
4991
												var f = frm.getForm().findField(target)
4992
													_store = f.getStore();
4993
												var _tbl = _store.proxy.extraParams.tableName;
4994
												var oldParam = _store.proxy.extraParams.param;
4995
												_store.proxy.extraParams = {
4996
													tableName: _tbl,
4997
													param: _label + '[=]' + _Value
4998
												};
4999
												_store.load();
5000
											}
5001
											if (custumFunc) {
5002
												eval(custumFunc)
5003
											}
5004
										}
5005
									}
5006
								},
5007
								queryMode: 'local',
5008
								displayField: displayValue,
5009
								valueField: valueField,
5010
							});
5011
					} else if (rec.SearchType == '2') //Lookup
5012
					{
5013
						formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
5014
								allowBlank: allowblank,
5015
								fieldLabel: rec.ScreenCaption,
5016
								readOnly: readonly,
5017
								IsPrimaryKey: rec.IsPrimaryKey,
5018
								msgTarget: 'side',
5019
								labelCls: 'label-minova',
5020
								labelWidth: 150,
5021
								hidden: ishidden,
5022
								name: rec.FieldName,
5023
								tableName: rec.TableRef, //name tabel yang jadi ref-nya
5024
								triggerCls: 'x-form-search-trigger',
5025
								vtype: 'alphanum', // disable space
5026
								formtarget: me.formname, // nama form  yang akan di set value-nya
5027
								anchor: '100%',
5028
								formname: formname_,
5029
								nameTable: nameTable_,
5030
								LookupFunction: rec.LookupFunction,
5031
								SearchFunction: rec.SearchFunction,
5032
								listeners: {
5033
									change: function (val) {
5034
										var _label = val.name;
5035
										var _form = val.formname;
5036
										var _Value = val.getValue();
5037
										var target = rec.TriggerCombo;
5038
										var custumFunc = rec.SelectFunction;
5039
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5040
											Ext.Ajax.request({
5041
												async: false,
5042
												method: 'POST',
5043
												url: '/UserControl/GetStore',
5044
												params: {
5045
													tableName: 'PCMFUNC',
5046
													param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5047
												},
5048
												success: function (response) {
5049
													var results = Ext.decode(response.responseText);
5050
													data_ = results.data[0];
5051
													if (data_ != undefined) {
5052
														custumFunc = data_.FunctionCode;
5053
													}
5054
												}
5055
											});
5056
										}
5057
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5058
										if (frm) {
5059

    
5060
											if (target) {
5061
												var f = frm.getForm().findField(target)
5062
													_store = f.getStore();
5063
												var _tbl = _store.proxy.extraParams.tableName;
5064
												var oldParam = _store.proxy.extraParams.param;
5065
												_store.proxy.extraParams = {
5066
													tableName: _tbl,
5067
													param: _label + '[=]' + _Value
5068
												};
5069
												_store.load();
5070
											}
5071

    
5072
											if (custumFunc) {
5073
												eval(custumFunc)
5074
											}
5075

    
5076
										}
5077

    
5078
									},
5079

    
5080
								},
5081
							});
5082
					} else if (rec.SearchType == '3') //lookup tree
5083
					{
5084
						formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
5085
								allowBlank: allowblank,
5086
								fieldLabel: rec.ScreenCaption,
5087
								readOnly: readonly,
5088
								IsPrimaryKey: rec.IsPrimaryKey,
5089
								labelCls: 'label-minova',
5090
								labelWidth: 150,
5091
								hidden: ishidden,
5092
								name: rec.FieldName,
5093
								msgTarget: 'side',
5094
								triggerCls: 'x-form-search-trigger',
5095
								treeSructure: rec.SearchFunction, //'O-O-P',
5096
								objClassValue: rec.ParamCombo, //'O',
5097
								formname: formname_,
5098
								targetField: rec.FieldName,
5099
								nameTable: nameTable_,
5100
								editable: false,
5101
								anchor: '100%',
5102
								listeners: {
5103
									change3: function (val) {
5104
										var _label = val.name;
5105
										var _form = val.formname;
5106
										var _Value = val.getValue();
5107
										var target = rec.TriggerCombo;
5108
										var custumFunc = rec.SelectFunction;
5109
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5110
											Ext.Ajax.request({
5111
												async: false,
5112
												method: 'POST',
5113
												url: '/UserControl/GetStore',
5114
												params: {
5115
													tableName: 'PCMFUNC',
5116
													param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5117
												},
5118
												success: function (response) {
5119
													var results = Ext.decode(response.responseText);
5120
													data_ = results.data[0];
5121
													if (data_ != undefined) {
5122
														custumFunc = data_.FunctionCode;
5123
													}
5124
												}
5125
											});
5126
										}
5127
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5128
										if (frm) {
5129

    
5130
											if (target) {
5131
												var f = frm.getForm().findField(target)
5132
													_store = f.getStore();
5133
												var _tbl = _store.proxy.extraParams.tableName;
5134
												var oldParam = _store.proxy.extraParams.param;
5135
												_store.proxy.extraParams = {
5136
													tableName: _tbl,
5137
													param: _label + '[=]' + _Value
5138
												};
5139
												_store.load();
5140
											}
5141
											if (custumFunc) {
5142
												eval(custumFunc)
5143
											}
5144
										}
5145
									},
5146
									blur: function (val) {
5147
										//if(val.value.split('-').length != 2){
5148
										var _label = val.name;
5149
										var _form = val.formname;
5150
										var _Value = val.getValue();
5151
										var target = rec.TriggerCombo;
5152
										var custumFunc = rec.SelectFunction;
5153
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5154
											Ext.Ajax.request({
5155
												async: false,
5156
												method: 'POST',
5157
												url: '/UserControl/GetStore',
5158
												params: {
5159
													tableName: 'PCMFUNC',
5160
													param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5161
												},
5162
												success: function (response) {
5163
													var results = Ext.decode(response.responseText);
5164
													data_ = results.data[0];
5165
													if (data_ != undefined) {
5166
														custumFunc = data_.FunctionCode;
5167
													}
5168
												}
5169
											});
5170
										}
5171
										var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5172
										if (frm) {
5173

    
5174
											if (target) {
5175
												var f = frm.getForm().findField(target)
5176
													_store = f.getStore();
5177
												var _tbl = _store.proxy.extraParams.tableName;
5178
												var oldParam = _store.proxy.extraParams.param;
5179
												_store.proxy.extraParams = {
5180
													tableName: _tbl,
5181
													param: _label + '[=]' + _Value
5182
												};
5183
												_store.load();
5184
											}
5185
											if (custumFunc) {
5186
												eval(custumFunc)
5187
											}
5188
										}
5189
										//}
5190
									}
5191

    
5192
								}
5193
							});
5194
					}
5195
					else if (rec.SearchType == '4' && isLookup != true) {
5196
							var triger = (rec.TriggerCombo).split('$');
5197
							var targetField_ = triger[0];
5198
                            formfield = new MinovaUtil.MinovaES.MinovaLookupEmployee({
5199
                                allowBlank: allowblank,
5200
                                fieldLabel: rec.ScreenCaption,
5201
                                readOnly: readonly,
5202
                                readOnlyCls: 'minova-readonly',
5203
                                hidden: ishidden,
5204
                                labelCls: 'label-minova',
5205
                                name: rec.FieldName,
5206
                                msgTarget: 'side',
5207
                                IsPrimaryKey: rec.IsPrimaryKey,
5208
                                tableName: rec.TableRef, //name tabel yang jadi ref-nya
5209
                                triggerCls: 'x-form-search-trigger',
5210
                                //vtype: 'alphanum', // disable space
5211
                                vtype: 'validateMinovaXss',
5212
                                formtarget: me.formname, // nama form  yang akan di set value-nya
5213
                                anchor: '100%',
5214
                                formname: formname_,
5215
								targetField: targetField_,
5216
                                nameTable: nameTable_,
5217
                                LookupFunction: rec.LookupFunction,
5218
                                listeners: {
5219

    
5220
                                    change: function (val) {
5221
                                        var _label = val.name;
5222
                                        var _form = val.formname;
5223
                                        var _Value = val.getValue();
5224
                                        var target = rec.TriggerCombo;
5225
                                        var custumFunc = rec.SelectFunction;
5226
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5227
                                            Ext.Ajax.request({
5228
                                                async: false,
5229
                                                method: 'POST',
5230
                                                url: '/UserControl/GetStore',
5231
                                                params: {
5232
                                                    tableName: 'PCMFUNC',
5233
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5234
                                                },
5235
                                                success: function (response) {
5236
                                                    var results = Ext.decode(response.responseText);
5237
                                                    data_ = results.data[0];
5238
                                                    if (data_ != undefined) {
5239
                                                        custumFunc = data_.FunctionCode;
5240
                                                    }
5241
                                                }
5242
                                            });
5243
                                        }
5244
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5245
                                        if (frm) {
5246

    
5247
                                            if (target) {
5248
                                                var f = frm.getForm().findField(target)
5249
                                                _store = f.getStore();
5250
                                                var _tbl = _store.proxy.extraParams.tableName;
5251
                                                var oldParam = _store.proxy.extraParams.param;
5252
                                                _store.proxy.extraParams = {
5253
                                                    tableName: _tbl,
5254
                                                    param: _label + '[=]' + _Value
5255
                                                };
5256
                                                _store.load();
5257
                                            }
5258

    
5259
                                            if (custumFunc) {
5260
                                                eval(custumFunc)
5261
                                            }
5262

    
5263
                                        }
5264

    
5265
                                    },
5266

    
5267
                                },
5268
                            });
5269
                        }
5270
				}
5271
				if (isDesk) {
5272
					if (rec.ColumnNo == 1) {
5273
						col1.push(formfield);
5274
					} else {
5275
						col2.push(formfield);
5276
					}
5277
				} else {
5278
					col1.push(formfield);
5279
				}
5280

    
5281
			});
5282
		}
5283
		Ext.applyIf(me, {
5284
			items: [{
5285
					//width: 450,
5286
					style: 'width: 50%',
5287
					items: col1
5288
				}, {
5289
					//width: 450,
5290
					style: 'width: 50%',
5291
					items: col2
5292
				}
5293
			],
5294
		});
5295
		this.callParent();
5296
	}
5297
});
5298
/*Gird ESS Generator*/
5299
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowGrid', {
5300
	extend: 'Ext.grid.Panel',
5301
	requires: ['Ext.grid.RowNumberer'],
5302
	alias: 'widget.minovaworkflowgrid',
5303
	alternateClassName: 'Ext.grid.MinovaGrid',
5304
	tableName: undefined,
5305
	param: undefined,
5306
	pagesize: undefined,
5307
	storeName: undefined,
5308
	enableLocking: true,
5309
	autoLoad: undefined,
5310
	multiSelect: undefined,
5311
	formname: this.name,
5312
	bizprocid: undefined,
5313
	taskid: undefined,
5314
	initComponent: function () {
5315
		var me = this;
5316
		var cols_ = [];
5317
		var fieldeditor = {};
5318
		var hasil = null;
5319
		var autoLoad = true;
5320
		var locking = true;
5321
		var widthLock = 250;
5322
		if (me.autoLoad == false) {
5323
			autoLoad = false;
5324
		}
5325
		var LangID = MinovaUtil.GetLangID();
5326
		var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5327
		Ext.Ajax.request({
5328
			async: false,
5329
			method: 'POST',
5330
			url: '/UserControl/GetStore',
5331
			params: {
5332
				tableName: 'PDSWFSTRUCTUREFIELD',
5333
				param: parameter
5334
			},
5335
			success: function (response) {
5336
				var results = Ext.decode(response.responseText);
5337
				hasil = results.data;
5338
			}
5339
		});
5340

    
5341
		if (hasil.length > 0) {
5342
			Ext.each(hasil, function (rec) {
5343
				var readonly = false;
5344
				var ishidden = false;
5345
				var allowblank = true;
5346
				var null_ = null;
5347
				if (rec.IsReadOnly == '1') {
5348
					readonly = true;
5349
				}
5350
				if (rec.IsRequired == '1') {
5351
					allowblank = false;
5352
				}
5353
				if (rec.IsVisible == '1') {
5354
					switch (rec.FormatRef) {
5355
					case "date":
5356
						cols_.push({
5357
							xtype: 'minovadatecolumn',
5358
							text: rec.HeaderTitle,
5359
							dataIndex: rec.FieldName,
5360
							width: 100
5361
						});
5362
						break
5363
					case "amountencrypt":
5364
						cols_.push({
5365
							xtype: 'minovaamountcolumn',
5366
							align: 'right',
5367
							text: rec.HeaderTitle,
5368
							dataIndex: rec.FieldName,
5369
							width: 100
5370
						});
5371
						break
5372
					case "amount":
5373
						cols_.push({
5374
							xtype: 'minovacurrancycolumn',
5375
							align: 'right',
5376
							text: rec.HeaderTitle,
5377
							dataIndex: rec.FieldName,
5378
							width: 100,
5379
							filter: {
5380
								type: 'number',
5381
								itemDefaults: {
5382
									emptyText: 'Search for...'
5383
								}
5384
							}
5385
						});
5386
						break
5387
					case "datetime":
5388
						cols_.push({
5389
							xtype: 'minovadatetimecolumn',
5390
							text: rec.HeaderTitle,
5391
							dataIndex: rec.FieldName,
5392
							width: 140,
5393
							filter: {
5394
								type: 'string',
5395
								itemDefaults: {
5396
									emptyText: 'Search for...'
5397
								}
5398
							}
5399
						});
5400
						break
5401
					default:
5402
						if (rec.TableRef != "") {
5403
							if (rec.TableRef != null) {
5404
								var valueField = null;
5405
								var displayValue = null;
5406
								Ext.Ajax.request({
5407
									async: false,
5408
									method: 'POST',
5409
									url: '/UserControl/GetStore',
5410
									params: {
5411
										tableName: 'SDATATABLEFIELD',
5412
										param: 'TableName[equal]' + rec.TableRef
5413
									},
5414
									success: function (response) {
5415
										var results = Ext.decode(response.responseText);
5416
										data_ = results.data;
5417

    
5418
										if (data_ != undefined) {
5419
											if (data_.length > 0) {
5420
												valueField_ = $.grep(data_, function (r) {
5421
														return r.ValueField == '1'
5422
													});
5423
												valueField = valueField_[0].FieldName
5424
													displayValue_ = $.grep(data_, function (r) {
5425
														return r.DisplayValue == '1'
5426
													});
5427
												displayValue = displayValue_[0].FieldName
5428
											}
5429
										}
5430
									}
5431
								});
5432
								var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
5433
								var count_ = 0;
5434
								if (store_) {
5435
									count_ = store_.count();
5436
								}
5437
								if (count_ == 0) {
5438
									Ext.create('Ext.data.Store', {
5439
										storeId: 'store_' + rec.FieldName,
5440
										autoLoad: false,
5441
										proxy: {
5442
											method: 'POST',
5443
											type: 'ajax',
5444
											url: '/UserControl/GetStore',
5445
											extraParams: {
5446
												tableName: rec.TableRef,
5447
												param: rec.ParamCombo
5448
											},
5449
											reader: {
5450
												type: 'json',
5451
												root: 'data',
5452
												totalProperty: 'data[0].TotalCount'
5453
											}
5454
										}
5455
									})
5456
								}
5457
								cols_.push({
5458
									xtype: 'minovacombocolumn',
5459
									text: rec.HeaderTitle,
5460
									dataIndex: rec.FieldName,
5461
									valueField: valueField,
5462
									displayField: displayValue,
5463
									store: 'store_' + rec.FieldName,
5464
									filter: {
5465
										type: 'list',
5466
										itemDefaults: {
5467
											emptyText: 'Search for...'
5468
										}
5469
									}
5470
								});
5471
							}
5472
						} else {
5473
							cols_.push({
5474
								text: rec.HeaderTitle,
5475
								dataIndex: rec.FieldName,
5476
								filter: {
5477
									itemDefaults: {
5478
										emptyText: 'Search for...'
5479
									}
5480
								}
5481
							});
5482
						}
5483
						break
5484
					}
5485
				} else {
5486
					cols_.push({
5487
						text: rec.HeaderTitle,
5488
						dataIndex: rec.FieldName,
5489
						hidden: true,
5490
						filter: {
5491
							itemDefaults: {
5492
								emptyText: 'Search for...'
5493
							}
5494
						}
5495
					});
5496
				}
5497
			});
5498
		};
5499
		var param_ = me.param;
5500
		if (param_ == undefined) {
5501
			param_ = ''
5502
		}
5503
		var jsStoreGrid = new Ext.data.Store({
5504
				storeId: me.storeName,
5505
				autoLoad: autoLoad,
5506
				pageSize: 10,
5507
				proxy: {
5508
					method: 'POST',
5509
					type: 'ajax',
5510
					url: '/UserControl/GetStorePagingAuth',
5511
					extraParams: {
5512
						tableName: me.tableName,
5513
						param: param_,
5514
						menuId: MinovaUtil.GetMenuID()
5515
					},
5516
					reader: {
5517
						type: 'json',
5518
						root: 'data',
5519
						totalProperty: 'totalRecords'
5520
					}
5521
				}
5522
			});
5523
		Ext.applyIf(me, {
5524
			autoScroll: true,
5525
			enableLocking: locking,
5526
			lockedGridConfig: {
5527
				header: false,
5528
				collapsible: true,
5529
				width: widthLock,
5530
				forceFit: locking,
5531
				listeners: {
5532
					render: function (grid) {
5533
						var pagingToolbar = grid.child('pagingtoolbar');
5534
						if (pagingToolbar) {
5535
							grid.remove(pagingToolbar, true);
5536
						}
5537
					}
5538
				}
5539
			},
5540
			listeners: {
5541
				viewready: function () {
5542
					if (autoLoad == true) {
5543
						this.getStore().loadPage(1);
5544
					}
5545

    
5546
				},
5547
				beforeedit: function () {
5548
					return false;
5549
				}
5550
			},
5551
			lockedViewConfig: {
5552
				scroll: 'horizontal'
5553
			},
5554
			viewConfig: {
5555
				emptyText: 'No Data Display',
5556
				deferEmptyText: false,
5557
				listeners: {
5558
					refresh: function (dataview) {
5559
						Ext.each(dataview.panel.columns, function (column) {
5560
							if (column.autoSizeColumn == false)
5561
								column.autoSizeColumn = true;
5562
							column.autoSize();
5563
						})
5564
					}
5565
				}
5566
			},
5567
			columns: cols_,
5568
			store: jsStoreGrid,
5569
			plugins: [{
5570
					ptype: 'gridfilters'
5571
				}
5572
			]
5573
		});
5574
		this.callParent();
5575
	}
5576
});
5577
/*EditableGrid ESS Generator*/
5578
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid', {
5579
	extend: 'Ext.form.Panel',
5580
	alias: ['widget.minovaworkfloweditablegrid', 'widget.workfloweditablegrid1'],
5581
	requires: [
5582
		'Ext.grid.plugin.CellEditing',
5583
		'Ext.grid.RowNumberer',
5584
		'Ext.grid.Panel',
5585
	],
5586
	anchor: '100%',
5587
	tableName: undefined,
5588
	hideButton: undefined,
5589
	multiSelect: undefined,
5590
	formname: this.name,
5591
	bizprocid: undefined,
5592
	bizflowid: undefined,
5593
	taskid: undefined,
5594
	initComponent: function () {
5595
		var me = this;
5596
		var isLookup = me.isLookup;
5597
		var hide_ = false;
5598
		var hideUploadDownload = false;
5599
		var widthLock = 250;
5600
		var checkSelection = '';
5601
		if (me.hideButton == true) {
5602
			hide_ = true;
5603
		}
5604
		if (me.multiSelect) {
5605
			locking = false;
5606
			checkSelection = 'checkboxmodel';
5607
			widthLock = 40;
5608
		}
5609
		var tableName = me.tableName;
5610
		
5611
		
5612
		if(tableName != 'WFKAS0002'){
5613
		hideUploadDownload = true;}
5614
		var cols = [];
5615
		var fieldStore = [];
5616
		var _url = 'GetAllField';
5617
		var hasil = null;
5618
		var height = me.height;
5619
		var storeID = 'store' + me.tableName;
5620
		var gridName = 'grid' + me.name;
5621
		if (me.storeName) {
5622
			storeID = me.storeName;
5623
		}
5624
		var LangID = MinovaUtil.GetLangID();
5625
		var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5626
		Ext.Ajax.request({
5627
			async: false,
5628
			method: 'POST',
5629
			url: '/UserControl/GetStore',
5630
			params: {
5631
				tableName: 'PDSWFSTRUCTUREFIELD',
5632
				param: parameter
5633
			},
5634
			success: function (response) {
5635
				var results = Ext.decode(response.responseText);
5636
				hasil = results.data;
5637
			}
5638
		});
5639
		cols.push({
5640
			xtype: 'rownumberer'
5641
		});
5642
		var addData = 'var data={';
5643
		if (hasil.length > 0) {
5644
			Ext.each(hasil, function (rec) {
5645
				fieldStore.push(rec.FieldName);
5646
				if (rec.FieldName != 'Sequence') {
5647
					addData = addData + rec.FieldName + ":" + "'',";
5648
				}
5649
				var null_ = null;
5650
				var ReadOnly_ = false;
5651
				if (rec.IsRequired == '1') {
5652
					null_ = false;
5653
				} else {
5654
					null_ = true;
5655
				}
5656
				var Hidden_ = false;
5657
				if (rec.IsReadOnly == '1') {
5658
					ReadOnly_ = true;
5659
				}
5660
				if (rec.IsVisible == '1') {
5661
					switch (rec.FormatRef) {
5662
					case "date":
5663
						cols.push({
5664
							xtype: 'minovadatecolumn',
5665
							hidden: Hidden_,
5666
							text: rec.HeaderTitle,
5667
							dataIndex: rec.FieldName,
5668
							filter: {
5669
								itemDefaults: {
5670
									emptyText: 'Search for...',
5671
								}
5672
							},
5673
							editor: {
5674
								allowBlank: null_,
5675
								xtype: 'datefield',
5676
								hideMode: 'visibility',
5677
								readOnly: ReadOnly_,
5678
								id: tableName + rec.FieldName,
5679
								fieldGrid: rec.FieldName,
5680
								nameTable: rec.TableName,
5681
								value: rec.DefaultValue
5682
							}
5683
						});
5684
						break
5685
					case "amount":
5686
						cols.push({
5687
							xtype: 'minovacurrancycolumn',
5688
							align: 'right',
5689
							text: rec.HeaderTitle,
5690
							dataIndex: rec.FieldName,
5691
							hidden: Hidden_,
5692
							filter: {
5693
								itemDefaults: {
5694
									emptyText: 'Search for...'
5695
								}
5696
							},
5697
							editor: {
5698
								allowBlank: null_,
5699
								xtype: 'minovacurrencyfield',
5700
								readOnly: ReadOnly_,
5701
								id: tableName + rec.FieldName,
5702
								nameTable: rec.TableName,
5703
								fieldGrid: rec.FieldName,
5704
								fieldStyle: 'text-align:right;',
5705
								value: '0'
5706
							}
5707
						});
5708
						break
5709
					default:
5710
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
5711
							cols.push({
5712
								text: rec.HeaderTitle,
5713
								dataIndex: rec.FieldName,
5714
								width: 100,
5715
								filter: {
5716
									type: 'string',
5717
									itemDefaults: {
5718
										emptyText: 'Search for...'
5719
									}
5720
								}
5721
							});
5722
						} else if (rec.SearchType == '0') {
5723
							var valueField = null;
5724
							var displayValue = null;
5725
							var TableRef = undefined;
5726
							if (rec.TableRef != '') {
5727
								TableRef = rec.TableRef;
5728
								Ext.Ajax.request({
5729
									async: false,
5730
									method: 'POST',
5731
									url: '/UserControl/GetStore',
5732
									params: {
5733
										tableName: 'SDATATABLEFIELD',
5734
										param: 'TableName[equal]' + rec.TableRef
5735
									},
5736
									success: function (response) {
5737
										var results = Ext.decode(response.responseText);
5738
										data_ = results.data;
5739
										if (data_ != undefined) {
5740
											valueField_ = $.grep(data_, function (r) {
5741
													return r.ValueField == '1'
5742
												});
5743
											valueField = valueField_[0].FieldName
5744
												displayValue_ = $.grep(data_, function (r) {
5745
													return r.DisplayValue == '1'
5746
												});
5747
											displayValue = displayValue_[0].FieldName
5748
										}
5749
									}
5750
								});
5751
							}
5752
							Ext.create('Ext.data.Store', {
5753
								storeId: 'store_' + me.tableName + rec.FieldName,
5754
								autoLoad: true,
5755
								proxy: {
5756
									method: 'POST',
5757
									type: 'ajax',
5758
									url: '/UserControl/GetStoreAuth',
5759
									extraParams: {
5760
										tableName: TableRef,
5761
										param: rec.ParamCombo,
5762
										menuId: MinovaUtil.GetMenuID()
5763
									},
5764
									reader: {
5765
										type: 'json',
5766
										root: 'data',
5767
										totalProperty: 'data[0].TotalCount'
5768
									}
5769
								}
5770
							});
5771
							cols.push({
5772
								//xtype : 'minovacombocolumn',
5773
								hidden: Hidden_,
5774
								text: rec.HeaderTitle,
5775
								dataIndex: rec.FieldName,
5776
								//valueField : valueField,
5777
								//displayField : displayValue,
5778
								//store : 'store_' + me.tableName + rec.FieldName,
5779
								editor: {
5780
									allowBlank: null_,
5781
									xtype: 'combobox',
5782
									readOnly: ReadOnly_,
5783
									id: rec.TableName + rec.FieldName,
5784
									nameTable: rec.TableName,
5785
									fieldGrid: rec.FieldName,
5786
									valueField: valueField,
5787
									displayField: displayValue,
5788
									store: 'store_' + me.tableName + rec.FieldName,
5789
									value: rec.DefaultValue
5790
								},
5791
								renderer: function (value) {
5792
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
5793
									var index = store.find(valueField, value);
5794
									var val = "";
5795
									if (index != -1) {
5796
										var rc = store.getAt(index);
5797
										val = rc.get(displayValue);
5798
									} else {
5799
										val = value;
5800
									}
5801
									return val;
5802
								},
5803
								filter: {
5804
									type: 'list',
5805
									itemDefaults: {
5806
										emptyText: 'Search for...'
5807
									}
5808
								}
5809
							});
5810
						} else if (rec.SearchType == '5') {
5811
							var valueField = null;
5812
							var displayValue = null;
5813
							var AdditionaldisplayValue = null;
5814
							var TableRef = undefined;
5815
							if (rec.TableRef != '') {
5816
								TableRef = rec.TableRef;
5817
								Ext.Ajax.request({
5818
									async: false,
5819
									method: 'POST',
5820
									url: '/UserControl/GetStore',
5821
									params: {
5822
										tableName: 'SDATATABLEFIELD',
5823
										param: 'TableName[equal]' + rec.TableRef
5824
									},
5825
									success: function (response) {
5826
										var results = Ext.decode(response.responseText);
5827
										data_ = results.data;
5828
										if (data_ != undefined) {
5829
											valueField_ = $.grep(data_, function (r) {
5830
													return r.ValueField == '1'
5831
												});
5832
											if (valueField_.length > 0) {
5833
												valueField = valueField_[0].FieldName
5834
											}
5835

    
5836
											displayValue_ = $.grep(data_, function (r) {
5837
													return r.DisplayValue == '1' || r.DisplayValue == '2'
5838
												});
5839
											if (displayValue_.length > 0) {
5840
												displayValue = displayValue_[0].FieldName;
5841
											}
5842
											if (displayValue_.length >= 2) {
5843
												AdditionaldisplayValue = displayValue_[1].FieldName
5844
											}
5845
										}
5846
									}
5847
								});
5848
							}
5849
							Ext.create('Ext.data.Store', {
5850
								storeId: 'store_' + me.tableName + rec.FieldName,
5851
								autoLoad: true,
5852
								proxy: {
5853
									method: 'POST',
5854
									type: 'ajax',
5855
									url: '/UserControl/GetStoreAuth',
5856
									extraParams: {
5857
										tableName: TableRef,
5858
										param: rec.ParamCombo,
5859
										menuId: MinovaUtil.GetMenuID()
5860
									},
5861
									reader: {
5862
										type: 'json',
5863
										root: 'data',
5864
										totalProperty: 'data[0].TotalCount'
5865
									}
5866
								}
5867
							});
5868
							cols.push({
5869
								//xtype : 'minovacombocolumn',
5870
								hidden: Hidden_,
5871
								text: rec.HeaderTitle,
5872
								dataIndex: rec.FieldName,
5873
								//valueField : valueField,
5874
								//displayField : displayValue,
5875
								//store : 'store_' + me.tableName + rec.FieldName,
5876
								tpl: Ext.create('Ext.XTemplate',
5877
									'<ul class="x-list-plain"><tpl for=".">',
5878
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
5879
									'</tpl></ul>'),
5880
								displayTpl: Ext.create('Ext.XTemplate',
5881
									'<tpl for=".">',
5882
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
5883
									'</tpl>'),
5884
								editor: {
5885
									allowBlank: null_,
5886
									xtype: 'combobox',
5887
									readOnly: ReadOnly_,
5888
									id: rec.TableName + rec.FieldName,
5889
									nameTable: rec.TableName,
5890
									fieldGrid: rec.FieldName,
5891
									valueField: valueField,
5892
									displayField: displayValue,
5893
									store: 'store_' + me.tableName + rec.FieldName,
5894
									value: rec.DefaultValue,
5895
									tpl: Ext.create('Ext.XTemplate',
5896
										'<ul class="x-list-plain"><tpl for=".">',
5897
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
5898
										'</tpl></ul>'),
5899
									displayTpl: Ext.create('Ext.XTemplate',
5900
										'<tpl for=".">',
5901
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
5902
										'</tpl>')
5903
								},
5904
								renderer: function (value) {
5905
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
5906
									var index = store.find(valueField, value);
5907
									var val = "";
5908
									if (index != -1) {
5909
										var rc = store.getAt(index);
5910
										//val = rc.get(displayValue);
5911
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
5912
									} else {
5913
										val = value;
5914
									}
5915
									return val;
5916
								},
5917
								filter: {
5918
									type: 'list',
5919
									itemDefaults: {
5920
										emptyText: 'Search for...'
5921
									}
5922
								}
5923
							});
5924
						} else if (rec.SearchType == '2') {
5925
							var triger = (rec.TriggerCombo).split('$');
5926
							var targetField_ = triger[0];
5927
							var fieldValue_ = triger[1];
5928
							cols.push({
5929
								text: rec.HeaderTitle,
5930
								hidden: Hidden_,
5931
								dataIndex: rec.FieldName,
5932
								filter: {
5933
									itemDefaults: {
5934
										emptyText: 'Search for...'
5935
									}
5936
								},
5937
								editor: {
5938
									allowBlank: null_,
5939
									xtype: 'minovalookupgrid',
5940
									readOnly: ReadOnly_,
5941
									isGrid: true,
5942
									fieldTarget: targetField_,
5943
									fieldValue: fieldValue_,
5944
									isGrid: true,
5945
									id: tableName + rec.FieldName,
5946
									tableName: rec.TableRef,
5947
									triggerCls: 'x-form-search-trigger',
5948
									vtype: 'alphanum',
5949
									nameTable: rec.TableName,
5950
									fieldGrid: rec.FieldName,
5951
									listeners: {
5952
										change: function (val) {
5953
											var custumFunc = rec.SelectFunction;
5954
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5955
												Ext.Ajax.request({
5956
													async: false,
5957
													method: 'POST',
5958
													url: '/UserControl/GetStore',
5959
													params: {
5960
														tableName: 'PCMFUNC',
5961
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5962
													},
5963
													success: function (response) {
5964
														var results = Ext.decode(response.responseText);
5965
														data_ = results.data[0];
5966
														if (data_ != undefined) {
5967
															custumFunc = data_.FunctionCode;
5968
														}
5969
													}
5970
												});
5971
											}
5972
											if (custumFunc) {
5973
												eval(custumFunc)
5974
											}
5975
										}
5976
									}
5977
								}
5978
							});
5979
						} else if (rec.SearchType == '3') {
5980
							cols.push({
5981
								text: rec.HeaderTitle,
5982
								hidden: Hidden_,
5983
								dataIndex: rec.FieldName,
5984
								filter: {
5985
									itemDefaults: {
5986
										emptyText: 'Search for...'
5987
									}
5988
								},
5989
								editor: {
5990
									allowBlank: null_,
5991
									xtype: 'MinovaLookupTree',
5992
									readOnly: ReadOnly_,
5993
									id: tableName + rec.FieldName,
5994
									tableName: rec.TableRef,
5995
									triggerCls: 'x-form-search-trigger',
5996
									vtype: 'alphanum',
5997
									treeSructure: rec.SearchFunction,
5998
									objClassValue: rec.ParamCombo,
5999
									nameTable: rec.TableName,
6000
									fieldGrid: rec.FieldName,
6001
									listeners: {
6002
										change: function (val) {
6003
											var custumFunc = rec.SelectFunction;
6004
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6005
												Ext.Ajax.request({
6006
													async: false,
6007
													method: 'POST',
6008
													url: '/UserControl/GetStore',
6009
													params: {
6010
														tableName: 'PCMFUNC',
6011
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6012
													},
6013
													success: function (response) {
6014
														var results = Ext.decode(response.responseText);
6015
														data_ = results.data[0];
6016
														if (data_ != undefined) {
6017
															custumFunc = data_.FunctionCode;
6018
														}
6019
													}
6020
												});
6021
											}
6022
											if (custumFunc) {
6023
												eval(custumFunc)
6024
											}
6025
										}
6026
									}
6027
								}
6028
							});
6029
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
6030
							var triger = (rec.TriggerCombo).split('&');
6031
							var targetField_ = triger[0];
6032
							var fieldValue_ = triger[0];
6033
							cols.push({
6034
								text: rec.HeaderTitle,
6035
								hidden: Hidden_,
6036
								dataIndex: rec.FieldName,
6037
								filter: {
6038
									itemDefaults: {
6039
										emptyText: 'Search for...'
6040
									}
6041
								},
6042
								editor: {
6043
									allowBlank: null_,
6044
									xtype: 'lookupemployee',
6045
									readOnly: ReadOnly_,
6046
									isGrid: true,
6047
									fieldTarget: targetField_,
6048
									fieldValue: fieldValue_,
6049
									isGrid: true,
6050
									id: tableName + rec.FieldName,
6051
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
6052
									triggerCls: 'x-form-search-trigger',
6053
									vtype: 'alphanum', // disable space
6054
									nameTable: rec.TableName,
6055
									fieldGrid: rec.FieldName,
6056
									listeners: {
6057
										change: function (val) {
6058
											var custumFunc = rec.SelectFunction;
6059
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6060
												Ext.Ajax.request({
6061
													async: false,
6062
													method: 'POST',
6063
													url: '/UserControl/GetStore',
6064
													params: {
6065
														tableName: 'PCMFUNC',
6066
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6067
													},
6068
													success: function (response) {
6069
														var results = Ext.decode(response.responseText);
6070
														data_ = results.data[0];
6071
														if (data_ != undefined) {
6072
															custumFunc = data_.FunctionCode;
6073
														}
6074
													}
6075
												});
6076
											}
6077
											if (custumFunc) {
6078
												eval(custumFunc)
6079
											}
6080
										}
6081
									}
6082
								}
6083
							});
6084
						} else if (rec.SearchType == '4' && isLookup != true) {
6085
							cols.push({
6086
								text: rec.HeaderTitle,
6087
								hidden: Hidden_,
6088
								dataIndex: rec.FieldName,
6089
								filter: {
6090
									itemDefaults: {
6091
										emptyText: 'Search for...'
6092
									}
6093
								},
6094
								editor: {
6095
									allowBlank: null_,
6096
									xtype: 'lookupemployee',
6097
									readOnly: ReadOnly_,
6098
									isGrid: true,
6099
									fieldTarget: targetField_,
6100
									fieldValue: fieldValue_,
6101
									isGrid: true,
6102
									id: tableName + rec.FieldName,
6103
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
6104
									triggerCls: 'x-form-search-trigger',
6105
									vtype: 'alphanum', // disable space
6106
									nameTable: rec.TableName,
6107
									fieldGrid: rec.FieldName,
6108
									listeners: {
6109
										change: function (val) {
6110
											var custumFunc = rec.SelectFunction;
6111
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6112
												Ext.Ajax.request({
6113
													async: false,
6114
													method: 'POST',
6115
													url: '/UserControl/GetStore',
6116
													params: {
6117
														tableName: 'PCMFUNC',
6118
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6119
													},
6120
													success: function (response) {
6121
														var results = Ext.decode(response.responseText);
6122
														data_ = results.data[0];
6123
														if (data_ != undefined) {
6124
															custumFunc = data_.FunctionCode;
6125
														}
6126
													}
6127
												});
6128
											}
6129
											if (custumFunc) {
6130
												eval(custumFunc)
6131
											}
6132
										}
6133
									}
6134
								}
6135
							});
6136
						} else if (rec.FixedValue != '') { // add by taufan
6137
							cols.push({
6138
								text: rec.HeaderTitle,
6139
								hidden: Hidden_,
6140
								dataIndex: rec.FieldName,
6141
								filter: {
6142
									itemDefaults: {
6143
										emptyText: 'Search for...'
6144
									}
6145
								},
6146
								editor: {
6147
									allowBlank: null_,
6148
									xtype: 'minovafixvalue',
6149
									readOnly: ReadOnly_,
6150
									id: rec.TableName + rec.FieldName,
6151
									name: rec.TableName + rec.FieldName,
6152
									nameTable: rec.TableName,
6153
									fieldGrid: rec.FieldName,
6154
									fixedValue: rec.FixedValue,
6155
									valueField: 'code',
6156
									displayField: 'desc',
6157
									value: rec.DefaultValue
6158
								},
6159
								renderer: function (value) {
6160
									var val = "";
6161
									var storeData = [];
6162
									var str = rec.FixedValue;
6163
									var hasil = str.split('||');
6164
									hasil.forEach(function (h) {
6165
										store_ = h.split('=')
6166
											storeData.push({
6167
												code: store_[0],
6168
												desc: store_[1]
6169
											});
6170
									});
6171
									var item = storeData.find(x => x.code == value);
6172
									if (item != undefined) {
6173
										val = item.desc;
6174
									}
6175
									return val;
6176
								}
6177
							});
6178
						} else {
6179
							cols.push({
6180
								text: rec.HeaderTitle,
6181
								hidden: Hidden_,
6182
								dataIndex: rec.FieldName,
6183
								filter: {
6184
									itemDefaults: {
6185
										emptyText: 'Search for...'
6186
									}
6187
								},
6188
								editor: {
6189
									allowBlank: null_,
6190
									xtype: 'textfield',
6191
									readOnly: ReadOnly_,
6192
									id: tableName + rec.FieldName,
6193
									nameTable: rec.TableName,
6194
									fieldGrid: rec.FieldName,
6195
									value: rec.DefaultValue,
6196
									listeners: {
6197
										change: function (val) {
6198
											var custumFunc = null;
6199
											Ext.Ajax.request({
6200
												async: false,
6201
												method: 'POST',
6202
												url: '/UserControl/GetStore',
6203
												params: {
6204
													tableName: 'SDATATABLEFIELD',
6205
													param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
6206
												},
6207
												success: function (response) {
6208
													var results = Ext.decode(response.responseText);
6209
													data_ = results.data[0];
6210
													if (data_ != undefined) {
6211
														custumFunc = data_.SelectFunction;
6212
														//console.log(data_)
6213
													}
6214
												}
6215
											});
6216

    
6217
											if (custumFunc) {
6218
												eval(custumFunc)
6219
											}
6220
										}
6221
									}
6222
								}
6223
							});
6224
						}
6225
						break
6226
					}
6227
				} else {
6228
					cols.push({
6229
						text: rec.HeaderTitle,
6230
						hidden: Hidden_,
6231
						dataIndex: rec.FieldName,
6232
						hidden: true,
6233
						editor: {
6234
							allowBlank: true,
6235
							xtype: 'textfield',
6236
							readOnly: ReadOnly_,
6237
							id: tableName + rec.FieldName,
6238
							nameTable: rec.TableName,
6239
							fieldGrid: rec.FieldName,
6240
							value: rec.DefaultValue
6241
						},
6242
						filter: {
6243
							itemDefaults: {
6244
								emptyText: 'Search for...'
6245
							}
6246
						}
6247
					});
6248
				}
6249
			});
6250

    
6251
		};
6252
		addData = addData + "}";
6253
		Ext.applyIf(me, {
6254
			items: [{
6255
					xtype: 'grid',
6256
					id: gridName,
6257
					name: gridName,
6258
					height: height,
6259
					addFlag: true,
6260
					deleteFlag: true,
6261
					store: Ext.create('Ext.data.Store', {
6262
						storeId: storeID,
6263
						fields: fieldStore,
6264
						proxy: {
6265
							method: 'POST',
6266
							type: 'ajax',
6267
							url: '',
6268
							reader: {
6269
								type: 'json',
6270
								root: 'data'
6271
							}
6272
						}
6273
					}),
6274
					dockedItems: [{
6275
							xtype: 'toolbar',
6276
							items: [{
6277
									text: 'Add',
6278
									hidden: hide_,
6279
									name: tableName + 'Add',
6280
									iconCls: 'fa-plus-circle',
6281
									style: 'font-family: FontAwesome',
6282
									handler: function () {
6283
										var grid = Ext.getCmp(gridName);
6284
										if (grid.addFlag === true) {
6285
											var store = Ext.StoreMgr.lookup(storeID)
6286
												idx = store.getCount();
6287
											var action = getParam('action');
6288
											var data = '';
6289
											var Sequence = 0;
6290
											if (idx == 0) {
6291
												Sequence = 1;
6292
											} else {
6293
												Sequence = 1 + idx;
6294
											}
6295
											var seq = 'Sequence';
6296
											var SequenceValue = Sequence;
6297
											eval(addData);
6298
											data[seq] = SequenceValue;
6299
											store.insert(idx, data);
6300
										}
6301
									}
6302
								}, {
6303
									text: 'Delete',
6304
									hidden: hide_,
6305
									name: tableName + 'DeleteText',
6306
									iconCls: 'fa-trash-o',
6307
									style: 'font-family: FontAwesome',
6308
									handler: function () {
6309
										var grid = Ext.getCmp(gridName);
6310
										if (grid.deleteFlag === true) {
6311
											var me = this,
6312
											store = Ext.StoreMgr.lookup(storeID)
6313
												var grid = Ext.getCmp(gridName);
6314
											Ext.MessageBox.show({
6315
												title: 'Remove tab',
6316
												msg: "This will remove. Do you want to continue?",
6317
												buttons: Ext.MessageBox.YESNO,
6318
												fn: function (choice) {
6319
													console.log(choice);
6320
													if (choice === 'yes') {
6321
														var selection = grid.getView().getSelectionModel().getSelection()[0];
6322
														if (selection) {
6323
															store.remove(selection);
6324
														}
6325
													}
6326
												}
6327
											});
6328
										}
6329
									}
6330
								},{
6331
									xtype: 'filefield',
6332
									buttonOnly: true,
6333
									buttonConfig: {
6334
										width: 160,
6335
										text: 'Upload',
6336
										ui: 'default-toolbar',
6337
										iconCls: 'icon-arrow-up',
6338
										style: 'font-family: FontAwesome',
6339
										name: 'upload' + tableName,
6340
										hidden: hideUploadDownload,
6341
										html: "<input id='inputFile' type='file' name='uploaded'/>",
6342
									},
6343
									listeners: {
6344
										change: function (f, value) {
6345
											var store = Ext.StoreMgr.lookup('store'+tableName);
6346
											var newValue = '';
6347
											var afterDot = '';
6348
											var files = event.target.files;
6349
											var fileName = files[0].name;
6350
											var fileType = fileName.substr(fileName.indexOf('.'));
6351
											if (!files || files.length == 0) {
6352
												MinovaMessageError("File Error", "FILOFILE", "");
6353
											} else {
6354
												if (fileType == '.xls' || fileType == '.xlsx') {
6355
													var reader = new FileReader();
6356

    
6357
													//For Browsers other than IE.
6358
													if (reader.readAsBinaryString) {
6359
														reader.onload = function (e) {
6360
															var data = e.target.result;
6361
															//Read the Excel File data.
6362
															var workbook = XLSX.read(data, {
6363
																	type: 'binary'
6364
																});
6365
															//Fetch the name of First Sheet.
6366
															var firstSheet = workbook.SheetNames[0];
6367

    
6368
															//Read all rows from First Sheet into an JSON array.
6369
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
6370
															var data = eval(excelRows);
6371
															var dataLength = data.length;
6372
															idx = store.getCount();
6373
															var seq = idx + 1;
6374
															/* var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
6375
															for (var i = 0; i < dataLength; i++) {
6376
																data[i]["DocNo"] = dn;
6377
																data[i]["DocItemID"] = seq;
6378
																if (me.transType == "MTR" || me.transType == "PUR") {
6379
																	data[i].ARAPID = "";
6380
																	data[i].DocItemRef = "";
6381
																}
6382
																if (me.transType == "MTR") {
6383
																	data[i].Storage = "";
6384
																}
6385
																seq = seq + 1;
6386
															}*/
6387

    
6388
															var fields = store.model.getFields();
6389
															var gridFields = []
6390
															for (var i = 0; i < fields.length; i++) {
6391
																gridFields.push(fields[i].name);
6392
															}
6393

    
6394
															var index = [];
6395
															// build the index
6396
															for (var x in excelRows[0]) {
6397
																index.push(x);
6398
															}
6399
															var excelFields = []
6400
															for (var i = 0; i < index.length; i++) {
6401
																excelFields.push(index[i]);
6402
															}
6403

    
6404
															var template = [];
6405
															for (var i = 0; i < excelFields.length; i++) {
6406
																for (var j = 0; j < gridFields.length; j++) {
6407
																	if (excelFields[i] === gridFields[j]) {
6408
																		template.push(excelFields[i]);
6409
																	}
6410
																}
6411
															}
6412
															if (excelFields.length === template.length) {
6413
																store.insert(idx, data);
6414
															} else {
6415
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
6416
															}
6417
														};
6418
														reader.readAsBinaryString(files[0]);
6419

    
6420
													} else {
6421
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
6422
													}
6423
												} else {
6424
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
6425
												}
6426
											}
6427
										}
6428
									}
6429
									},
6430
									 {
6431
									text: 'Download',
6432
									width: 160,
6433
									name: 'download' + tableName,
6434
									iconCls: 'icon-arrow-down',
6435
									hidden: hideUploadDownload,
6436
									style: 'font-family: FontAwesome',
6437
									handler: function (b, e) {
6438
										b.up('grid').downloadExcelXml();
6439
									}
6440
								}
6441
							]
6442
						}
6443
					],
6444
					columns: cols,
6445
					selType: checkSelection,
6446
					plugins: {
6447
						ptype: 'rowediting',
6448
						pluginId: 'rowEditing',
6449
						clicksToEdit: 0,
6450
						listeners: {}
6451
					}
6452
				}
6453
			]
6454
		});
6455
		me.callParent(arguments);
6456
	}
6457
});
6458
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid1', {
6459
	extend: 'Ext.form.Panel',
6460
	alias: ['widget.minovaworkfloweditablegrid1', 'widget.workfloweditablegrid1'],
6461
	requires: [
6462
		'Ext.grid.plugin.CellEditing',
6463
		'Ext.grid.Panel',
6464
	],
6465
	anchor: '100%',
6466
	tableName: undefined,
6467
	hideButton: undefined,
6468
	multiSelect: undefined,
6469
	formname: this.name,
6470
	bizprocid: undefined,
6471
	bizflowid: undefined,
6472
	taskid: undefined,
6473
	initComponent: function () {
6474
		var me = this;
6475
		var hide_ = false;
6476
		var widthLock = 250;
6477
		var checkSelection = '';
6478

    
6479
		if (me.hideButton == true) {
6480
			hide_ = true;
6481
		}
6482
		if (me.multiSelect) {
6483
			locking = false;
6484
			checkSelection = 'checkboxmodel';
6485
			widthLock = 40;
6486
		}
6487
		var tableName = me.tableName;
6488
		var cols = [];
6489
		var fieldStore = [];
6490
		var _url = 'GetAllField';
6491
		var hasil = null;
6492
		var height = me.height;
6493
		var storeID = 'store' + me.tableName;
6494
		var gridName = 'grid' + me.name;
6495
		if (me.storeName) {
6496
			storeID = me.storeName;
6497
		}
6498
		var LangID = MinovaUtil.GetLangID();
6499
		var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
6500
		Ext.Ajax.request({
6501
			async: false,
6502
			method: 'POST',
6503
			url: '/UserControl/GetStore',
6504
			params: {
6505
				tableName: 'PDSWFSTRUCTUREFIELD',
6506
				param: parameter
6507
			},
6508
			success: function (response) {
6509
				var results = Ext.decode(response.responseText);
6510
				hasil = results.data;
6511
			}
6512
		});
6513
		if (hasil.length > 0) {
6514
			Ext.each(hasil, function (rec) {
6515
				fieldStore.push(rec.FieldName)
6516
				var readonly = false;
6517
				var ishidden = false;
6518
				var allowblank = true;
6519
				if (rec.IsReadOnly == '1') {
6520
					readonly = true;
6521
				}
6522
				if (rec.IsRequired == '1') {
6523
					allowblank = false;
6524
				}
6525
				if (rec.IsVisible == '1') {
6526
					switch (rec.FormatRef) {
6527
					case "date":
6528
						cols.push({
6529
							xtype: 'minovadatecolumn',
6530
							text: rec.HeaderTitle,
6531
							dataIndex: rec.FieldName,
6532
							editor: {
6533
								allowBlank: allowblank,
6534
								xtype: 'datefield',
6535
								hideMode: 'visibility',
6536
								readOnly: readonly,
6537
								name: 'grid' + tableName + rec.FieldName,
6538
								id: 'grid' + tableName + rec.FieldName,
6539
								value: rec.DefaultValue,
6540
								formname: me.formname,
6541
								listeners: {
6542
									change: function (val) {
6543
										var _label = val.name;
6544
										var _form = val.formname;
6545
										var _Value = val.getValue();
6546
										var target = rec.TriggerCombo;
6547
										var custumFunc = rec.SelectFunction;
6548
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6549
											Ext.Ajax.request({
6550
												async: false,
6551
												method: 'POST',
6552
												url: '/UserControl/GetStore',
6553
												params: {
6554
													tableName: 'PCMFUNC',
6555
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6556
												},
6557
												success: function (response) {
6558
													var results = Ext.decode(response.responseText);
6559
													data_ = results.data[0];
6560
													if (data_ != undefined) {
6561
														custumFunc = data_.FunctionCode;
6562
													}
6563
												}
6564
											});
6565
										}
6566
										var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6567
										if (frm) {
6568
											if (custumFunc) {
6569
												eval(custumFunc)
6570
											}
6571
										}
6572
									}
6573
								}
6574
							}
6575
						});
6576
						break;
6577
					case "amount":
6578
						cols.push({
6579
							xtype: 'minovacurrancycolumn',
6580
							align: 'right',
6581
							text: rec.HeaderTitle,
6582
							dataIndex: rec.FieldName,
6583
							editor: {
6584
								allowBlank: allowblank,
6585
								xtype: 'textfield',
6586
								readOnly: readonly,
6587
								name: 'grid' + tableName + rec.FieldName,
6588
								id: 'grid' + tableName + rec.FieldName,
6589
								value: rec.DefaultValue
6590
							}
6591
						});
6592
						break;
6593
					case "time":
6594
						cols.push({
6595
							text: rec.HeaderTitle,
6596
							dataIndex: rec.FieldName,
6597
							editor: {
6598
								allowBlank: allowblank,
6599
								xtype: 'timefield',
6600
								readOnly: readonly,
6601
								name: 'grid' + tableName + rec.FieldName,
6602
								id: 'grid' + tableName + rec.FieldName,
6603
								msgTarget: 'side',
6604
								format: 'Hi',
6605
								submitFormat: 'Hi',
6606
								increment: 5,
6607
								value: rec.DefaultValue,
6608
								formname: me.formname,
6609
								listeners: {
6610
									change: function (val) {
6611
										var _label = val.name;
6612
										var _form = val.formname;
6613
										var _Value = val.getValue();
6614
										var target = rec.TriggerCombo;
6615
										var custumFunc = rec.SelectFunction;
6616
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6617
											Ext.Ajax.request({
6618
												async: false,
6619
												method: 'POST',
6620
												url: '/UserControl/GetStore',
6621
												params: {
6622
													tableName: 'PCMFUNC',
6623
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6624
												},
6625
												success: function (response) {
6626
													var results = Ext.decode(response.responseText);
6627
													data_ = results.data[0];
6628
													if (data_ != undefined) {
6629
														custumFunc = data_.FunctionCode;
6630
													}
6631
												}
6632
											});
6633
										}
6634
										var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6635
										if (frm) {
6636
											if (custumFunc) {
6637
												eval(custumFunc)
6638
											}
6639
										}
6640
									}
6641
								}
6642
							}
6643
						});
6644
						break;
6645
					default:
6646
						if (rec.SearchType != "") {
6647
							if (rec.SearchType == "0") {
6648
								var valueField = null;
6649
								var displayValue = null;
6650
								var TableRef = undefined;
6651
								if (rec.TableRef != '') {
6652
									TableRef = rec.TableRef;
6653
									Ext.Ajax.request({
6654
										async: false,
6655
										method: 'POST',
6656
										url: '/UserControl/GetStore',
6657
										params: {
6658
											tableName: 'SDATATABLEFIELD',
6659
											param: 'TableName[equal]' + rec.TableRef
6660
										},
6661
										success: function (response) {
6662
											var results = Ext.decode(response.responseText);
6663
											data_ = results.data;
6664
											if (data_ != undefined) {
6665
												valueField_ = $.grep(data_, function (r) {
6666
														return r.ValueField == '1'
6667
													});
6668
												valueField = valueField_[0].FieldName
6669
													displayValue_ = $.grep(data_, function (r) {
6670
														return r.DisplayValue == '1'
6671
													});
6672
												displayValue = displayValue_[0].FieldName
6673
											}
6674
										}
6675
									});
6676
								}
6677
								//create Store
6678
								Ext.create('Ext.data.Store', {
6679
									storeId: 'store_' + me.tableName + rec.FieldName,
6680
									autoLoad: true,
6681
									proxy: {
6682
										method: 'POST',
6683
										type: 'ajax',
6684
										url: '/UserControl/GetStore',
6685
										extraParams: {
6686
											tableName: TableRef,
6687
											param: rec.ParamCombo
6688
										},
6689
										reader: {
6690
											type: 'json',
6691
											root: 'data',
6692
											totalProperty: 'data[0].TotalCount'
6693
										}
6694
									}
6695
								});
6696
								cols.push({
6697
									xtype: 'minovacombocolumn',
6698
									text: rec.HeaderTitle,
6699
									dataIndex: rec.FieldName,
6700
									valueField: valueField,
6701
									displayField: displayValue,
6702
									store: 'store_' + me.tableName + rec.FieldName,
6703
									editor: {
6704
										allowBlank: allowblank,
6705
										xtype: 'combobox',
6706
										readOnly: readonly,
6707
										name: 'grid' + tableName + rec.FieldName,
6708
										id: 'grid' + tableName + rec.FieldName,
6709
										valueField: valueField,
6710
										displayField: displayValue,
6711
										store: 'store_' + me.tableName + rec.FieldName,
6712
										value: rec.DefaultValue,
6713
										formname: me.formname,
6714
										listeners: {
6715
											change: function (val) {
6716
												var _label = val.name;
6717
												var _form = val.formname;
6718
												var _Value = val.getValue();
6719
												var target = rec.TriggerCombo;
6720
												var custumFunc = rec.SelectFunction;
6721
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6722
													Ext.Ajax.request({
6723
														async: false,
6724
														method: 'POST',
6725
														url: '/UserControl/GetStore',
6726
														params: {
6727
															tableName: 'PCMFUNC',
6728
															param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6729
														},
6730
														success: function (response) {
6731
															var results = Ext.decode(response.responseText);
6732
															data_ = results.data[0];
6733
															if (data_ != undefined) {
6734
																custumFunc = data_.FunctionCode;
6735
															}
6736
														}
6737
													});
6738
												}
6739
												var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6740
												if (frm) {
6741
													if (custumFunc) {
6742
														eval(custumFunc)
6743
													}
6744
												}
6745
											}
6746
										}
6747
									}
6748
								});
6749
							} else if (rec.SearchType == "2") {
6750
								cols.push({
6751
									text: rec.HeaderTitle,
6752
									dataIndex: rec.FieldName,
6753
									editor: {
6754
										xtype: 'minovalookupgrid',
6755
										allowBlank: allowblank,
6756
										readOnly: readonly,
6757
										msgTarget: 'side',
6758
										labelCls: 'label-minova',
6759
										labelWidth: 150,
6760
										name: 'grid' + tableName + rec.FieldName,
6761
										id: 'grid' + tableName + rec.FieldName,
6762
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
6763
										triggerCls: 'x-form-search-trigger',
6764
										vtype: 'alphanum', // disable space
6765
										formtarget: me.formname, // nama form  yang akan di set value-nya
6766
										anchor: '100%',
6767
										formname: me.formname,
6768
										listeners: {
6769
											change: function (val) {
6770
												var _label = val.name;
6771
												var _form = val.formname;
6772
												var _Value = val.getValue();
6773
												var target = rec.TriggerCombo;
6774
												var custumFunc = rec.SelectFunction;
6775
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6776
													Ext.Ajax.request({
6777
														async: false,
6778
														method: 'POST',
6779
														url: '/UserControl/GetStore',
6780
														params: {
6781
															tableName: 'PCMFUNC',
6782
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6783
														},
6784
														success: function (response) {
6785
															var results = Ext.decode(response.responseText);
6786
															data_ = results.data[0];
6787
															if (data_ != undefined) {
6788
																custumFunc = data_.FunctionCode;
6789
															}
6790
														}
6791
													});
6792
												}
6793
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6794
												if (frm) {
6795
													if (target) {
6796
														var f = frm.getForm().findField(target)
6797
															_store = f.getStore();
6798
														var _tbl = _store.proxy.extraParams.tableName;
6799
														var oldParam = _store.proxy.extraParams.param;
6800
														_store.proxy.extraParams = {
6801
															tableName: _tbl,
6802
															param: _label + '[=]' + _Value
6803
														};
6804
														_store.load();
6805
													}
6806
													if (custumFunc) {
6807
														eval(custumFunc)
6808
													}
6809

    
6810
												}
6811

    
6812
											},
6813

    
6814
										}
6815
									}
6816
								});
6817
							} else if (rec.SearchType == "3") {
6818
								cols.push({
6819
									text: rec.HeaderTitle,
6820
									dataIndex: rec.FieldName,
6821
									editor: {
6822
										xtype: 'minovalookuptree',
6823
										allowBlank: allowblank,
6824
										fieldLabel: rec.ScreenCaption,
6825
										readOnly: readonly,
6826
										labelCls: 'label-minova',
6827
										labelWidth: 150,
6828
										name: 'grid' + tableName + rec.FieldName,
6829
										id: 'grid' + tableName + rec.FieldName,
6830
										msgTarget: 'side',
6831
										triggerCls: 'x-form-search-trigger',
6832
										treeSructure: rec.SearchFunction, //'O-O-P',
6833
										objClassValue: rec.ParamCombo, //'O',
6834
										formname: me.formname,
6835
										targetField: rec.FieldName,
6836
										anchor: '100%',
6837
										listeners: {
6838
											change: function (val) {
6839
												var _label = val.name;
6840
												var _form = val.formname;
6841
												var _Value = val.getValue();
6842
												var target = rec.TriggerCombo;
6843
												var custumFunc = rec.SelectFunction;
6844
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6845
													Ext.Ajax.request({
6846
														async: false,
6847
														method: 'POST',
6848
														url: '/UserControl/GetStore',
6849
														params: {
6850
															tableName: 'PCMFUNC',
6851
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6852
														},
6853
														success: function (response) {
6854
															var results = Ext.decode(response.responseText);
6855
															data_ = results.data[0];
6856
															if (data_ != undefined) {
6857
																custumFunc = data_.FunctionCode;
6858
															}
6859
														}
6860
													});
6861
												}
6862
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6863
												if (frm) {
6864

    
6865
													if (target) {
6866
														var f = frm.getForm().findField(target)
6867
															_store = f.getStore();
6868
														var _tbl = _store.proxy.extraParams.tableName;
6869
														var oldParam = _store.proxy.extraParams.param;
6870
														_store.proxy.extraParams = {
6871
															tableName: _tbl,
6872
															param: _label + '[=]' + _Value
6873
														};
6874
														_store.load();
6875
													}
6876
													if (custumFunc) {
6877
														eval(custumFunc)
6878
													}
6879
												}
6880
											}
6881
										}
6882
									}
6883
								});
6884
							} else if (rec.SearchType == "4") {
6885
								cols.push({
6886
									text: rec.HeaderTitle,
6887
									dataIndex: rec.FieldName,
6888
									editor: {
6889
										xtype: 'lookupemployee',
6890
										allowBlank: allowblank,
6891
										fieldLabel: rec.ScreenCaption,
6892
										readOnly: readonly,
6893
										labelCls: 'label-minova',
6894
										name: 'grid' + tableName + rec.FieldName,
6895
										id: 'grid' + tableName + rec.FieldName,
6896
										msgTarget: 'side',
6897
										fieldname: rec.FieldName,
6898
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
6899
										triggerCls: 'x-form-search-trigger',
6900
										vtype: 'alphanum', // disable space
6901
										formtarget: formname, // nama form  yang akan di set value-nya
6902
										isLookup: isLookup,
6903
										anchor: '100%',
6904
										formname: formname,
6905
										listeners: {
6906
											change: function (val) {
6907
												var _label = val.name;
6908
												var _form = val.formname;
6909
												var _Value = val.getValue();
6910
												var target = rec.TriggerCombo;
6911
												var custumFunc = rec.SelectFunction;
6912
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6913
													Ext.Ajax.request({
6914
														async: false,
6915
														method: 'POST',
6916
														url: '/UserControl/GetStore',
6917
														params: {
6918
															tableName: 'PCMFUNC',
6919
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6920
														},
6921
														success: function (response) {
6922
															var results = Ext.decode(response.responseText);
6923
															data_ = results.data[0];
6924
															if (data_ != undefined) {
6925
																custumFunc = data_.FunctionCode;
6926
															}
6927
														}
6928
													});
6929
												}
6930
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6931
												if (frm) {
6932

    
6933
													if (target) {
6934
														var f = frm.getForm().findField(target)
6935
															_store = f.getStore();
6936
														var _tbl = _store.proxy.extraParams.tableName;
6937
														var oldParam = _store.proxy.extraParams.param;
6938
														_store.proxy.extraParams = {
6939
															tableName: _tbl,
6940
															param: _label + '[=]' + _Value
6941
														};
6942
														_store.load();
6943
													}
6944
													if (custumFunc) {
6945
														eval(custumFunc)
6946
													}
6947

    
6948
												}
6949

    
6950
											},
6951

    
6952
										},
6953
									}
6954
								});
6955
							}
6956
						} else {
6957
							if (rec.FixedValue != "") {
6958
								var storeData = [];
6959
								var str = rec.FixedValue;
6960
								var hasil = str.split('||');
6961
								hasil.forEach(function (h) {
6962
									store_ = h.split('=')
6963
										storeData.push({
6964
											code: store_[0],
6965
											desc: store_[1],
6966
										});
6967
								});
6968
								cols.push({
6969
									xtype: 'minovacombocolumn',
6970
									text: rec.HeaderTitle,
6971
									dataIndex: rec.FieldName,
6972
									valueField: valueField,
6973
									displayField: displayValue,
6974
									store: Ext.create('Ext.data.Store', {
6975
										storeId: 'store' + rec.FieldName,
6976
										autoLoad: true,
6977
										data: storeData
6978

    
6979
									}),
6980
									editor: {
6981
										xtype: 'combobox',
6982
										allowBlank: allowblank,
6983
										forceSelection: true,
6984
										readOnly: readonly,
6985
										labelCls: 'label-minova',
6986
										labelWidth: 150,
6987
										name: 'grid' + tableName + rec.FieldName,
6988
										id: 'grid' + tableName + rec.FieldName,
6989
										msgTarget: 'side',
6990
										value: rec.DefaultValue,
6991
										anchor: '100%',
6992
										formname: me.formname,
6993
										formtarget: me.formname,
6994
										store: Ext.create('Ext.data.Store', {
6995
											storeId: 'store' + rec.FieldName,
6996
											autoLoad: true,
6997
											data: storeData
6998

    
6999
										}),
7000
										listeners: {
7001
											change: function (val) {
7002
												var _label = val.name;
7003
												var _form = val.formtarget;
7004
												var _Value = val.getValue();
7005
												var target = rec.TriggerCombo;
7006
												var custumFunc = rec.SelectFunction;
7007
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
7008
												if (frm) {
7009
													if (target) {
7010
														var f = frm.getForm().findField(target)
7011
															_store = f.getStore();
7012
														var _tbl = _store.proxy.extraParams.tableName;
7013
														var oldParam = _store.proxy.extraParams.param;
7014
														_store.proxy.extraParams = {
7015
															tableName: _tbl,
7016
															param: _label + '[=]' + _Value
7017
														};
7018
														_store.load();
7019
													}
7020
													if (custumFunc) {
7021
														eval(custumFunc)
7022
													}
7023
												}
7024
											}
7025
										},
7026
										queryMode: 'local',
7027
										valueField: 'code',
7028
										displayField: 'desc',
7029
									}
7030
								})
7031
							} else {
7032
								cols.push({
7033
									text: rec.HeaderTitle,
7034
									dataIndex: rec.FieldName,
7035
									editor: {
7036
										allowBlank: allowblank,
7037
										xtype: 'textfield',
7038
										readOnly: readonly,
7039
										name: 'grid' + tableName + rec.FieldName,
7040
										id: 'grid' + tableName + rec.FieldName,
7041
										value: rec.DefaultValue
7042
									}
7043
								});
7044
							}
7045
						}
7046
						break;
7047
					}
7048
				} else {
7049
					cols.push({
7050
						text: rec.HeaderTitle,
7051
						dataIndex: rec.FieldName,
7052
						hidden: true,
7053
						editor: {
7054
							allowBlank: true,
7055
							xtype: 'textfield',
7056
							readOnly: false,
7057
							name: 'grid' + tableName + rec.FieldName,
7058
							id: 'grid' + tableName + rec.FieldName,
7059
						}
7060
					});
7061
				}
7062
			});
7063
		};
7064

    
7065
		this.editing = Ext.create('Ext.grid.plugin.CellEditing');
7066
		Ext.applyIf(me, {
7067
			items: [{
7068
					xtype: 'grid',
7069
					id: gridName,
7070
					name: gridName,
7071
					height: height,
7072
					store: Ext.create('Ext.data.Store', {
7073
						storeId: storeID,
7074
						fields: fieldStore,
7075
						proxy: {
7076
							method: 'POST',
7077
							type: 'ajax',
7078
							url: '',
7079
							reader: {
7080
								type: 'json',
7081
								root: 'data'
7082
							}
7083
						}
7084
					}),
7085
					dockedItems: [{
7086
							xtype: 'toolbar',
7087
							items: [{
7088
									text: 'Add',
7089
									hidden: hide_,
7090
									name: tableName + 'Add',
7091
									iconCls: 'fa-plus-circle',
7092
									style: 'font-family: FontAwesome',
7093
									handler: function () {
7094
										var store = Ext.StoreMgr.lookup(storeID)
7095
											idx = store.getCount();
7096
										var action = getParam('action');
7097
										var data = '';
7098
										var Sequence = 0;
7099
										if (idx == 0) {
7100
											Sequence = 1;
7101
										} else {
7102
											Sequence = 1 + idx;
7103
										}
7104
										data = {
7105
											Sequence: Sequence
7106
										};
7107
										store.insert(idx, data);
7108
									}
7109
								}, {
7110
									text: 'Delete',
7111
									hidden: hide_,
7112
									name: tableName + 'DeleteText',
7113
									iconCls: 'fa-trash-o',
7114
									style: 'font-family: FontAwesome',
7115
									handler: function () {
7116
										var me = this,
7117
										store = Ext.StoreMgr.lookup(storeID);
7118
										var grid = Ext.getCmp(gridName);
7119
										Ext.MessageBox.show({
7120
											title: 'Remove tab',
7121
											msg: "This will remove. Do you want to continue?",
7122
											buttons: Ext.MessageBox.YESNO,
7123
											fn: function (choice) {
7124
												console.log(choice);
7125
												if (choice === 'yes') {
7126
													var selection = grid.getView().getSelectionModel().getSelection()[0];
7127
													if (selection) {
7128
														store.remove(selection);
7129
													}
7130
												}
7131
											}
7132
										});
7133
									}
7134
								}
7135
							]
7136
						}
7137
					],
7138
					columns: cols,
7139
					selType: checkSelection,
7140
					plugins: [this.editing],
7141
					// plugins: {
7142
					// ptype: 'rowediting',
7143
					// pluginId: 'rowEditing',
7144
					// clicksToEdit: 0,
7145
					// listeners: {
7146
					// }
7147
					// }
7148
				}
7149
			]
7150
		});
7151
		me.callParent(arguments);
7152
	}
7153
});
7154
Ext.define('MinovaUtil.MinovaES.MinovaForm', {
7155
	extend: 'Ext.form.Panel',
7156
	alias: ['widget.minovaForm', 'widget.minovaform'],
7157
	tableName: undefined,
7158
	param: undefined,
7159
	titleform: undefined,
7160
	formname: this.name,
7161
	isLookup: undefined,
7162
	hidebutton: undefined,
7163
	//frame: true,
7164
	resizable: true,
7165
	border: false,
7166
	autoScroll: true,
7167
	minHeight: 20,
7168
	layout: 'column',
7169
	submitproc: undefined, //true if stil edit ,add
7170
	actionsubmit: undefined,
7171
	iseditform: undefined,
7172
	isFormReadOnly: undefined, // true== form di read only default false
7173
	isDisplay: undefined, // true if display only and false or undefined or empety if form can be edit
7174
	searchcustomization: undefined,
7175
	getIsFormReadOnly: function () {
7176
		return this.isFormReadOnly;
7177
	},
7178
	setIsFormReadOnly: function (value) {
7179
		var me = this;
7180
		me.isFormReadOnly = value;
7181
		return me;
7182
	},
7183
	getIsEditform: function () {
7184
		return this.iseditform;
7185
	},
7186
	setIsEditform: function (value) {
7187
		var me = this;
7188
		me.iseditform = value;
7189
		return me;
7190
	},
7191
	getActionSubmit: function () {
7192
		return this.actionsubmit;
7193
	},
7194
	setActionSubmit: function (value) {
7195
		var me = this;
7196
		me.actionsubmit = value;
7197
		return me;
7198
	},
7199
	getSubmitProc: function () {
7200
		return this.submitnproc;
7201
	},
7202
	setSubmitProc: function (value) {
7203
		var me = this;
7204
		me.submitnproc = value;
7205
		return me;
7206
	},
7207
	listeners: {
7208
		render: function () {
7209
			if (this.isLookup == 1 || this.isLookup == 'Y' || this.hidebutton == 1 || this.hidebutton == 'Y') {
7210
				var v = Ext.ComponentQuery.query('[name=formLookupFilter]')[0];
7211
				if (v) {
7212
					v.setMaxHeight(200);
7213
				}
7214

    
7215
			}
7216
			if (this.titleform != undefined) {
7217
				this.setTitle(this.titleform);
7218
			}
7219
		},
7220

    
7221
	},
7222
	defaults: {
7223
		layout: 'form',
7224
		xtype: 'container',
7225
		defaultType: 'textfield',
7226
		style: 'width: 50%',
7227
		//height: 1000
7228
	},
7229
	initComponent: function () {
7230
		var col1 = [];
7231
		var col2 = [];
7232
		var me = this;
7233
		LangID = localStorage.LangId;
7234
		isLookup = me.isLookup;
7235
		//var _url = 'GetAllField';
7236

    
7237
		if (isLookup == 1 || isLookup == true || isLookup == 'Y') {}
7238
		isDisplay = me.isDisplay;
7239
		var hasil = null;
7240
		//hamid 200916
7241
		//Ext.Ajax.request({
7242
		//	async : false,
7243
		//	method : 'POST',
7244
		//	url : '/Devt/' + _url + '?tableName=' + me.tableName,
7245
		//	success : function (response) {
7246
		//		var results = Ext.decode(response.responseText);
7247
		//		hasil = results.data;
7248
		//	}
7249
		//});
7250
		//end
7251

    
7252

    
7253
		//hamid
7254
		//if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
7255
		parameter = null;
7256
		if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7257
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupFilter='1'"
7258
		} else if (me.searchcustomization == true) {
7259
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',IsCustomizationFilter='1'"
7260
		} else {
7261
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
7262
		}
7263
		Ext.Ajax.request({
7264
			async: false,
7265
			method: 'POST',
7266
			url: '/UserControl/GetStore',
7267
			params: {
7268
				tableName: 'PDSBS0007',
7269
				param: parameter
7270
			},
7271
			success: function (response) {
7272
				var results = Ext.decode(response.responseText);
7273
				hasil = results.data;
7274
			}
7275
		});
7276
		//end
7277
		if (hasil.length > 0) {
7278
			// hasil = hasil.sort(MinovaUtil.SortBy("Sequence"))
7279
			var me = this;
7280
			Ext.each(hasil, function (rec) {
7281
				var null_ = null;
7282
				if (rec.IsPrimaryKey == true) {
7283
					null_ = false;
7284
				}
7285
				if (rec.IsRequired == true) {
7286
					null_ = false;
7287
				} else {
7288
					null_ = true;
7289
				}
7290
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, isDisplay, me.tableName, me.isLookup);
7291
				var descField = undefined;
7292
				//if (isDisplay == true && rec.SearchType !='') {
7293
				//    descField = new Ext.form.Display({
7294
				//        fieldCode:'codeDisplay'+rec.name+rec.tableName,
7295
				//        allowBlank: true,
7296
				//        fieldLabel: 'Desc ' + rec.ScreenCaption,
7297
				//        readOnly: true,
7298
				//        maxLength: rec.Length,
7299
				//        anchor: '100%',
7300
				//        submitValue: false
7301
				//    });
7302
				//}
7303
				//else {
7304
				//    if (rec.SearchType == '2') {// lookup
7305
				//        descField = new Ext.form.TextField({
7306
				//            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7307
				//            allowBlank: true,
7308
				//            fieldLabel: 'Desc ' + rec.ScreenCaption,
7309
				//            readOnly: true,
7310
				//            maxLength: rec.Length,
7311
				//            anchor: '100%',
7312
				//            submitValue: false
7313
				//        });
7314
				//    }
7315
				//    if (rec.SearchType == '3') {// tree
7316
				//        descField = new Ext.form.TextField({
7317
				//            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7318
				//            allowBlank: true,
7319
				//            fieldLabel: 'Desc ' + rec.ScreenCaption,
7320
				//            readOnly: true,
7321
				//            maxLength: rec.Length,
7322
				//            anchor: '100%',
7323
				//            submitValue: false
7324
				//        });
7325
				//    }
7326
				//    if (rec.SearchType == '4' && me.isLookup != true) {
7327
				//        descField = new Ext.form.TextField({
7328
				//            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7329
				//            allowBlank: true,
7330
				//            fieldLabel: 'Full Name',
7331
				//            readOnly: true,
7332
				//            maxLength: rec.Length,
7333
				//            anchor: '100%',
7334
				//            submitValue: false
7335
				//        });
7336
				//    }
7337

    
7338
				//}
7339

    
7340
				if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7341
					col1.push(formfield);
7342
					if (descField) {
7343
						col1.push(descField)
7344
					}
7345
				} else {
7346
					if (isDesk) {
7347
						if (rec.ColumnNo == 1) {
7348
							col1.push(formfield);
7349
							if (descField) {
7350
								col1.push(descField)
7351
							}
7352
						} else {
7353
							col2.push(formfield);
7354
							if (descField) {
7355
								col2.push(descField)
7356
							}
7357
						}
7358
					} else {
7359
						col1.push(formfield);
7360
						if (descField) {
7361
							col1.push(descField)
7362
						}
7363
					}
7364

    
7365
				}
7366

    
7367
				if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
7368
					formfieldKey = new Ext.form.TextField({
7369
							hidden: true,
7370
							name: "Key_" + rec.FieldName,
7371
						});
7372
					col2.push(formfieldKey);
7373
				}
7374

    
7375
			});
7376
			//console.log(col1);
7377
		}
7378
		Ext.applyIf(me, {
7379
			items: [{
7380
					//width: 450,
7381
					style: 'width: 50%',
7382
					items: col1
7383
				}, {
7384
					//width: 450,
7385
					style: 'width: 50%',
7386
					items: col2
7387
				}
7388
			],
7389
		});
7390
		this.callParent();
7391
	}
7392
});
7393

    
7394
Ext.define('MinovaUtil.MinovaES.MinovaGridForm', {
7395
	extend: 'Ext.form.Panel',
7396
	alias: ['widget.minovagridform', 'widget.MinovaGridForm'],
7397
	tableName: undefined, //nama tabel
7398
	param: undefined, //param query
7399
	pagesize: undefined,
7400
	storename: undefined,
7401
	titleform: undefined,
7402
	titlegrid: undefined,
7403
	heightgrid: undefined,
7404
	heightform: undefined,
7405
	iseditform: undefined,
7406
	lastheightform: undefined,
7407
	layoutType: undefined,
7408
	lastpage: undefined,
7409
	lastTitle: undefined,
7410
	getLastTitle: function () {
7411
		return this.lastTitle;
7412
	},
7413
	setLastTitle: function (value) {
7414
		var me = this;
7415
		me.lastTitle = value;
7416
		return me;
7417
	},
7418
	getLastpage: function () {
7419
		return this.lastpage;
7420
	},
7421
	setLastpage: function (value) {
7422
		var me = this;
7423
		me.lastpage = value;
7424
		return me;
7425
	},
7426
	getLayoutType: function () {
7427
		return this.layoutType;
7428
	},
7429
	setLayoutType: function (value) {
7430
		var me = this;
7431
		me.layoutType = value;
7432
		return me;
7433
	},
7434
	getLastheightform: function () {
7435
		return this.lastheightform;
7436
	},
7437
	setLastheightform: function (value) {
7438
		var me = this;
7439
		me.lastheightform = value;
7440
		return me;
7441
	},
7442

    
7443
	getIsEditform: function () {
7444
		return this.iseditform;
7445
	},
7446
	setIsEditform: function (value) {
7447
		var me = this;
7448
		me.iseditform = value;
7449
		return me;
7450
	},
7451
	initComponent: function () {
7452
		var me = this;
7453
		var storename = me.storename;
7454
		if (storename == "" || storename == undefined) {
7455
			storename = "store" + me.tableName;
7456
		}
7457
		var tableName = me.tableName;
7458
		Ext.applyIf(me, {
7459
			items: [{
7460
					layoutType: "MinovaGridForm",
7461
					title: me.titlegrid,
7462
					xtype: "minovagrid",
7463
					tableName: tableName, // nama tebel/dataset
7464
					name: "MinovaGridFormGrid" + tableName, //name bebeas
7465
					param: me.param, // parameter filteran
7466
					pagesize: me.pagesize, // jumlah record yang muncul per page
7467
					storename: storename, //nama store bebas
7468
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7469
					height: 330,
7470
					bodyPadding: 0,
7471
					dockedItems: [{
7472
							xtype: 'pagingtoolbar',
7473
							store: storename, // harus sama dengan naa store diatas
7474
							dock: 'bottom', //posisi paging
7475
							pageSize: me.pagesize,
7476
							displayInfo: true
7477
						}
7478
					],
7479

    
7480
					listeners: {
7481
						viewready: function () {
7482
							//alert('ready')
7483
							var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7484
							formEdit.setHidden(true);
7485

    
7486
							if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7487
								Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7488
								Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7489
								Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7490
							} else {
7491
								Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7492
								//Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7493
								Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7494
								Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7495
							}
7496
						},
7497
						selectionchange: function () {
7498
							//case md
7499
							var layout = null;
7500
							var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7501
							if (pnl) {
7502
								layout = pnl.getLayoutType();
7503

    
7504
							}
7505
							//end case
7506

    
7507
							if (layout == 'L003') {
7508
								var selection = this.getView().getSelectionModel().getSelection()[0];
7509
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7510
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7511
								if (selection) {
7512
									formDisplay.getForm().setValues(selection.data);
7513
									formEdit.getForm().setValues(selection.data);
7514
								}
7515

    
7516
							}
7517
						},
7518
						itemdblclick: function () {
7519
							var me = this;
7520
							//case md
7521
							var layout = null;
7522
							var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7523
							if (pnl) {
7524
								layout = pnl.getLayoutType();
7525

    
7526
							} else {
7527
								pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7528
								layout = pnl.getLayoutType();
7529
							}
7530
							//end case
7531
							var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7532
							var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7533
							var submit_ = formEdit.getSubmitProc();
7534
							var selection = me.getView().getSelectionModel().getSelection()[0];
7535
							if (submit_ == undefined) {
7536
								submit_ = false;
7537
							}
7538
							if (submit_ == false) {
7539

    
7540
								formDisplay.getForm().setValues(selection.data);
7541
								formEdit.getForm().setValues(selection.data);
7542
								if (layout == 'L003') {
7543
									formDisplay.setHidden(false);
7544
									Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + this.tableName + ']')[0].setHidden(true);
7545
									var heigh = pnl.getLastheightform();
7546

    
7547
									var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7548
										if (pDetail) {
7549
											pDetail.setHeight(heigh + 100);
7550
										} else {
7551
											pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7552
											var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
7553
												var mainPnl = mainPnl_.getHeight();
7554
											//pDetail.setHeight(mainPnl + 100);
7555

    
7556
										}
7557
								} else {
7558
									formDisplay.setTitle("View")
7559
									formEdit.setTitle("Edit")
7560
								}
7561
							} else {
7562
								alert('still process')
7563
							}
7564

    
7565
						},
7566
						beforeedit: function () {
7567
							return false;
7568
						}
7569
					}
7570
				}, {
7571
					xtype: 'minovaform',
7572
					name: "MinovaGridFormDisplay" + tableName,
7573
					tableName: tableName, // nama tabel /dataset
7574
					isLookup: '', // 1 or 'Y' for lookup
7575
					isDisplay: true, // true== form is displayfield
7576
					buttons: [{
7577
							text: 'Edit',
7578
							name: 'Edit' + tableName,
7579
							iconCls: 'fa-edit',
7580
							style: 'font-family: FontAwesome',
7581
							handler: function () {
7582

    
7583
								f = this.up().up();
7584
								f.setSubmitProc(false);
7585
								f.setHidden(true);
7586
								//f.setActionSubmit(1);
7587
								Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7588
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7589
								formEdit.setSubmitProc(true);
7590
								formEdit.setHidden(false);
7591
								formEdit.setActionSubmit(1);
7592
								var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7593
								if (p) {
7594
									var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7595
									var lastTitile = p.getTitle();
7596
									pnl.setLastTitle(lastTitile);
7597
									p.setTitle('Edit - ' + lastTitile)
7598

    
7599
								}
7600

    
7601
							}
7602
						}, {
7603
							text: 'Back to Grid',
7604
							name: 'Edit' + tableName,
7605
							iconCls: 'fa-reply',
7606
							style: 'font-family: FontAwesome',
7607
							handler: function () {
7608
								var layout = null;
7609
								var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7610
								if (pnl) {
7611
									layout = pnl.getLayoutType();
7612

    
7613
								}
7614

    
7615
								f = this.up().up();
7616
								f.setSubmitProc(false);
7617
								f.setHidden(true);
7618
								Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7619
								Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0].setHidden(true);
7620

    
7621
								if (layout == 'L003') {
7622
									var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7623
									grid_.setHidden(false);
7624
									Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7625
									Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7626
								}
7627
							}
7628
						}
7629
					],
7630
				}, {
7631
					xtype: 'minovaform',
7632
					name: "MinovaGridFormEdit" + tableName,
7633
					tableName: tableName, // nama tabel /dataset
7634
					isLookup: '', // 1 or 'Y' for lookup
7635
					isDisplay: false, // true== form is displayfield
7636
					buttons: [{
7637
							text: 'Save',
7638
							name: 'btnSaveMD',
7639
							name: 'Save' + tableName,
7640
							iconCls: 'fa-save',
7641
							style: 'font-family: FontAwesome',
7642
							handler: function () {
7643
								f = this.up().up();
7644
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7645

    
7646
								if (formEdit.getForm().isValid()) {
7647

    
7648
									if (Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]) {
7649
										var action_ = formEdit.getActionSubmit();
7650
										var main_ = Ext.ComponentQuery.query('[name=mainORM]')[0];
7651
										var record = main_.getRecordSelect();
7652

    
7653
										if (record == undefined) {
7654
											var treeDetail = Ext.ComponentQuery.query('[name=treeDetail]')[0];
7655
											treeDetail.getSelectionModel().select(0);
7656
											record = treeDetail.getView().getSelectionModel().getSelection()[0];
7657

    
7658
										}
7659
										var frmValue = formEdit.getValues();
7660
										var InitStartDate = 'InitStartDate';
7661
										var InitStartDateValue = record.get('StartDate');
7662
										frmValue[InitStartDate] = InitStartDateValue;
7663

    
7664
										var InitEndDate = 'InitEndDate';
7665
										var InitEndDateValue = record.get('EndDate');
7666
										frmValue[InitEndDate] = InitEndDateValue;
7667

    
7668
										var InitParentObject = 'InitParentObject';
7669
										var InitParentObjectValue = record.get('ObjectId');
7670
										if (InitParentObjectValue == undefined) {
7671
											InitParentObjectValue = "";
7672
										}
7673
										frmValue[InitParentObject] = InitParentObjectValue;
7674

    
7675
										var InitParentClass = 'InitParentClass';
7676
										var InitParentClassValue = record.get('ObjectType');
7677
										if (InitParentClassValue == undefined) {
7678
											InitParentClassValue = "";
7679
										}
7680
										frmValue[InitParentClass] = InitParentClassValue;
7681
										var frmValue_ = Ext.encode(frmValue);
7682

    
7683
										Ext.Ajax.request({
7684
											method: 'POST',
7685
											url: '/Devt/SaveMaintainORM',
7686
											params: {
7687
												tableName: f.tableName,
7688
												data: frmValue_,
7689
												action: action_,
7690
												/*
7691
												InitStartDate: InitStartDate,
7692
												InitEndaDate: InitEndaDate,
7693
												InitParentObject: InitParentObject,
7694
												InitParentClass: InitParentClass
7695
												 */
7696
											},
7697
											waitMsg: 'Saving Data...',
7698
											success: function (response) {
7699
												var result = Ext.decode(response.responseText);
7700
												if (result.success) {
7701
													MinovaMessage('Not Null', '000006', '', 'S')
7702

    
7703
													var pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7704
													if (pnl) {
7705
														Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0].setHeight(394);
7706
														layout = pnl.getLayoutType();
7707
														pnl.setLastpage(undefined);
7708
														var last = 'MinovaGridFormGrid' + f.tableName;
7709
														var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7710

    
7711
															var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7712
														formEdit.setSubmitProc(false);
7713
														formEdit.setHidden(true);
7714
														grid_.setHidden(false);
7715
														grid_.getStore().reload()
7716

    
7717
													}
7718
													if (layout == 'L003') {
7719
														var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7720
														grid_.setHidden(false);
7721
														Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7722
														var detail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7723
															if (detail) {
7724
																detail.setHeight(grid_.getHeight() + 100)
7725
															} else {
7726
																var p = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7727
																var p_ = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7728
																p_.setTitle(p.getLastTitle());
7729
															}
7730

    
7731
													}
7732

    
7733
												} else {
7734
													MinovaMessage('Not Null', '000005', result.message.text, 'E')
7735
												}
7736
												var grid = Ext.ComponentQuery.query('[name=gridMenuMDOrm]')[0];
7737
												var s = grid.getStore();
7738
												s.removeAll();
7739
												var ObjectType = getParam("ObjectType");
7740
												var Lang = null;
7741
												Ext.Ajax.request({
7742
													async: false,
7743
													method: 'POST',
7744
													url: '/Devt/GetLangID',
7745
													success: function (response) {
7746
														Lang = response.responseText;
7747
													}
7748
												});
7749
												Ext.Ajax.request({
7750
													async: true,
7751
													method: 'POST',
7752
													url: '/UserControl/GetStore',
7753
													params: {
7754
														tableName: 'PHRCM0006',
7755
														param: 'Language[equal]' + Lang + ',ObjectClass[equal]' + ObjectType
7756

    
7757
													},
7758
													success: function (response) {
7759
														var results = Ext.decode(response.responseText);
7760
														var data_ = results.data;
7761
														s.loadData(results.data);
7762
														// console.log(data_)
7763
													}
7764
												});
7765
											},
7766
											failure: function (response) {
7767
												var result = Ext.decode(response.responseText);
7768
												console.log(result);
7769
											}
7770
										});
7771
									} else {
7772
										var frmValue = Ext.encode(formEdit.getValues());
7773
										Ext.Ajax.request({
7774
											method: 'POST',
7775
											url: '/Devt/SaveTable',
7776
											params: {
7777
												tableName: f.tableName,
7778
												data: frmValue,
7779
												action: formEdit.getActionSubmit()
7780
											},
7781
											waitMsg: 'Saving Data...',
7782
											success: function (response) {
7783
												var result = Ext.decode(response.responseText);
7784
												if (result.success) {
7785
													MinovaMessage('Not Null', '000006', '', 'S')
7786

    
7787
													var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7788

    
7789
													if (pnl) {
7790
														Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(394);
7791
														layout = pnl.getLayoutType();
7792
														pnl.setLastpage(undefined);
7793
														var last = 'MinovaGridFormGrid' + f.tableName;
7794
														var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7795

    
7796
															var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7797
														formEdit.setSubmitProc(false);
7798
														formEdit.setHidden(true);
7799
														grid_.setHidden(false);
7800
														grid_.getStore().reload()
7801
														var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7802
															mpnl.setTitle(pnl.getLastTitle());
7803

    
7804
													}
7805
													if (layout == 'L003') {
7806
														var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7807
														grid_.setHidden(false);
7808
														Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7809
														Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7810
													}
7811

    
7812
												} else {
7813
													MinovaMessage('Not Null', '000005', result.message.text, 'E')
7814
												}
7815
											},
7816
											failure: function (response) {
7817
												var result = Ext.decode(response.responseText);
7818
												//console.log(result);
7819
											}
7820
										});
7821
									}
7822

    
7823
								}
7824
							}
7825
						}, {
7826
							text: 'Delete',
7827
							iconCls: 'fa-trash-o',
7828
							name: 'Delete',
7829
							style: 'font-family: FontAwesome',
7830
							action: 'CRUDdelete',
7831
							handler: function () {
7832
								//add fungsi Delete
7833
								f = this.up().up();
7834
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7835
								var frmValue = Ext.encode(formEdit.getValues());
7836
								if (formEdit.getForm().isValid()) {
7837
									Ext.Ajax.request({
7838
										method: 'POST',
7839
										url: '/Devt/SaveTable',
7840
										params: {
7841
											tableName: f.tableName,
7842
											data: frmValue,
7843
											action: 2
7844
										},
7845
										waitMsg: 'Saving Data...',
7846
										success: function (response) {
7847
											var result = Ext.decode(response.responseText);
7848
											if (result.success) {
7849
												MinovaMessage('Not Null', '000006', '', 'S')
7850

    
7851
												var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7852
												if (pnl) {
7853
													layout = pnl.getLayoutType();
7854
													pnl.setLastpage(undefined);
7855

    
7856
												}
7857
												if (layout == 'L003') {
7858
													var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7859
													grid_.setHidden(false);
7860
													Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7861
													Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7862
												}
7863

    
7864
											} else {
7865
												MinovaMessage('Not Null', '000005', result.message.text, 'E')
7866
											}
7867
										},
7868
										failure: function (response) {
7869
											var result = Ext.decode(response.responseText);
7870
											//console.log(result);
7871
										}
7872
									});
7873
								}
7874
							}
7875

    
7876
						}, {
7877
							text: 'Cancel',
7878
							iconCls: 'fa-reply',
7879
							style: 'font-family: FontAwesome',
7880
							handler: function () {
7881
								f = this.up().up();
7882
								f.setSubmitProc(false);
7883
								f.setHidden(true);
7884
								var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7885

    
7886
								if (pnl) {
7887
									//'L001'=grid L002 =heder detail L003=card L004=custom
7888
									layout = pnl.getLayoutType();
7889
									var last = 'MinovaGridFormGrid' + f.tableName;
7890
									var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0];
7891
									grid_.setHidden(false);
7892
									pnl.setLastpage(undefined);
7893
									var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7894
										mpnl.setTitle(pnl.getLastTitle());
7895
									if (layout == 'L003') {
7896
										Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(400);
7897
									} else {
7898
										Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7899
									}
7900
								} else {
7901
									// Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7902
									var mdDetail = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7903
									layout = mdDetail.getLayoutType();
7904
									if (layout == 'L003') {
7905
										var panelDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7906
										Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + tableName + ']')[0].setHidden(false)
7907

    
7908
										panelDetail.setHeight(400);
7909
									} else {
7910
										Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7911
									}
7912
								}
7913

    
7914
							}
7915
						}
7916
					],
7917
				}
7918
			]
7919
		});
7920
		me.callParent(arguments);
7921
	}
7922
});
7923

    
7924
Ext.define('MinovaUtil.MinovaES.MinovaGridCard', {
7925
	extend: 'Ext.form.Panel',
7926
	alias: ['widget.minovagridcard', 'widget.MinovaGridCard'],
7927
	tableName: undefined, //nama tabel
7928
	param: undefined, //param query
7929
	//hidebutton: undefined,
7930
	pagesize: undefined,
7931
	storename: undefined,
7932
	titleform: undefined,
7933
	titlegrid: undefined,
7934
	heightgrid: undefined,
7935
	heightform: undefined,
7936
	iseditform: undefined,
7937

    
7938
	getIsEditform: function () {
7939
		return this.iseditform;
7940
	},
7941
	setIsEditform: function (value) {
7942
		var me = this;
7943
		me.iseditform = value;
7944
		return me;
7945
	},
7946
	initComponent: function () {
7947
		var me = this;
7948
		var storename = me.storename;
7949
		if (storename == "" || storename == undefined) {
7950
			storename = "store" + me.tableName;
7951
		}
7952
		var tableName = me.tableName;
7953
		Ext.applyIf(me, {
7954
			items: [{
7955
					layoutType: "MinovaGridCard",
7956
					//title: me.titlegrid,
7957
					xtype: "minovagrid",
7958
					tableName: tableName, // nama tebel/dataset
7959
					name: "MinovaGridCardGrid" + tableName, //name bebeas
7960
					param: me.param, // parameter filteran
7961
					pagesize: me.pagesize, // jumlah record yang muncul per page
7962
					storename: storename, //nama store bebas
7963
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7964
					height: 330,
7965
					bodyPadding: 0,
7966
					dockedItems: [{
7967
							xtype: 'pagingtoolbar',
7968
							store: storename, // harus sama dengan naa store diatas
7969
							dock: 'bottom', //posisi paging
7970
							pageSize: me.pagesize,
7971
							displayInfo: true
7972
						}
7973
					],
7974

    
7975
					listeners: {
7976
						viewready: function () {
7977
							if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7978
								Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7979
								Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7980
							} else {
7981
								Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7982
								//Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7983
								Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7984
								Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7985
							}
7986
							//case orm
7987
							if (this.layoutType == "MinovaGridCard") {
7988
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7989
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7990
								formDisplay.setHidden(true);
7991
								formEdit.setHidden(true);
7992
							} else if (this.layoutType == "MinovaGridForm") {
7993
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7994
								formEdit.setHidden(true);
7995
							} else {
7996
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7997
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7998
								formDisplay.setHidden(true);
7999
								formEdit.setHidden(true);
8000
							}
8001

    
8002
						},
8003
						itemdblclick: function () {
8004
							//alert('a')
8005
							var me = this;
8006

    
8007
							var formDisplay = undefined;
8008
							var formEdit = undefined;
8009
							//case md orm
8010

    
8011
							if (this.layoutType == "MinovaGridCard") {
8012
								formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8013
								formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8014
							} else if (this.layoutType == "MinovaGridForm") {
8015
								formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8016
								formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8017
								// formDisplay.setHidden(true);
8018

    
8019
							} else {
8020
								formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8021
								formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8022

    
8023
							}
8024
							var submit_ = formEdit.getSubmitProc();
8025
							var selection = me.getView().getSelectionModel().getSelection()[0];
8026
							if (submit_ == undefined) {
8027
								submit_ = false;
8028
							}
8029
							if (submit_ == false) {
8030

    
8031
								if (this.layoutType == "MinovaGridCard") {
8032

    
8033
									formDisplay.getForm().setValues(selection.data);
8034
									formEdit.getForm().setValues(selection.data);
8035
									formDisplay.setHidden(false);
8036
									formEdit.setHidden(true);
8037
									this.setHidden(true);
8038
								} else if (this.layoutType == "MinovaGridForm") {
8039
									formEdit.setHidden(true);
8040
									formDisplay.getForm().setValues(selection.data);
8041
									formEdit.getForm().setValues(selection.data);
8042
								} else {
8043
									formDisplay.setHidden(true);
8044
									formEdit.setHidden(true);
8045

    
8046
									formDisplay.getForm().setValues(selection.data);
8047
									formEdit.getForm().setValues(selection.data);
8048
								}
8049
								// untuk case ORM
8050
								var display_ = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + tableName + ']')[0].getHeight();
8051
								if (display_) {
8052
									var pnlORM = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0]
8053
										var pnlMD = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
8054
										if (pnlORM) {
8055
											pnlORM.setHeight(pnl + 100);
8056
										}
8057
										if (pnlMD) {
8058
											Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0].setHeight(pnlMD + 600);
8059
											Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(pnlMD + 600);
8060
										}
8061
								}
8062
								//end case ORM and MD
8063
							} else {
8064
								alert('still process')
8065
							}
8066

    
8067
						},
8068
						beforeedit: function () {
8069
							return false;
8070
						}
8071
					}
8072
				}, {
8073
					xtype: 'minovaform',
8074
					name: "MinovaGridCardDisplay" + tableName,
8075
					tableName: tableName, // nama tabel /dataset
8076
					isLookup: '', // 1 or 'Y' for lookup
8077
					isDisplay: true, // true== form is displayfield
8078
					buttons: [{
8079
							text: 'Edit',
8080
							name: 'Edit' + tableName,
8081
							iconCls: 'fa-edit',
8082
							style: 'font-family: FontAwesome',
8083
							handler: function () {
8084
								f = this.up().up();
8085
								f.setSubmitProc(false);
8086
								f.setHidden(true);
8087
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8088
								Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(true);
8089
								Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(false);
8090

    
8091
							}
8092
						}, {
8093
							text: 'Back to Grid',
8094
							name: 'Cancel' + tableName,
8095
							iconCls: 'fa-reply',
8096
							style: 'font-family: FontAwesome',
8097
							handler: function () {
8098
								f = this.up().up();
8099
								f.setSubmitProc(false);
8100
								f.setHidden(true);
8101
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8102
								Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
8103
								Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
8104

    
8105
							}
8106
						}
8107
					],
8108
				}, {
8109
					xtype: 'minovaform',
8110
					name: "MinovaGridCardEdit" + tableName,
8111
					tableName: tableName, // nama tabel /dataset
8112
					isLookup: '', // 1 or 'Y' for lookup
8113
					isDisplay: false, // true== form is displayfield
8114
					buttons: [{
8115
							text: 'Save',
8116
							name: 'Save' + tableName,
8117
							iconCls: 'fa-save',
8118
							style: 'font-family: FontAwesome',
8119
							handler: function () {
8120
								f = this.up().up();
8121
								var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0];
8122
							}
8123
						}, {
8124
							text: 'Delete',
8125
							iconCls: 'fa-trash-o',
8126
							name: 'Delete',
8127
							style: 'font-family: FontAwesome',
8128
							action: 'CRUDdelete'
8129
						}, {
8130
							text: 'Back to Grid',
8131
							name: 'EditForm' + tableName,
8132
							iconCls: 'fa-reply',
8133
							style: 'font-family: FontAwesome',
8134
							handler: function () {
8135
								f = this.up().up();
8136
								f.setSubmitProc(false);
8137
								f.setHidden(true);
8138
								var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8139
								Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
8140
								Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
8141

    
8142
							}
8143
						}
8144
					],
8145
				}
8146
			]
8147
		});
8148
		me.callParent(arguments);
8149
	}
8150
});
8151

    
8152
Ext.define('MinovaUtil.MinovaES.MinovaFloatField', {
8153
	extend: 'Ext.form.field.Number',
8154
	alias: 'widget.minovafloatfield',
8155
	hideTrigger: true,
8156
	allowDecimals: true,
8157
	precision: undefined,
8158
	isValid: function () {
8159
		var b = this,
8160
		a = b.disabled,
8161
		c = b.forceValidation || !a;
8162
		return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8163
	},
8164
	setValue: function (v) {
8165
		this.setRawValue(this.getFormattedValue(v));
8166
	},
8167
	getValue: function () {
8168
		var val = this.removeFormat(this.getRawValue());
8169
		this.value = val;
8170
		return val;
8171
	},
8172
	getSubmitValue: function () {
8173
		return this.removeFormat(this.getRawValue());
8174
	},
8175
	removeFormat: function (v) {
8176
		if (Ext.isEmpty(v))
8177
			return v;
8178
		else {
8179
			v = v.replace(Ext.util.Format.currencySign, '');
8180
			v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8181
			return v;
8182
		}
8183
	},
8184
	onFocus: function () {
8185
		this.setRawValue(this.removeFormat(this.getRawValue()));
8186
	},
8187
	onBlur: function () {
8188
		this.setRawValue(this.getFormattedValue(this.getValue()));
8189
	},
8190
	getFormattedValue: function (v) {
8191
		var prec = '';
8192
		if (this.precision != '' && this.precision > 0) {
8193
			for (var i = 0; i < this.precision; i++) {
8194
				prec = prec + '0'
8195
			}
8196
		}
8197
		return Ext.util.Format.number(v, '0,000.' + prec);
8198
	}
8199
});
8200
Ext.define('MinovaUtil.MinovaES.MinovaNumberField', {
8201
	extend: 'Ext.form.field.Number',
8202
	alias: 'widget.minovanumberfield',
8203
	//hideTrigger: true,
8204
	isValid: function () {
8205
		var b = this,
8206
		a = b.disabled,
8207
		c = b.forceValidation || !a;
8208
		return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8209
	},
8210
	setValue: function (v) {
8211
		this.setRawValue(this.getFormattedValue(v));
8212
	},
8213
	getValue: function () {
8214
		var val = this.removeFormat(this.getRawValue());
8215
		this.value = val;
8216
		return val;
8217
	},
8218
	getSubmitValue: function () {
8219
		return this.removeFormat(this.getRawValue());
8220
	},
8221
	removeFormat: function (v) {
8222
		if (Ext.isEmpty(v))
8223
			return v;
8224
		else {
8225
			v = v.replace(Ext.util.Format.currencySign, '');
8226
			v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8227
			return v;
8228
		}
8229
	},
8230
	onFocus: function () {
8231
		this.setRawValue(this.removeFormat(this.getRawValue()));
8232
	},
8233
	onBlur: function () {
8234
		this.setRawValue(this.getFormattedValue(this.getValue()));
8235
	},
8236
	getFormattedValue: function (v) {
8237
		return Ext.util.Format.number(v, '0,000');
8238
	}
8239
});
8240

    
8241
Ext.define('MinovaUtil.MinovaES.SysDateTime', {
8242
	extend: 'Ext.form.field.Text',
8243
	alias: ['widget.minovasysdatetime'],
8244
	undefinedText: '&#160;',
8245
	setValue: function (v) {
8246
		var value = v;
8247
		var hasil = null;
8248
		/*
8249
		if (value === undefined) {
8250
		return this.undefinedText;
8251
		}
8252
		if (value === null) {
8253
		return this.setRawValue(null);
8254
		}
8255
		 */
8256
		//hamid 200916
8257
		//if (value != null || value != "" || value != undefined) {
8258
		//    return this.setRawValue(null);
8259
		if (value == "" || value == null) {
8260
			return this.setRawValue("");
8261
			//end
8262
		} else {
8263
			var d = value.substring(6, 8);
8264
			var m = value.substring(4, 6);
8265
			var y = value.substring(0, 4);
8266
			var h = value.substring(8, 10);
8267
			var mt = value.substring(10, 12);
8268
			var s = value.substring(12, 14);
8269
			hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
8270
		}
8271

    
8272
		this.setRawValue(hasil);
8273
	},
8274
	getRawValue: function () {
8275
		return this.getValue();
8276
	},
8277
	getValue: function () {
8278
		var value = this.rawValue;
8279
		var hasil = null;
8280
		if (value != undefined) {
8281
			var d = value.substring(0, 2);
8282
			var m = value.substring(3, 5);
8283
			var y = value.substring(6, 10);
8284
			var h = value.substring(14, 16);
8285
			var mt = value.substring(17, 19);
8286
			var s = value.substring(20, 22);
8287
			hasil = y + m + d + h + mt + s;
8288
		}
8289
		return hasil;
8290
	}
8291
});
8292
Ext.define('MinovaUtil.MinovaES.MinovaDateTime', {
8293
	extend: 'Ext.form.field.Trigger',
8294
	alias: ['widget.minovadatetime', 'widget.MinovaDateTime'],
8295
	tableName: undefined,
8296
	param: undefined,
8297
	anchor: '50%',
8298
	initComponent: function () {
8299
		var me = this;
8300
		Ext.applyIf(me, {});
8301
		me.callParent(arguments);
8302
	},
8303
	onTriggerClick: function () {
8304
		Ext.create('Ext.window.Window', {
8305
			title: 'Hello',
8306
			modal: true,
8307
			layout: 'fit',
8308
			dockedItems: [{
8309
					xtype: 'toolbar',
8310
					dock: 'bottom',
8311
					align: 'center',
8312
					items: [{
8313
							xtype: 'tbspacer'
8314
						}, {
8315
							xtype: 'button',
8316
							text: 'Today'
8317
						}, {
8318
							xtype: 'tbspacer'
8319
						}, ]
8320
				}
8321
			],
8322
			items: [{
8323
					xtype: 'panel',
8324
					layout: 'hbox',
8325
					items: [{
8326
							xtype: 'datepicker',
8327
							name: 'date',
8328
							showToday: false,
8329
							handler: function (picker, date) {}
8330

    
8331
						}, {
8332
							xtype: 'sliderfield',
8333
							width: 60,
8334
							name: 'hour',
8335
							labelAlign: 'top',
8336
							fieldLabel: 'Hour',
8337
							value: 0,
8338
							increment: 1,
8339
							minValue: 0,
8340
							maxValue: 24,
8341
							margin: '10 5 3 20',
8342
							renderTo: Ext.getBody(),
8343
						}, {
8344
							xtype: 'sliderfield',
8345
							width: 60,
8346
							name: 'minute',
8347
							labelAlign: 'top',
8348
							fieldLabel: 'Minute',
8349
							value: 0,
8350
							increment: 1,
8351
							minValue: 0,
8352
							maxValue: 60,
8353
							margin: '10 5 3 20',
8354
							renderTo: Ext.getBody(),
8355
						}, {
8356
							xtype: 'sliderfield',
8357
							width: 60,
8358
							name: 'second',
8359
							labelAlign: 'top',
8360
							fieldLabel: 'Second',
8361
							value: 0,
8362
							increment: 1,
8363
							minValue: 0,
8364
							maxValue: 60,
8365
							margin: '10 5 3 20',
8366
							renderTo: Ext.getBody(),
8367
						}
8368
					]
8369
				}
8370
			]
8371
		}).show();
8372
	}
8373
});
8374

    
8375
Ext.define('MinovaUtil.MinovaES.MinovaMDORM', {
8376
	extend: 'Ext.form.Panel',
8377
	alias: ['widget.minovamdorm'],
8378

    
8379
	//controller: 'sample',
8380
	controller: 'orm-manage-controller',
8381
	tableName: undefined, //nama tabel
8382
	param: undefined, //param query
8383
	pagesize: undefined,
8384
	storename: undefined,
8385
	titleform: undefined,
8386
	titlegrid: undefined,
8387
	heightgrid: undefined,
8388
	heightform: undefined,
8389
	iseditform: undefined,
8390
	lastheightform: undefined,
8391
	layoutType: undefined,
8392
	lastpage: undefined,
8393
	lastTitle: undefined,
8394
	getLastTitle: function () {
8395
		return this.lastTitle;
8396
	},
8397
	setLastTitle: function (value) {
8398
		var me = this;
8399
		me.lastTitle = value;
8400
		return me;
8401
	},
8402
	getLastpage: function () {
8403
		return this.lastpage;
8404
	},
8405
	setLastpage: function (value) {
8406
		var me = this;
8407
		me.lastpage = value;
8408
		return me;
8409
	},
8410
	getLayoutType: function () {
8411
		return this.layoutType;
8412
	},
8413
	setLayoutType: function (value) {
8414
		var me = this;
8415
		me.layoutType = value;
8416
		return me;
8417
	},
8418
	getLastheightform: function () {
8419
		return this.lastheightform;
8420
	},
8421
	setLastheightform: function (value) {
8422
		var me = this;
8423
		me.lastheightform = value;
8424
		return me;
8425
	},
8426

    
8427
	getIsEditform: function () {
8428
		return this.iseditform;
8429
	},
8430
	setIsEditform: function (value) {
8431
		var me = this;
8432
		me.iseditform = value;
8433
		return me;
8434
	},
8435
	initComponent: function () {
8436
		var me = this;
8437
		var userAction = MinovaUtil.GetActionMenu();
8438
		var crudBtn = true;
8439
		if (userAction == '1') {
8440
			crudBtn = false
8441
		}
8442
		var storename = me.storename;
8443
		if (storename == "" || storename == undefined) {
8444
			storename = "store" + me.tableName;
8445
		}
8446
		var tableName = me.tableName;
8447
		Ext.applyIf(me, {
8448
			items: [{
8449
					layoutType: "MinovaGridForm",
8450
					title: me.titlegrid,
8451
					xtype: "minovagridmd",
8452
					tableName: tableName, // nama tebel/dataset
8453
					name: "MinovaGridFormGrid", //name bebeas
8454
					param: me.param, // parameter filteran
8455
					pagesize: me.pagesize, // jumlah record yang muncul per page
8456
					storename: storename, //nama store bebas
8457
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
8458
					height: 330,
8459
					bodyPadding: 0,
8460
					tbar: [{
8461
							xtype: 'button',
8462
							text: 'Action',
8463
							hidden: crudBtn,
8464
							name: 'actionGrid',
8465
							menu: [{
8466
									text: 'Add',
8467
									action: 'addGrid',
8468
									name: 'addGridORM',
8469
									action: 'CRUDaddNewRecord',
8470
									style: 'font-family: FontAwesome',
8471
									itemId: 'AddData',
8472
									iconCls: 'fa-plus-circle',
8473

    
8474
								}, {
8475
									text: 'Copy',
8476
									action: 'copyGrid',
8477
									name: 'CopyGridORM',
8478
									iconCls: 'fa-copy',
8479
									style: 'font-family: FontAwesome',
8480
								}, {
8481
									text: 'Edit',
8482
									action: 'editGrid',
8483
									name: 'EditGridORM',
8484
									iconCls: 'fa-edit',
8485
									style: 'font-family: FontAwesome',
8486
								}, {
8487
									text: 'Delete',
8488
									name: 'DeleteGridORM',
8489
									hidden: true,
8490
									iconCls: 'fa-trash-o',
8491
									style: 'font-family: FontAwesome',
8492
								}
8493
							]
8494
						}, {
8495
							xtype: 'tbfill'
8496
						}, {
8497
							text: 'Clear Filters',
8498
							tooltip: 'Clear all filters',
8499
							name: 'clearbtn',
8500
							handler: function () {
8501
								var tolbar = this.up()
8502
									var grid_ = tolbar.up()
8503
									grid_.filters.clearFilters()
8504
							}
8505
						}, ],
8506

    
8507
					dockedItems: [{
8508
							xtype: 'pagingtoolbar',
8509
							store: storename, // harus sama dengan naa store diatas
8510
							dock: 'bottom', //posisi paging
8511
							pageSize: me.pagesize,
8512
							displayInfo: true
8513
						}
8514
					],
8515
					listeners: {
8516
						afterrender: function (me) {
8517
							if (MinovaUtil.GetActionMenu() == "1") {}
8518
							else {}
8519
						},
8520

    
8521
					},
8522

    
8523
				}, {
8524
					xtype: 'minovaform',
8525
					name: "MinovaGridFormDisplay",
8526
					//name: "MinovaGridFormEdit",
8527
					border: false,
8528
					tableName: tableName, // nama tabel /dataset
8529
					isLookup: '', // 1 or 'Y' for lookup
8530
					isDisplay: true, // true== form is displayfield
8531
					/*
8532
					buttons: [{
8533
					text: 'Edit',
8534
					name: 'EditDisplay',
8535
					iconCls: 'fa-edit',
8536
					style: 'font-family: FontAwesome',
8537
					}, {
8538
					text: 'Back to Grid',
8539
					name: 'BackGrid',
8540
					iconCls: 'fa-reply',
8541
					style: 'font-family: FontAwesome',
8542
					}
8543
					],
8544
					 */
8545
				}, {
8546
					xtype: 'minovaform',
8547
					//name: "MinovaGridFormDisplay",
8548
					name: "MinovaGridFormEdit",
8549
					border: false,
8550
					tableName: tableName, // nama tabel /dataset
8551
					isLookup: '', // 1 or 'Y' for lookup
8552
					isDisplay: false, // true== form is displayfield
8553
					/*
8554
					buttons: [{
8555
					text: 'Save',
8556
					name: 'btnSaveMD',
8557
					iconCls: 'fa-save',
8558
					style: 'font-family: FontAwesome',
8559
					}, {
8560
					text: 'Delete',
8561
					iconCls: 'fa-trash-o',
8562
					name: 'btnDeleteMD',
8563
					style: 'font-family: FontAwesome',
8564
					action: 'CRUDdelete',
8565
					}, {
8566
					text: 'Cancel',
8567
					name: 'btnCancelMD',
8568
					iconCls: 'fa-reply',
8569
					style: 'font-family: FontAwesome',
8570
					}
8571
					],
8572
					 */
8573
				}
8574
			]
8575

    
8576
		});
8577
		me.callParent(arguments);
8578
	}
8579
});
8580

    
8581
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMD', {
8582
	extend: 'Ext.form.Panel',
8583
	alias: ['widget.MinovaHeadermd', 'widget.MinovaHeaderMD'],
8584
	allTableName: undefined,
8585
	param: undefined,
8586
	//frame: true,
8587
	resizable: true,
8588
	autoScroll: true,
8589
	minHeight: 20,
8590
	layout: 'column',
8591
	name: 'HeaderMD',
8592
	getAllTableName: function () {
8593
		return this.allTableName;
8594
	},
8595
	setAllTableName: function (value) {
8596
		var me = this;
8597
		me.allTableName = value;
8598
		return me;
8599
	},
8600
	listeners: {
8601
		afterrender: function (me) {
8602

    
8603
			var nowDate = MinovaUtil.GetNowDate()
8604
				var allTbl = me.getAllTableName();
8605
			//alert(allTbl);
8606
			var splitTable = allTbl.split(',')
8607
				splitTable.forEach(function (tbl) {
8608
					// console.log(tbl);
8609
					//set values form
8610
					var nowDate = MinovaUtil.GetNowDate();
8611
					parameter = null;
8612
					if (me.isEmployee == true) {
8613
						parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
8614
					} else {
8615
						parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8616
					}
8617
					Ext.Ajax.request({
8618
						method: 'POST',
8619
						//async: false,
8620
						url: '/UserControl/GetStore',
8621
						params: {
8622
							tableName: tbl,
8623
							param: parameter
8624
						},
8625
						success: function (response) {
8626
							var results = Ext.decode(response.responseText);
8627
							hasil = results.data;
8628
							//console.log(hasil)
8629
							if (hasil.length > 0) {
8630
								me.getForm().setValues(hasil[0]);
8631

    
8632
								//console.log(me)
8633
							}
8634

    
8635
						}
8636
					});
8637
				});
8638

    
8639
			//setTimeout(function () {
8640
			//    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
8641
			//    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
8642
			//}, 100);
8643

    
8644
		},
8645

    
8646
	},
8647

    
8648
	initComponent: function () {
8649
		var me = this;
8650
		var col1 = [];
8651
		var col2 = [];
8652
		var hasil = null;
8653
		//get moduletype
8654
		//var ModuleType = 'PA';
8655
		//var ModuleType = MinovaUtil.GetModuleType()
8656
		//get Lang
8657
		var LangId = localStorage.LangId;
8658
		var allTable = null;
8659
		var tbl = null;
8660
		var tblTemp = null;
8661
		var nowDate = MinovaUtil.GetNowDate();
8662
		//var Photo_ = 'nophoto.gif';
8663
		var Photo = 'nophoto.gif';
8664
		tableName = null;
8665
		parameter = null;
8666
		// get Photo
8667
		//hamid200916
8668
		if (me.isEmployee == true) {
8669
			tableName = 'PHRPA0001';
8670
			parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
8671
		} else {
8672
			tableName = 'PHRRC0001';
8673
			parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8674
		}
8675
		Ext.Ajax.request({
8676
			method: 'POST',
8677
			async: false,
8678
			url: '/UserControl/GetStore',
8679
			params: {
8680
				tableName: tableName,
8681
				param: parameter
8682
			},
8683
			success: function (response) {
8684
				var results = Ext.decode(response.responseText);
8685
				hasil = results.data;
8686
				if (hasil.length > 0) {
8687
					dataPhoto = hasil[0].Picture
8688
						if (dataPhoto != "") {
8689
							Photo = dataPhoto;
8690
						}
8691
				}
8692

    
8693
			}
8694
		});
8695

    
8696
		var hasil = undefined;
8697
		Ext.Ajax.request({
8698
			async: false,
8699
			method: 'POST',
8700
			url: '/UserControl/GetStore',
8701
			params: {
8702
				tableName: 'PDSBS0009',
8703
				param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8704
			},
8705
			success: function (response) {
8706
				hasil = Ext.decode(response.responseText).data;
8707

    
8708
			}
8709
		});
8710

    
8711
		//sorting results
8712
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8713
		if (hasil.length > 0) {
8714
			Ext.each(hasil, function (rec) {
8715
				tblTemp = rec.TableName;
8716
				if (tbl != tblTemp) {
8717
					tbl = tblTemp;
8718
					if (allTable == null) {
8719
						allTable = tbl
8720
					} else {
8721
						allTable = allTable + ',' + tbl
8722
					}
8723

    
8724
				}
8725
				// build form
8726
				if (rec.TableRef != '') {
8727
					valueField = null;
8728
					displayValue = null;
8729
					Ext.Ajax.request({
8730
						async: false,
8731
						method: 'POST',
8732
						url: '/UserControl/GetStore',
8733
						params: {
8734
							tableName: 'SDATATABLEFIELD',
8735
							param: 'TableName[equal]' + rec.TableRef
8736
						},
8737
						success: function (response) {
8738
							var results = Ext.decode(response.responseText);
8739
							data_ = results.data;
8740
							if (data_ != undefined) {
8741
								valueField_ = $.grep(data_, function (r) {
8742
										return r.ValueField == '1'
8743
									});
8744
								if (valueField_.length > 0) {
8745
									valueField = valueField_[0].FieldName
8746
								}
8747

    
8748
								displayValue_ = $.grep(data_, function (r) {
8749
										return r.DisplayValue == '1'
8750
									});
8751
								if (displayValue_.length > 0) {
8752
									displayValue = displayValue_[0].FieldName
8753
								}
8754
							}
8755
						}
8756
					});
8757

    
8758
					formfield = new Ext.form.Display({
8759
							fieldLabel: rec.ScreenCaption,
8760
							name: rec.FieldName,
8761
							//value: rec.DefaultValue,
8762
							padding: 0,
8763
							labelCls: 'label-minova',
8764
							labelWidth: 150,
8765
							anchor: '80%',
8766
							store: Ext.create('Ext.data.Store', {
8767
								storeId: 'storeDisplay' + rec.FieldName,
8768
								//autoLoad: true,
8769
								proxy: {
8770
									method: 'POST',
8771
									type: 'ajax',
8772
									extraParams: {
8773
										tableName: rec.TableRef,
8774
										param: ''
8775
									},
8776
									reader: {
8777
										type: 'json',
8778
										root: 'data',
8779
										totalProperty: 'data[0].TotalCount'
8780
									}
8781
								}
8782
							}),
8783
							listeners: {
8784
								afterrender: function (f) {
8785
									var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8786
									var ParamCombo = rec.ParamCombo;
8787
									var param = '';
8788
									//if (ParamCombo != '') {
8789
									if ((rec.TableRef).toLowerCase() == 'phrom0001') {
8790
										var splitParam = ParamCombo.split(']');
8791
										switch (rec.FieldName) {
8792
										case 'Position':
8793
											ParamCombo = 'P'
8794
												break;
8795
										case 'CostCenter':
8796
											ParamCombo = 'CC'
8797
												break;
8798
										case 'Organization':
8799
											ParamCombo = 'O'
8800
												break;
8801
										case 'Job':
8802
											ParamCombo = 'J'
8803
												break;
8804
										}
8805
										//if (splitParam.length == 1) {
8806
										param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
8807
											//} else {
8808
											//    param = ParamCombo;
8809
											//}
8810
									}
8811
									//}
8812
									Ext.Ajax.request({
8813
										method: 'POST',
8814
										async: false,
8815
										url: '/UserControl/GetStore',
8816
										params: {
8817
											tableName: rec.TableRef,
8818
											param: param
8819
										},
8820
										success: function (response) {
8821
											var results = Ext.decode(response.responseText);
8822

    
8823
											//dt = results.data;
8824
											store.loadData(results.data);
8825

    
8826
										}
8827
									});
8828
								},
8829
								change: function (f) {
8830
									//alert(this.valueField, value);
8831
									var display = this.displayField;
8832
									var value = this.getValue();
8833
									var st = f.store
8834
										var r = st.findRecord(f.valueField, f.value)
8835
										if (r != null) {
8836
											f.setRawValue(r.get(f.displayField))
8837
										} else {
8838
											f.setRawValue(f.value);
8839

    
8840
										}
8841
								}
8842

    
8843
							},
8844
							queryMode: 'local',
8845
							displayField: displayValue,
8846
							valueField: valueField,
8847
						});
8848
				} else {
8849
					formfield = new Ext.form.Display({
8850
							fieldLabel: rec.ScreenCaption,
8851
							name: rec.FieldName,
8852
							labelCls: 'label-minova',
8853
							labelWidth: 150,
8854
							//value: rec.DefaultValue,
8855
							padding: 0,
8856
							anchor: '80%'
8857
						});
8858
				}
8859
				if (isDesk) {
8860
					if (rec.Column == 1) {
8861
						col1.push(formfield);
8862
					} else {
8863
						col2.push(formfield);
8864
					}
8865
				} else {
8866
					col1.push(formfield);
8867
				}
8868

    
8869
			});
8870
			//set allTable
8871
			this.setAllTableName(allTable);
8872
		}
8873

    
8874
		Ext.applyIf(me, {
8875
			items: [{
8876
					bodyPadding: 0,
8877
					width: 400,
8878
					margin: '10 5 3 30',
8879
					items: col1
8880
				}, {
8881
					bodyPadding: 0,
8882
					width: 400,
8883
					margin: '10 5 3 30',
8884
					items: col2
8885
				}, {
8886
					width: 150,
8887
					//margin: '10 5 3 30',
8888
					items: [{
8889
							xtype: 'image',
8890
							id: 'imageusermd',
8891
							name: 'imageusermd',
8892
							width: 120,
8893
							height: 150,
8894
							padding: 5,
8895
							border: true,
8896
							src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8897
						}
8898
					]
8899
				}
8900
			],
8901
		});
8902
		me.callParent(arguments);
8903

    
8904
	}
8905
});
8906
/*Add Taufan (Header Master Data For ERP)*/
8907
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDLogistic', {
8908
	extend: 'Ext.form.Panel',
8909
	alias: ['widget.MinovaHeadermdLogistic', 'widget.MinovaHeaderMDLogistic', 'widget.minovaheadermdlogistic'],
8910
	tablenameheader: undefined,
8911
	keyid: undefined,
8912
	allTableName: undefined,
8913
	param: undefined,
8914
	resizable: true,
8915
	autoScroll: true,
8916
	minHeight: 20,
8917
	layout: 'column',
8918
	name: 'HeaderMDLogistic',
8919
	getAllTableName: function () {
8920
		return this.allTableName;
8921
	},
8922
	setAllTableName: function (value) {
8923
		var me = this;
8924
		me.allTableName = value;
8925
		return me;
8926
	},
8927
	listeners: {
8928
		afterrender: function (me) {
8929
			var nowDate = MinovaUtil.GetNowDate()
8930
				var allTbl = me.getAllTableName();
8931
			var splitTable = allTbl.split(',')
8932
				splitTable.forEach(function (tbl) {
8933
					var nowDate = MinovaUtil.GetNowDate();
8934
					var parameter = me.keyid + '[=]' + getParam("KeyValue");
8935
					Ext.Ajax.request({
8936
						method: 'POST',
8937
						url: '/UserControl/GetStore',
8938
						params: {
8939
							tableName: tbl,
8940
							param: parameter
8941
						},
8942
						success: function (response) {
8943
							var results = Ext.decode(response.responseText);
8944
							hasil = results.data;
8945
							if (hasil.length > 0) {
8946
								me.getForm().setValues(hasil[0]);
8947
							}
8948
						}
8949
					});
8950
				});
8951
		}
8952
	},
8953
	initComponent: function () {
8954
		var me = this;
8955
		var col1 = [];
8956
		var col2 = [];
8957
		var hasil = null;
8958
		var LangId = localStorage.LangId;
8959
		var allTable = null;
8960
		var tbl = null;
8961
		var tblTemp = null;
8962
		var nowDate = MinovaUtil.GetNowDate();
8963
		var Photo = 'nophoto.gif';
8964
		var hasil = undefined;
8965
		var parameter = me.keyid + '[=]' + getParam("KeyValue");
8966
		Ext.Ajax.request({
8967
			method: 'POST',
8968
			async: false,
8969
			url: '/UserControl/GetStore',
8970
			params: {
8971
				tableName: me.tablenameheader,
8972
				param: parameter
8973
			},
8974
			success: function (response) {
8975
				var results = Ext.decode(response.responseText);
8976
				hasil = results.data;
8977
				if (hasil.length > 0) {
8978
					dataPhoto = hasil[0].Photo
8979
						if (dataPhoto != "") {
8980
							Photo = dataPhoto;
8981
						}
8982
				}
8983
			}
8984
		});
8985
		Ext.Ajax.request({
8986
			async: false,
8987
			method: 'POST',
8988
			url: '/UserControl/GetStore',
8989
			params: {
8990
				tableName: 'PDSBS0009',
8991
				param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8992
			},
8993
			success: function (response) {
8994
				hasil = Ext.decode(response.responseText).data;
8995
			}
8996
		});
8997
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8998
		if (hasil.length > 0) {
8999
			Ext.each(hasil, function (rec) {
9000
				tblTemp = rec.TableName;
9001
				if (tbl != tblTemp) {
9002
					tbl = tblTemp;
9003
					if (allTable == null) {
9004
						allTable = tbl
9005
					} else {
9006
						allTable = allTable + ',' + tbl
9007
					}
9008
				}
9009
				if (rec.TableRef != '') {
9010
					valueField = null;
9011
					displayValue = null;
9012
					Ext.Ajax.request({
9013
						async: false,
9014
						method: 'POST',
9015
						url: '/UserControl/GetStore',
9016
						params: {
9017
							tableName: 'SDATATABLEFIELD',
9018
							param: 'TableName[equal]' + rec.TableRef
9019
						},
9020
						success: function (response) {
9021
							var results = Ext.decode(response.responseText);
9022
							data_ = results.data;
9023
							if (data_ != undefined) {
9024
								valueField_ = $.grep(data_, function (r) {
9025
										return r.ValueField == '1'
9026
									});
9027
								if (valueField_.length > 0) {
9028
									valueField = valueField_[0].FieldName
9029
								}
9030
								displayValue_ = $.grep(data_, function (r) {
9031
										return r.DisplayValue == '1'
9032
									});
9033
								if (displayValue_.length > 0) {
9034
									displayValue = displayValue_[0].FieldName
9035
								}
9036
							}
9037
						}
9038
					});
9039

    
9040
					formfield = new Ext.form.Display({
9041
							fieldLabel: rec.ScreenCaption,
9042
							name: rec.FieldName,
9043
							padding: 0,
9044
							labelCls: 'label-minova',
9045
							labelWidth: 150,
9046
							anchor: '80%',
9047
							store: Ext.create('Ext.data.Store', {
9048
								storeId: 'storeDisplay' + rec.FieldName,
9049
								proxy: {
9050
									method: 'POST',
9051
									type: 'ajax',
9052
									extraParams: {
9053
										tableName: rec.TableRef,
9054
										param: ''
9055
									},
9056
									reader: {
9057
										type: 'json',
9058
										root: 'data',
9059
										totalProperty: 'data[0].TotalCount'
9060
									}
9061
								}
9062
							}),
9063
							listeners: {
9064
								afterrender: function (f) {
9065
									var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
9066
									var ParamCombo = rec.ParamCombo;
9067
									var param = '';
9068
									Ext.Ajax.request({
9069
										method: 'POST',
9070
										async: false,
9071
										url: '/UserControl/GetStore',
9072
										params: {
9073
											tableName: rec.TableRef,
9074
											param: param
9075
										},
9076
										success: function (response) {
9077
											var results = Ext.decode(response.responseText);
9078
											store.loadData(results.data);
9079
										}
9080
									});
9081
								},
9082
								change: function (f) {
9083
									var display = this.displayField;
9084
									var value = this.getValue();
9085
									var st = f.store
9086
										var r = st.findRecord(f.valueField, f.value)
9087
										if (r != null) {
9088
											f.setRawValue(r.get(f.displayField))
9089
										} else {
9090
											f.setRawValue(f.value);
9091
										}
9092
								}
9093
							},
9094
							queryMode: 'local',
9095
							displayField: displayValue,
9096
							valueField: valueField,
9097
						});
9098
				} else {
9099
					formfield = new Ext.form.Display({
9100
							fieldLabel: rec.ScreenCaption,
9101
							name: rec.FieldName,
9102
							labelCls: 'label-minova',
9103
							labelWidth: 150,
9104
							padding: 0,
9105
							anchor: '80%'
9106
						});
9107
				}
9108
				if (isDesk) {
9109
					if (rec.Column == 1) {
9110
						col1.push(formfield);
9111
					} else {
9112
						col2.push(formfield);
9113
					}
9114
				} else {
9115
					col1.push(formfield);
9116
				}
9117

    
9118
			});
9119
			this.setAllTableName(allTable);
9120
		}
9121
		Ext.applyIf(me, {
9122
			items: [{
9123
					bodyPadding: 0,
9124
					width: 400,
9125
					margin: '10 5 3 30',
9126
					items: col1
9127
				}, {
9128
					bodyPadding: 0,
9129
					width: 400,
9130
					margin: '10 5 3 30',
9131
					items: col2
9132
				}, {
9133
					width: 150,
9134
					items: [{
9135
							xtype: 'image',
9136
							id: 'imageusermd',
9137
							name: 'imageusermd',
9138
							width: 120,
9139
							height: 150,
9140
							padding: 5,
9141
							border: true,
9142
							src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
9143
						}
9144
					]
9145
				}
9146
			]
9147
		});
9148
		me.callParent(arguments);
9149
	}
9150
});
9151
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateTimeColumn', {
9152
	extend: 'Ext.grid.column.Column',
9153
	alias: ['widget.minovadatetimecolumn'],
9154
	alternateClassName: 'Ext.grid.MinovaDateTimeColumn',
9155
	undefinedText: '&#160;',
9156
	defaultRenderer: function (value) {
9157
		//hamid200916
9158
		//if (value === undefined) {
9159
		if (value === "") {
9160
			return this.undefinedText;
9161
			//end
9162
		}
9163

    
9164
		var d = value.substring(6, 8);
9165
		var m = value.substring(4, 6);
9166
		var y = value.substring(0, 4);
9167
		var h = value.substring(8, 10);
9168
		var mt = value.substring(10, 12);
9169
		var s = value.substring(12, 14);
9170
		var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
9171
		return hasil;
9172
	}
9173
});
9174
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateColumn', {
9175
	extend: 'Ext.grid.column.Column',
9176
	alias: ['widget.minovadatecolumn'],
9177
	alternateClassName: 'Ext.grid.MinovaDateColumn',
9178
	undefinedText: '&#160;',
9179
	defaultRenderer: function (value) {
9180
		if (value === "" || value === undefined || value === null) {
9181
			return "";
9182
		}
9183
		var d = value.substring(6, 8);
9184
		var m = value.substring(4, 6);
9185
		var y = value.substring(0, 4);
9186
		var hasil = d + '/' + m + '/' + y;
9187
		return hasil;
9188
	}
9189
});
9190
Ext.define('MinovaUtil.MinovaES.MinovaComboColumn', {
9191
	extend: 'Ext.grid.column.Column',
9192
	alias: ['widget.minovacombocolumn'],
9193
	initComponent: function () {
9194
		this.callParent(arguments);
9195
	},
9196
	defaultRenderer: function (value) {
9197
		if (typeof(this.store) !== 'object') {
9198
			Ext.data.StoreManager.lookup(this.store).load();
9199
			this.store = Ext.data.StoreManager.lookup(this.store);
9200
		}
9201
		var idx = this.store.findExact(this.valueField, value);
9202
		if (this.store.getAt(idx)) {
9203
			var result = this.store.getAt(idx).get(this.displayField);
9204
			value = result ? result : value;
9205
		}
9206
		return value;
9207
	}
9208
});
9209
//atien
9210
Ext.define('MinovaUtil.MinovaES.MinovaAmountColumn', {
9211
	extend: 'Ext.grid.column.Column',
9212
	alias: ['widget.minovaamountcolumn'],
9213
	initComponent: function () {
9214
		this.callParent(arguments);
9215
	},
9216
	defaultRenderer: function (value) {
9217
		if (value != "") {
9218
			Ext.Ajax.request({
9219
				async: false,
9220
				method: 'POST',
9221
				url: '/Devt/DecryptData',
9222
				params: {
9223
					dt: value
9224

    
9225
				},
9226
				success: function (response) {
9227
					var results = Ext.decode(response.responseText);
9228
					value = results.data;
9229
					Ext.util.Format.thousandSeparator = "."
9230

    
9231
						value = Ext.util.Format.number(value, '0,000');
9232
				}
9233
			});
9234
		}
9235

    
9236
		return value;
9237
	}
9238
});
9239
//end amount column
9240
//hamid200916
9241
Ext.define('MinovaUtil.MinovaES.MinovaMDApplicant', {
9242
	extend: 'Ext.form.Panel',
9243
	alias: ['widget.minovamdApp', 'widget.MinovaMDApplicant'],
9244
	controller: 'recruitment-controller',
9245
	tableName: undefined, //nama tabel
9246
	param: undefined, //param query
9247
	pagesize: undefined,
9248
	storename: undefined,
9249
	titleform: undefined,
9250
	titlegrid: undefined,
9251
	heightgrid: undefined,
9252
	heightform: undefined,
9253
	iseditform: undefined,
9254
	lastheightform: undefined,
9255
	layoutType: undefined,
9256
	lastpage: undefined,
9257
	lastTitle: undefined,
9258
	getLastTitle: function () {
9259
		return this.lastTitle;
9260
	},
9261
	setLastTitle: function (value) {
9262
		var me = this;
9263
		me.lastTitle = value;
9264
		return me;
9265
	},
9266
	getLastpage: function () {
9267
		return this.lastpage;
9268
	},
9269
	setLastpage: function (value) {
9270
		var me = this;
9271
		me.lastpage = value;
9272
		return me;
9273
	},
9274
	getLayoutType: function () {
9275
		return this.layoutType;
9276
	},
9277
	setLayoutType: function (value) {
9278
		var me = this;
9279
		me.layoutType = value;
9280
		return me;
9281
	},
9282
	getLastheightform: function () {
9283
		return this.lastheightform;
9284
	},
9285
	setLastheightform: function (value) {
9286
		var me = this;
9287
		me.lastheightform = value;
9288
		return me;
9289
	},
9290

    
9291
	getIsEditform: function () {
9292
		return this.iseditform;
9293
	},
9294
	setIsEditform: function (value) {
9295
		var me = this;
9296
		me.iseditform = value;
9297
		return me;
9298
	},
9299
	initComponent: function () {
9300
		var me = this;
9301
		var storename = me.storename;
9302
		if (storename == "" || storename == undefined) {
9303
			storename = "store" + me.tableName;
9304
		}
9305
		var isHired = false;
9306
		nowDate = MinovaUtil.GetNowDate();
9307
		Ext.Ajax.request({
9308
			async: false,
9309
			method: 'POST',
9310
			url: '/UserControl/GetStore',
9311
			params: {
9312
				tableName: 'PHRRC0002',
9313
				param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
9314

    
9315
			},
9316
			success: function (response) {
9317
				var results = Ext.decode(response.responseText);
9318
				dataForm = results.data;
9319
				//cek is hired or blacklist
9320
				dataForm_ = $.grep(dataForm, function (r) {
9321
						return r.ApplicantStatus == '05'
9322
					});
9323
				if (dataForm_.length == 0) {
9324
					dataForm_ = $.grep(dataForm, function (r) {
9325
							return r.ApplicantStatus == '99'
9326
						});
9327
				}
9328
				if (dataForm_ != null && dataForm_.length > 0) {
9329
					isHired = true;
9330
				}
9331
			}
9332
		});
9333

    
9334
		var tableName = me.tableName;
9335
		Ext.applyIf(me, {
9336
			items: [{
9337
					layoutType: "MinovaGridForm",
9338
					title: me.titlegrid,
9339
					xtype: "minovagrid1",
9340
					tableName: tableName, // nama tebel/dataset
9341
					name: "MinovaGridFormGrid",
9342
					param: me.param, // parameter filteran
9343
					pagesize: me.pagesize, // jumlah record yang muncul per page
9344
					storename: storename, //nama store bebas
9345
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9346
					height: 330,
9347
					bodyPadding: 0,
9348
					tbar: [{
9349

    
9350
							xtype: 'button',
9351
							text: 'Action',
9352
							name: 'actionGrid',
9353
							hidden: isHired,
9354
							menu: [{
9355
									text: 'Add',
9356
									name: 'addGrid',
9357
									action: 'CRUDaddNewRecord',
9358
									style: 'font-family: FontAwesome',
9359
									itemId: 'AddData',
9360
									iconCls: 'fa-plus-circle',
9361
									hidden: isHired
9362

    
9363
								}, {
9364
									text: 'Copy',
9365
									name: 'CopyGrid',
9366
									iconCls: 'fa-copy',
9367
									style: 'font-family: FontAwesome',
9368
									hidden: isHired
9369
								}, {
9370
									text: 'Edit',
9371
									name: 'EditGrid',
9372
									iconCls: 'fa-edit',
9373
									style: 'font-family: FontAwesome',
9374
									hidden: isHired
9375
								}, {
9376
									text: 'Delete',
9377
									name: 'DeleteGrid',
9378
									hidden: true,
9379
									iconCls: 'fa-trash-o',
9380
									style: 'font-family: FontAwesome',
9381
								}
9382
							],
9383
							listeners: {
9384
								afterender: function () {
9385
									var me = this;
9386
									nowDate = MinovaUtil.GetNowDate();
9387
									var isHired = false;
9388
									Ext.Ajax.request({
9389
										async: false,
9390
										method: 'POST',
9391
										url: '/UserControl/GetStore',
9392
										params: {
9393
											tableName: 'PHRRC0027',
9394
											param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID") + ',ActivityType[=]8'
9395

    
9396
										},
9397
										success: function (response) {
9398
											var results = Ext.decode(response.responseText);
9399
											dataForm = results.data;
9400
											if (dataForm != null) {
9401
												isHired = true;
9402
											}
9403
										}
9404
									});
9405
									if (isHired) {
9406
										me.setHidden(true);
9407
									} else {
9408
										me.setHidden(false);
9409
									}
9410

    
9411
								},
9412

    
9413
							},
9414
						}, {
9415
							xtype: 'tbfill'
9416
						}, {
9417
							text: 'Clear Filters',
9418
							tooltip: 'Clear all filters',
9419
							name: 'clearbtn',
9420
							handler: function () {
9421
								var tolbar = this.up()
9422
									var grid_ = tolbar.up()
9423
									grid_.filters.clearFilters()
9424
							}
9425
						}, ],
9426

    
9427
					dockedItems: [{
9428
							xtype: 'pagingtoolbar',
9429
							store: storename, // harus sama dengan naa store diatas
9430
							dock: 'bottom', //posisi paging
9431
							pageSize: me.pagesize,
9432
							displayInfo: true
9433
						}
9434
					],
9435

    
9436
				}, {
9437
					xtype: 'minovaform',
9438
					name: "MinovaGridFormDisplay",
9439
					tableName: tableName, // nama tabel /dataset
9440
					isLookup: '', // 1 or 'Y' for lookup
9441
					isDisplay: true, // true== form is displayfield
9442
				}, {
9443
					xtype: 'minovaform',
9444
					name: "MinovaGridFormEdit",
9445
					tableName: tableName, // nama tabel /dataset
9446
					isLookup: '', // 1 or 'Y' for lookup
9447
					isDisplay: false, // true== form is displayfield
9448
				}
9449
			]
9450
		});
9451
		me.callParent(arguments);
9452
	}
9453
});
9454
//end
9455

    
9456
Ext.define('MinovaUtil.MinovaES.MinovaMD', {
9457
	extend: 'Ext.form.Panel',
9458
	alias: ['widget.minovamd', 'widget.MinovaMD'],
9459
	controller: 'pa-controller',
9460
	tableName: undefined, //nama tabel
9461
	param: undefined, //param query
9462
	pagesize: undefined,
9463
	storename: undefined,
9464
	titleform: undefined,
9465
	titlegrid: undefined,
9466
	heightgrid: undefined,
9467
	heightform: undefined,
9468
	iseditform: undefined,
9469
	lastheightform: undefined,
9470
	layoutType: undefined,
9471
	lastpage: undefined,
9472
	lastTitle: undefined,
9473
	getLastTitle: function () {
9474
		return this.lastTitle;
9475
	},
9476
	setLastTitle: function (value) {
9477
		var me = this;
9478
		me.lastTitle = value;
9479
		return me;
9480
	},
9481
	getLastpage: function () {
9482
		return this.lastpage;
9483
	},
9484
	setLastpage: function (value) {
9485
		var me = this;
9486
		me.lastpage = value;
9487
		return me;
9488
	},
9489
	getLayoutType: function () {
9490
		return this.layoutType;
9491
	},
9492
	setLayoutType: function (value) {
9493
		var me = this;
9494
		me.layoutType = value;
9495
		return me;
9496
	},
9497
	getLastheightform: function () {
9498
		return this.lastheightform;
9499
	},
9500
	setLastheightform: function (value) {
9501
		var me = this;
9502
		me.lastheightform = value;
9503
		return me;
9504
	},
9505

    
9506
	getIsEditform: function () {
9507
		return this.iseditform;
9508
	},
9509
	setIsEditform: function (value) {
9510
		var me = this;
9511
		me.iseditform = value;
9512
		return me;
9513
	},
9514
	initComponent: function () {
9515
		var me = this;
9516
		var storename = me.storename;
9517
		if (storename == "" || storename == undefined) {
9518
			storename = "store" + me.tableName;
9519
		}
9520
		var tableName = me.tableName;
9521
		Ext.applyIf(me, {
9522
			items: [{
9523
					layoutType: "MinovaGridForm",
9524
					title: me.titlegrid,
9525
					xtype: "minovagrid1",
9526
					tableName: tableName, // nama tebel/dataset
9527
					name: "MinovaGridFormGrid",
9528
					param: me.param, // parameter filteran
9529
					pagesize: me.pagesize, // jumlah record yang muncul per page
9530
					storename: storename, //nama store bebas
9531
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9532
					height: 330,
9533
					bodyPadding: 0,
9534
					tbar: [{
9535
							xtype: 'button',
9536
							text: 'Action',
9537
							name: 'actionGrid',
9538
							menu: [{
9539
									text: 'Add',
9540
									name: 'addGrid',
9541
									action: 'CRUDaddNewRecord',
9542
									style: 'font-family: FontAwesome',
9543
									itemId: 'AddData',
9544
									iconCls: 'fa-plus-circle',
9545

    
9546
								}, {
9547
									text: 'Copy',
9548
									name: 'CopyGrid',
9549
									iconCls: 'fa-copy',
9550
									style: 'font-family: FontAwesome',
9551
								}, {
9552
									text: 'Edit',
9553
									name: 'EditGrid',
9554
									iconCls: 'fa-edit',
9555
									style: 'font-family: FontAwesome',
9556
								}, {
9557
									text: 'Delete',
9558
									name: 'DeleteGrid',
9559
									hidden: true,
9560
									iconCls: 'fa-trash-o',
9561
									style: 'font-family: FontAwesome',
9562
								}
9563
							]
9564
						}, {
9565
							xtype: 'tbfill'
9566
						}, {
9567
							text: 'Clear Filters',
9568
							tooltip: 'Clear all filters',
9569
							name: 'clearbtn',
9570
							handler: function () {
9571
								var tolbar = this.up()
9572
									var grid_ = tolbar.up()
9573
									grid_.filters.clearFilters()
9574
							}
9575
						}, ],
9576

    
9577
					dockedItems: [{
9578
							xtype: 'pagingtoolbar',
9579
							store: storename, // harus sama dengan naa store diatas
9580
							dock: 'bottom', //posisi paging
9581
							pageSize: me.pagesize,
9582
							displayInfo: true
9583
						}
9584
					],
9585

    
9586
				}, {
9587
					xtype: 'minovaform',
9588
					name: "MinovaGridFormDisplay",
9589
					tableName: tableName, // nama tabel /dataset
9590
					isLookup: '', // 1 or 'Y' for lookup
9591
					isDisplay: true, // true== form is displayfield
9592
				}, {
9593
					xtype: 'minovaform',
9594
					name: "MinovaGridFormEdit",
9595
					tableName: tableName, // nama tabel /dataset
9596
					isLookup: '', // 1 or 'Y' for lookup
9597
					isDisplay: false, // true== form is displayfield
9598
				}
9599
			]
9600
		});
9601
		me.callParent(arguments);
9602
	}
9603
});
9604

    
9605
Ext.define('MinovaUtil.MinovaES.MinovaCustomization', {
9606
	extend: 'Ext.form.Panel',
9607
	alias: ['widget.minovacustomization', 'widget.MinovaCustomization'],
9608
	controller: 'treeCustomization',
9609
	tableName: undefined, //nama tabel
9610
	param: undefined, //param query
9611
	pagesize: undefined,
9612
	storename: undefined,
9613
	titleform: undefined,
9614
	titlegrid: undefined,
9615
	heightgrid: undefined,
9616
	heightform: undefined,
9617
	iseditform: undefined,
9618
	lastheightform: undefined,
9619
	layoutType: undefined,
9620
	lastpage: undefined,
9621
	lastTitle: undefined,
9622
	collapsibleForm: undefined,
9623
	getLastTitle: function () {
9624
		return this.lastTitle;
9625
	},
9626
	setLastTitle: function (value) {
9627
		var me = this;
9628
		me.lastTitle = value;
9629
		return me;
9630
	},
9631
	getLastpage: function () {
9632
		return this.lastpage;
9633
	},
9634
	setLastpage: function (value) {
9635
		var me = this;
9636
		me.lastpage = value;
9637
		return me;
9638
	},
9639
	getLayoutType: function () {
9640
		return this.layoutType;
9641
	},
9642
	setLayoutType: function (value) {
9643
		var me = this;
9644
		me.layoutType = value;
9645
		return me;
9646
	},
9647
	getLastheightform: function () {
9648
		return this.lastheightform;
9649
	},
9650
	setLastheightform: function (value) {
9651
		var me = this;
9652
		me.lastheightform = value;
9653
		return me;
9654
	},
9655

    
9656
	getIsEditform: function () {
9657
		return this.iseditform;
9658
	},
9659
	setIsEditform: function (value) {
9660
		var me = this;
9661
		me.iseditform = value;
9662
		return me;
9663
	},
9664
	initComponent: function () {
9665
		var me = this;
9666
		var storename = me.storename;
9667
		if (storename == "" || storename == undefined) {
9668
			storename = "store" + me.tableName;
9669
		}
9670
		var tableName = me.tableName;
9671
		var collapsibleForm_ = me.collapsibleForm;
9672
		// if (!collapsibleForm_) {
9673
		//  collapsibleForm_ = false;
9674
		//}
9675
		Ext.applyIf(me, {
9676
			items: [{
9677
					layoutType: "MinovaGridForm",
9678
					title: me.titlegrid,
9679
					xtype: "minovagrid1",
9680
					tableName: tableName, // nama tebel/dataset
9681
					name: "MinovaGridFormGrid",
9682
					param: me.param, // parameter filteran
9683
					pagesize: me.pagesize, // jumlah record yang muncul per page
9684
					storename: storename, //nama store bebas
9685
					isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9686
					height: 480,
9687
					bodyPadding: 0,
9688
					tbar: [{
9689
							xtype: 'button',
9690
							text: 'Action',
9691
							name: 'actionGrid',
9692
							menu: [{
9693
									text: 'Add',
9694
									name: 'addGrid',
9695
									action: 'CRUDaddNewRecord',
9696
									style: 'font-family: FontAwesome',
9697
									itemId: 'AddData',
9698
									iconCls: 'fa-plus-circle',
9699

    
9700
								}, {
9701
									text: 'Copy',
9702
									name: 'CopyGrid',
9703
									iconCls: 'fa-copy',
9704
									style: 'font-family: FontAwesome',
9705
								}, {
9706
									text: 'Edit',
9707
									name: 'EditGrid',
9708
									iconCls: 'fa-edit',
9709
									style: 'font-family: FontAwesome',
9710
								}, {
9711
									text: 'Delete',
9712
									name: 'DeleteGrid',
9713
									hidden: true,
9714
									iconCls: 'fa-trash-o',
9715
									style: 'font-family: FontAwesome',
9716
								}
9717
							]
9718
						}, {
9719
							xtype: 'tbfill'
9720
						}, {
9721
							text: 'Search',
9722
							tooltip: 'Search',
9723
							tableName: tableName,
9724
							name: 'btnSearchCust',
9725
							handler: function () {
9726
								//var tolbar = this.up()
9727
								//var grid_ = tolbar.up()
9728
								//alert(this.tableName)
9729

    
9730
							}
9731

    
9732
						}, {
9733
							text: 'Import/Export',
9734
							tooltip: 'Import/Export',
9735
							name: 'Import/Exportbtn',
9736

    
9737
						}, {
9738
							text: 'Clear Filters',
9739
							tooltip: 'Clear all filters',
9740
							name: 'clearbtn',
9741
							handler: function () {
9742
								var tolbar = this.up()
9743
									var grid_ = tolbar.up()
9744
									grid_.filters.clearFilters()
9745
							}
9746
						}
9747
					],
9748

    
9749
					dockedItems: [{
9750
							xtype: 'pagingtoolbar',
9751
							store: storename, // harus sama dengan naa store diatas
9752
							dock: 'bottom', //posisi paging
9753
							pageSize: me.pagesize,
9754
							displayInfo: true
9755
						}
9756
					],
9757

    
9758
				}, {
9759
					xtype: 'minovaform',
9760
					//layout: 'anchor',
9761
					height: '200',
9762
					collapsible: collapsibleForm_,
9763
					name: "MinovaGridFormDisplay",
9764
					tableName: tableName, // nama tabel /dataset
9765
					isLookup: '', // 1 or 'Y' for lookup
9766
					isDisplay: true, // true== form is displayfield
9767
				}, {
9768
					xtype: 'minovaform',
9769
					//layout:'anchor',
9770
					collapsible: collapsibleForm_,
9771
					name: "MinovaGridFormEdit",
9772
					tableName: tableName, // nama tabel /dataset
9773
					isLookup: '', // 1 or 'Y' for lookup
9774
					isDisplay: false, // true== form is displayfield
9775
				}
9776
			]
9777
		});
9778
		me.callParent(arguments);
9779
	}
9780
});
9781

    
9782
Ext.define('MinovaUtil.view.override.Panel', {
9783
	override: 'Ext.panel.Panel',
9784

    
9785
	print: function (pnl) {
9786

    
9787
		if (!pnl) {
9788
			pnl = this;
9789
		}
9790

    
9791
		// instantiate hidden iframe
9792

    
9793
		var iFrameId = "printerFrame";
9794
		var printFrame = Ext.get(iFrameId);
9795

    
9796
		if (printFrame == null) {
9797
			printFrame = Ext.getBody().appendChild({
9798
					id: iFrameId,
9799
					tag: 'iframe',
9800
					cls: 'x-hidden',
9801
					style: {
9802
						display: "none"
9803
					}
9804
				});
9805
		}
9806

    
9807
		var cw = printFrame.dom.contentWindow;
9808

    
9809
		// instantiate application stylesheets in the hidden iframe
9810

    
9811
		var stylesheets = "";
9812
		for (var i = 0; i < document.styleSheets.length; i++) {
9813
			stylesheets += Ext.String.format('<link rel="stylesheet" href="{0}" />', document.styleSheets[i].href);
9814
		}
9815

    
9816
		// various style overrides
9817
		stylesheets += ''.concat(
9818
			"<style>",
9819
			".x-panel-body {overflow: visible !important;}",
9820
			// experimental - page break after embedded panels
9821
			// .x-panel {page-break-after: always; margin-top: 10px}",
9822
			"</style>");
9823

    
9824
		// get the contents of the panel and remove hardcoded overflow properties
9825
		var markup = pnl.getEl().dom.innerHTML;
9826
		while (markup.indexOf('overflow: auto;') >= 0) {
9827
			markup = markup.replace('overflow: auto;', '');
9828
		}
9829

    
9830
		var str = Ext.String.format('<html><head>{0}</head><body>{1}</body></html>', stylesheets, markup);
9831

    
9832
		// output to the iframe
9833
		cw.document.open();
9834
		cw.document.write(str);
9835
		cw.document.close();
9836

    
9837
		// remove style attrib that has hardcoded height property
9838
		cw.document.getElementsByTagName('DIV')[0].removeAttribute('style');
9839

    
9840
		// print the iframe
9841
		cw.print();
9842

    
9843
		// destroy the iframe
9844
		Ext.fly(iFrameId).destroy();
9845

    
9846
	}
9847
});
9848

    
9849
Ext.define('MinovaUtil.MinovaES.MinovaRptForm', {
9850
	extend: 'Ext.form.Panel',
9851
	alias: ['widget.MinovaRptForm', 'widget.minovarptform'],
9852
	ReportID: undefined,
9853
	SelectionType: undefined,
9854
	layout: 'column',
9855
	//frame : true,
9856
	defaults: {
9857
		layout: 'form',
9858
		xtype: 'container',
9859
		defaultType: 'textfield',
9860
		style: 'width: 50%',
9861
		//height: 1000
9862
	},
9863
	initComponent: function () {
9864
		var col1 = [];
9865
		var col2 = [];
9866
		var me = this;
9867
		var hasil = null;
9868
		var hideButton_ = me.hideButton;
9869
		Ext.Ajax.request({
9870
			async: false,
9871
			method: 'POST',
9872
			url: '/UserControl/GetStore',
9873
			params: {
9874
				tableName: 'PDSBS0006',
9875
				//param : "ReportID='" + me.ReportID + "' and SelectionType='" + me.SelectionType + "' and LangId='" + localStorage.LangId + "'"
9876
				param: "ReportID='" + me.ReportID + "',SelectionType='" + me.SelectionType + "',LangId='" + localStorage.LangId + "'"
9877
			},
9878
			success: function (response) {
9879
				var results = Ext.decode(response.responseText);
9880
				hasil = results.data;
9881
				//count = hasil.length
9882
			}
9883
		});
9884
		if (hasil.length > 0) {
9885
			hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
9886
			var me = this;
9887
			Ext.each(hasil, function (rec) {
9888
				var null_ = true;
9889
				if (rec.IsRequired == '1') {
9890
					null_ = false;
9891
				} else {
9892
					null_ = true;
9893
				}
9894
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, false, me.tableName, me.isLookup);
9895
				if (isDesk) {
9896
					if (rec.ColumnNo == 1) {
9897
						col1.push(formfield);
9898
					} else {
9899
						col2.push(formfield);
9900
					}
9901
				} else {
9902
					col1.push(formfield);
9903
				}
9904
			});
9905

    
9906
		}
9907
		Ext.applyIf(me, {
9908
			items: [{
9909
					style: 'width: 50%',
9910
					items: col1
9911
				}, {
9912
					style: 'width: 50%',
9913
					items: col2
9914
				}
9915
			],
9916
		});
9917
		this.callParent();
9918
	}
9919
});
9920

    
9921
Ext.define('MinovaUtil.MinovaES.MinovaRptSimple', {
9922
	extend: 'Ext.form.Panel',
9923
	alias: ['widget.MinovaRptSimple', 'widget.minovarptsimple'],
9924
	//layout: 'column',
9925
	controller: 'basereports-controller',
9926
	ReportID: undefined,
9927
	hideButton: undefined,
9928
	reportLayout: 'simple',
9929
	getReportLayout: function () {
9930
		return this.reportLayout;
9931
	},
9932
	setReportLayout: function (value) {
9933
		var me = this;
9934
		me.reportLayout = value;
9935
		return me;
9936
	},
9937

    
9938
	initComponent: function () {
9939
		var me = this;
9940
		var ReportID = me.ReportID;
9941
		var hideButton_ = me.hideButton;
9942
		var hide_ = false;
9943
		if (hideButton_) {
9944
			hide_ = true;
9945
		}
9946
		Ext.applyIf(me, {
9947
			items: [{
9948
					//title: 'Report Selection',
9949
					xtype: 'minovarptform',
9950
					hideButton: hide_,
9951
					name: 'minovarptsimple',
9952
					ReportID: ReportID,
9953
					SelectionType: '1',
9954
					bodyPadding: 10,
9955
					buttons: [{
9956
							text: 'Search',
9957
							name: 'SearchRpt',
9958
							hidden: hide_
9959
						}, {
9960
							text: 'Variant',
9961
							style: 'font-family: FontAwesome',
9962
							hidden: hide_,
9963
							menu: [{
9964
									text: 'Load Variant',
9965
									name: 'loadvariant',
9966

    
9967
								}, {
9968
									text: 'Save Variant',
9969
									name: 'savevariant',
9970

    
9971
								}
9972
							],
9973

    
9974
						}
9975
					],
9976

    
9977
				},
9978
				//{
9979
				//    title: 'Result',
9980
				//    height: 530,
9981
				//    collapsible: false,
9982
				//    name: 'resultPanel',
9983
				//    layout: 'fit',
9984
				//    html: '<div  id="formMdDiv"></div>',
9985
				//}
9986
			],
9987
		});
9988
		this.callParent();
9989
	}
9990
});
9991

    
9992
Ext.define('MinovaUtil.MinovaES.MinovaRptAdvance', {
9993
	extend: 'Ext.form.Panel',
9994
	alias: ['widget.MinovaRptAdvance', 'widget.minovarptadvance'],
9995
	//layout: 'column',
9996
	controller: 'basereports-controller',
9997
	ReportID: undefined,
9998
	reportLayout: 'advance',
9999
	hideButton: undefined,
10000
	getReportLayout: function () {
10001
		return this.reportLayout;
10002
	},
10003
	setReportLayout: function (value) {
10004
		var me = this;
10005
		me.reportLayout = value;
10006
		return me;
10007
	},
10008

    
10009
	initComponent: function () {
10010
		var me = this;
10011
		var ReportID = me.ReportID;
10012
		var hideButton_ = me.hideButton;
10013
		var hide_ = false;
10014
		if (hideButton_) {
10015
			hide_ = true;
10016
		}
10017
		Ext.applyIf(me, {
10018
			items: [{
10019
					//title: 'Report Selection',
10020
					xtype: 'minovarptform',
10021
					hideButton: hide_,
10022
					name: 'minovarptadvance',
10023
					ReportID: ReportID,
10024
					SelectionType: '2',
10025
					bodyPadding: 10,
10026
					buttons: [{
10027
							text: 'Search',
10028
							name: 'SearchRpt',
10029
							hidden: hide_
10030
						}, {
10031
							text: 'Variant',
10032
							hidden: hide_,
10033
							style: 'font-family: FontAwesome',
10034
							menu: [{
10035
									text: 'Load Variant',
10036
									name: 'loadvariant',
10037

    
10038
								}, {
10039
									text: 'Save Variant',
10040
									name: 'savevariant',
10041

    
10042
								}
10043
							],
10044

    
10045
						}
10046
					],
10047

    
10048
				},
10049
				//{
10050
				//    title: 'Result',
10051
				//    height: 530,
10052
				//    collapsible: false,
10053
				//    name: 'resultPanel',
10054
				//    layout: 'fit',
10055
				//    html: '<div  id="formMdDiv"></div>',
10056
				//}
10057
			],
10058
		});
10059
		this.callParent();
10060
	}
10061
});
10062

    
10063
Ext.define('MinovaUtil.MinovaES.MinovaRptAll', {
10064
	extend: 'Ext.form.Panel',
10065
	alias: ['widget.MinovaRptAll', 'widget.minovarptall'],
10066
	//layout: 'column',
10067
	controller: 'basereports-controller',
10068
	ReportID: undefined,
10069
	titleSimle: undefined,
10070
	titleAdvance: undefined,
10071
	reportLayout: 'all',
10072
	hideButton: undefined,
10073
	getReportLayout: function () {
10074
		return this.reportLayout;
10075
	},
10076
	setReportLayout: function (value) {
10077
		var me = this;
10078
		me.reportLayout = value;
10079
		return me;
10080
	},
10081

    
10082
	initComponent: function () {
10083
		var me = this;
10084
		var ReportID = me.ReportID;
10085
		var hideButton_ = me.hideButton;
10086
		var hide_ = false;
10087
		if (hideButton_) {
10088
			hide_ = true;
10089
		}
10090
		Ext.applyIf(me, {
10091
			items: [{
10092
					xtype: 'tabpanel',
10093
					name: 'mainTab',
10094
					buttons: [{
10095
							text: 'Search',
10096
							name: 'SearchRpt',
10097
							hidden: hide_,
10098
						}, {
10099
							text: 'Variant',
10100
							hidden: hide_,
10101
							style: 'font-family: FontAwesome',
10102
							menu: [{
10103
									text: 'Load Variant',
10104
									name: 'loadvariant',
10105

    
10106
								}, {
10107
									text: 'Save Variant',
10108
									name: 'savevariant',
10109

    
10110
								}
10111
							],
10112

    
10113
						}
10114
					],
10115

    
10116
					items: [{
10117
							title: 'Simple',
10118
							xtype: 'minovarptform',
10119
							hideButton: hide_,
10120
							name: 'simpleForm',
10121
							ReportID: ReportID,
10122
							SelectionType: '1',
10123
							bodyPadding: 10,
10124

    
10125
						}, {
10126
							title: 'Advance',
10127
							xtype: 'minovarptform',
10128
							hideButton: hide_,
10129
							name: 'advanceForm',
10130
							ReportID: ReportID,
10131
							SelectionType: '2',
10132
							bodyPadding: 10,
10133

    
10134
						}
10135
					]
10136
				},
10137
				//{
10138
				//    title: 'Result',
10139
				//    height: 530,
10140
				//    collapsible: false,
10141
				//    name: 'resultPanel',
10142
				//    layout: 'fit',
10143
				//    html: '<div  id="formMdDiv"></div>',
10144
				//}
10145

    
10146
			],
10147
		});
10148
		this.callParent();
10149
	}
10150
});
10151

    
10152
Ext.define('MinovaUtil.MinovaES.MinovaGridRpt', {
10153
	extend: 'Ext.grid.Panel',
10154
	requires: ['Ext.grid.RowNumberer'],
10155
	alias: 'widget.minovagridrpt',
10156
	alternateClassName: 'Ext.grid.MinovaGridRpt',
10157
	tableName: undefined,
10158
	param: undefined,
10159
	//pagesize: undefined,
10160
	storename: undefined,
10161
	//layoutType: undefined,
10162
	enableLocking: true,
10163
	tbar: [{
10164
			xtype: 'tbfill'
10165
		}, {
10166
			text: 'Clear Filters',
10167
			tooltip: 'Clear all filters',
10168
			name: 'clearbtn',
10169
			handler: function () {
10170
				var tolbar = this.up()
10171
					var grid_ = tolbar.up()
10172
					grid_.filters.clearFilters()
10173
			}
10174
		}, ],
10175
	getTableName: function () {
10176
		return this.tableName;
10177
	},
10178

    
10179
	initComponent: function () {
10180
		var me = this;
10181
		var cols_ = [];
10182
		var fieldeditor = {};
10183
		var hasil = null;
10184
		var autoLoad = true;
10185
		var _url = 'GetAllField';
10186

    
10187
		Ext.Ajax.request({
10188
			async: false,
10189
			method: 'POST',
10190
			url: '/Devt/' + _url + '?tableName=' + me.tableName,
10191
			success: function (response) {
10192
				var results = Ext.decode(response.responseText);
10193
				hasil = results.data;
10194
			}
10195
		});
10196
		var structure = undefined;
10197
		Ext.Ajax.request({
10198
			async: false,
10199
			method: 'POST',
10200
			url: '/UserControl/GetStore',
10201
			params: {
10202
				tableName: 'SDATATABLEFIELD',
10203
				param: 'TableName[equal]' + me.tableName
10204

    
10205
			},
10206
			success: function (response) {
10207
				var results = Ext.decode(response.responseText);
10208
				data_ = results.data;
10209
				if (data_ != undefined) {
10210
					structure = data_;
10211
				}
10212
			}
10213
		});
10214
		if (hasil.length > 0) {
10215
			Ext.each(hasil, function (rec) {
10216
				// get field will be summary
10217

    
10218
				var summaryType = undefined;
10219
				if (structure != undefined) {
10220
					_field = $.grep(structure, function (r) {
10221
							return r.FieldName == rec.FieldName
10222
						});
10223
					summaryType = _field[0].SummaryType
10224
				}
10225

    
10226
				var null_ = null;
10227
				if (rec.IsPrimaryKey == true) {
10228
					null_ = false;
10229
				}
10230
				if (rec.IsRequired == true) {
10231
					null_ = false;
10232
				} else {
10233
					null_ = true;
10234
				}
10235
				if (rec.GridView == 1) {
10236
					switch (rec.FormatRef) {
10237
					case "date":
10238
						cols_.push({
10239
							xtype: 'minovadatecolumn',
10240
							text: rec.HeaderTitle,
10241
							dataIndex: rec.FieldName,
10242
							summaryType: summaryType,
10243
							width: 100,
10244
							filter: {
10245
								type: 'date',
10246
								itemDefaults: {
10247
									emptyText: 'Search for...'
10248
								}
10249
							}
10250
						});
10251
						break
10252
					case "amount":
10253
						cols_.push({
10254
							xtype: 'minovacurrancycolumn',
10255
							align: 'right',
10256
							text: rec.HeaderTitle,
10257
							dataIndex: rec.FieldName,
10258
							summaryType: summaryType,
10259
							width: 100,
10260
							filter: {
10261
								type: 'number',
10262
								itemDefaults: {
10263
									emptyText: 'Search for...'
10264
								}
10265
							}
10266
						});
10267
						break
10268
					case "datetime":
10269
						cols_.push({
10270
							xtype: 'minovadatetimecolumn',
10271
							text: rec.HeaderTitle,
10272
							dataIndex: rec.FieldName,
10273
							summaryType: summaryType,
10274
							width: 140,
10275
							filter: {
10276
								type: 'string',
10277
								itemDefaults: {
10278
									emptyText: 'Search for...'
10279
								}
10280
							}
10281
						});
10282
						break
10283
					default:
10284
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
10285
							cols_.push({
10286
								text: rec.HeaderTitle,
10287
								dataIndex: rec.FieldName,
10288
								summaryType: summaryType,
10289
								width: 100,
10290
								filter: {
10291
									type: 'string',
10292
									itemDefaults: {
10293
										emptyText: 'Search for...'
10294
									}
10295
								}
10296
							});
10297
						} else if (rec.TableRef != "") {
10298
							if (rec.TableRef != null) {
10299
								var valueField = null;
10300
								var displayValue = null;
10301
								Ext.Ajax.request({
10302
									async: false,
10303
									method: 'POST',
10304
									url: '/UserControl/GetStore',
10305
									params: {
10306
										tableName: 'SDATATABLEFIELD',
10307
										param: 'TableName[equal]' + rec.TableRef
10308
									},
10309
									success: function (response) {
10310
										var results = Ext.decode(response.responseText);
10311
										data_ = results.data;
10312
										if (data_ != undefined) {
10313
											valueField_ = $.grep(data_, function (r) {
10314
													return r.ValueField == '1'
10315
												});
10316
											valueField = valueField_[0].FieldName
10317
												displayValue_ = $.grep(data_, function (r) {
10318
													return r.DisplayValue == '1'
10319
												});
10320
											displayValue = displayValue_[0].FieldName
10321

    
10322
										}
10323
									}
10324
								});
10325
								var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
10326
								var count_ = 0;
10327
								if (store_) {
10328
									count_ = store_.count();
10329
								}
10330
								if (count_ == 0) {
10331
									Ext.create('Ext.data.Store', {
10332
										storeId: 'store_' + rec.FieldName,
10333
										autoLoad: true,
10334
										proxy: {
10335
											method: 'POST',
10336
											type: 'ajax',
10337
											url: '/UserControl/GetStore',
10338
											extraParams: {
10339
												tableName: rec.TableRef,
10340
												param: rec.ParamCombo
10341
											},
10342
											reader: {
10343
												type: 'json',
10344
												root: 'data',
10345
												totalProperty: 'data[0].TotalCount'
10346
											}
10347
										}
10348
									})
10349
								}
10350
								cols_.push({
10351
									xtype: 'minovacombocolumn',
10352
									TableRef: rec.TableRef,
10353
									text: rec.HeaderTitle,
10354
									summaryType: summaryType,
10355
									dataIndex: rec.FieldName,
10356
									valueField: valueField,
10357
									displayField: displayValue,
10358
									store: 'store_' + rec.FieldName,
10359
									filter: {
10360
										type: 'list',
10361
										itemDefaults: {
10362
											emptyText: 'Search for...'
10363
										}
10364
									}
10365
								});
10366
							}
10367

    
10368
						} else {
10369
							cols_.push({
10370
								text: rec.HeaderTitle,
10371
								dataIndex: rec.FieldName,
10372
								summaryType: summaryType,
10373
								filter: {
10374
									itemDefaults: {
10375
										emptyText: 'Search for...'
10376
									}
10377
								}
10378
							});
10379
						}
10380
						break
10381
					}
10382
				} else {
10383
					cols_.push({
10384
						text: rec.HeaderTitle,
10385
						dataIndex: rec.FieldName,
10386
						hidden: true,
10387
						filter: {
10388
							itemDefaults: {
10389
								emptyText: 'Search for...'
10390
							}
10391
						}
10392
					});
10393
				}
10394
			});
10395
		};
10396
		var param_ = me.param;
10397
		if (param_ == undefined) {
10398
			param_ = ''
10399
		}
10400
		var jsStoreGrid = new Ext.data.Store({
10401
				storeId: me.storename,
10402
				autoLoad: false,
10403
				//pageSize: me.pagesize,
10404
				proxy: {
10405
					method: 'POST',
10406
					type: 'ajax',
10407
					url: '/UserControl/GetStore',
10408
					//extraParams: {
10409
					//    tableName: me.tableName,
10410
					//    param: param_
10411
					//},
10412
					reader: {
10413
						type: 'json',
10414
						root: 'data',
10415
						totalProperty: 'totalRecords'
10416
					}
10417
				}
10418
			});
10419
		Ext.applyIf(me, {
10420
			autoScroll: true,
10421
			enableLocking: true,
10422
			lockedGridConfig: {
10423
				header: false,
10424
				collapsible: true,
10425
				width: 250,
10426
				forceFit: true,
10427
				listeners: {
10428
					render: function (grid) {
10429
						var pagingToolbar = grid.child('pagingtoolbar');
10430
						if (pagingToolbar) {
10431
							grid.remove(pagingToolbar, true);
10432
						}
10433
					}
10434
				}
10435
			},
10436
			listeners: {
10437
				viewready: function () {
10438
					if (autoLoad == true) {
10439
						this.getStore().loadPage(1);
10440
					}
10441

    
10442
				},
10443
				beforeedit: function () {
10444
					return false;
10445
				}
10446
			},
10447
			lockedViewConfig: {
10448
				scroll: 'horizontal'
10449
			},
10450
			viewConfig: {
10451
				emptyText: 'No Data Display',
10452
				deferEmptyText: false
10453
			},
10454
			//features: [{
10455
			//    ftype: 'summary'
10456
			//}],
10457
			columns: cols_,
10458

    
10459
			store: jsStoreGrid,
10460

    
10461
			plugins: [{
10462
					ptype: 'gridfilters'
10463
				},
10464

    
10465
			],
10466

    
10467
		});
10468
		me.callParent(arguments);
10469
	}
10470

    
10471
});
10472

    
10473
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGrid', {
10474
	extend: 'Ext.form.Panel',
10475
	alias: ['widget.MinovaEditAbleGrid', 'widget.Minovaeditablegrid', 'widget.minovaeditablegrid'],
10476
	requires: [
10477
		'Ext.grid.plugin.CellEditing',
10478
		'Ext.grid.RowNumberer',
10479
		'Ext.grid.Panel',
10480
	],
10481

    
10482
	//renderTo: 'panel-extjs',
10483
	anchor: '100%',
10484
	tableName: undefined,
10485
	hideButton: undefined,
10486
	multiSelect: undefined,
10487
	initComponent: function () {
10488
		var me = this;
10489
		var isLookup = me.isLookup;
10490
		var hide_ = false;
10491
		var widthLock = 250;
10492
		var checkSelection = '';
10493

    
10494
		if (me.hideButton == true) {
10495
			hide_ = true;
10496
		}
10497
		if (me.multiSelect) {
10498
			locking = false;
10499
			checkSelection = 'checkboxmodel';
10500
			widthLock = 40;
10501
		}
10502
		var tableName = me.tableName;
10503
		var cols = [];
10504
		var fieldStore = [];
10505
		var _url = 'GetAllField';
10506
		var hasil = null;
10507
		var height = me.height;
10508
		var storeID = 'store' + me.tableName;
10509
		var gridName = 'grid' + me.name;
10510
		if (me.storeName) {
10511
			storeID = me.storeName;
10512
		}
10513
		var LangID = MinovaUtil.GetLangID();
10514
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
10515
			Ext.Ajax.request({
10516
				async: false,
10517
				method: 'POST',
10518
				url: '/UserControl/GetStore',
10519
				params: {
10520
					tableName: 'PDSBS0007',
10521
					param: parameter
10522
				},
10523
				success: function (response) {
10524
					var results = Ext.decode(response.responseText);
10525
					hasil = results.data;
10526
				}
10527
			});
10528
		cols.push({
10529
			xtype: 'rownumberer'
10530
		});
10531
		var addData = 'var data={';
10532
		if (hasil.length > 0) {
10533
			Ext.each(hasil, function (rec) {
10534
				fieldStore.push(rec.FieldName);
10535
				if (rec.FieldName != 'Sequence') {
10536
					addData = addData + rec.FieldName + ":" + "'',";
10537
				}
10538

    
10539
				var null_ = null;
10540
				var ReadOnly_ = false;
10541
				if (rec.IsPrimaryKey == true) {
10542
					null_ = false;
10543
				}
10544
				if (rec.IsRequired == true) {
10545
					null_ = false;
10546
				} else {
10547
					null_ = true;
10548
				}
10549
				if (rec.ReadOnly == '1') {
10550
					ReadOnly_ = true;
10551
				}
10552
				var Hidden_ = false;
10553
				if (rec.ReadOnly == '1') {
10554
					ReadOnly_ = true;
10555
				}
10556

    
10557
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
10558
					Hidden_ = true;
10559
					null_ = true;
10560
				}
10561

    
10562
				if (rec.GridView == 1) {
10563
					switch (rec.FormatRef) {
10564
					case "date":
10565
						cols.push({
10566
							xtype: 'minovadatecolumn',
10567
							hidden: Hidden_,
10568
							text: rec.HeaderTitle,
10569
							dataIndex: rec.FieldName,
10570
							filter: {
10571
								itemDefaults: {
10572
									emptyText: 'Search for...',
10573

    
10574
								}
10575
							},
10576
							editor: {
10577
								allowBlank: null_,
10578
								xtype: 'datefield',
10579
								hideMode: 'visibility',
10580
								readOnly: ReadOnly_,
10581
								id: tableName + rec.FieldName,
10582
								fieldGrid: rec.FieldName,
10583
								nameTable: rec.TableName,
10584
							}
10585
						});
10586
						break
10587
					case "amount":
10588
						cols.push({
10589
							xtype: 'minovacurrancycolumn',
10590
							//renderer: Ext.util.Format.numberRenderer("0,0"),
10591
							text: rec.HeaderTitle,
10592
							align: 'right',
10593
							dataIndex: rec.FieldName,
10594
							hidden: Hidden_,
10595
							filter: {
10596
								itemDefaults: {
10597
									emptyText: 'Search for...'
10598
								}
10599
							},
10600
							editor: {
10601
								allowBlank: null_,
10602
								xtype: 'minovacurrencyfield',
10603
								//renderer: Ext.util.Format.numberRenderer("0,0"),
10604
								//vtype: 'validateDecimal',
10605
								readOnly: ReadOnly_,
10606
								id: tableName + rec.FieldName,
10607
								nameTable: rec.TableName,
10608
								fieldGrid: rec.FieldName,
10609
								fieldStyle: 'text-align:right;',
10610
								value: '0',
10611

    
10612
							}
10613
						});
10614
						break
10615
					case "time":
10616
						var DefaultValue = rec.DefaultValue;
10617
						if (DefaultValue == '') {
10618
							defaultValue = '00:00';
10619
						}
10620
						cols.push({
10621
							//xtype: 'minovatimecolumn',
10622
							xtype: 'timefield',
10623
							format: 'H:i',
10624
							submitFormat: 'Hi',
10625
							text: rec.HeaderTitle,
10626
							dataIndex: rec.FieldName,
10627
							hidden: Hidden_,
10628
							//renderer: Ext.util.Format.dateRenderer('G:i'),
10629
							filter: {
10630
								itemDefaults: {
10631
									emptyText: 'Search for...'
10632
								}
10633
							},
10634
							editor: {
10635
								allowBlank: null_,
10636
								xtype: 'timefield',
10637
								readOnly: ReadOnly_,
10638
								id: tableName + rec.FieldName,
10639
								format: 'H:i',
10640
								submitFormat: 'Hi',
10641
								increment: 5,
10642
								value: DefaultValue,
10643
								anchor: '100%',
10644
								listeners: {}
10645
								//renderer: Ext.util.Format.dateRenderer('G:i'),
10646
							}
10647
						});
10648
						break
10649
						//case "datetime":
10650
						//    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
10651
						//        cols.push({
10652
						//            xtype: 'minovadatetimecolumn',
10653
						//            text: rec.HeaderTitle,
10654
						//            dataIndex: rec.FieldName,
10655
						//            filter: {
10656
						//                itemDefaults: {
10657
						//                    emptyText: 'Search for...'
10658
						//                }
10659
						//            },
10660
						//            editor: {
10661
						//                allowBlank: null_,
10662
						//                xtype: 'textfield',
10663
						//            }
10664
						//        });
10665
						//    }
10666
						//    break
10667
					default:
10668
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
10669
							cols.push({
10670
								text: rec.HeaderTitle,
10671
								dataIndex: rec.FieldName,
10672
								width: 100,
10673
								filter: {
10674
									type: 'string',
10675
									itemDefaults: {
10676
										emptyText: 'Search for...'
10677
									}
10678
								}
10679
							});
10680
						} else if (rec.SearchType == '0') {
10681
							var valueField = null;
10682
							var displayValue = null;
10683
							var TableRef = undefined;
10684
							if (rec.TableRef != '') {
10685
								TableRef = rec.TableRef;
10686

    
10687
								Ext.Ajax.request({
10688
									async: false,
10689
									method: 'POST',
10690
									url: '/UserControl/GetStore',
10691
									params: {
10692
										tableName: 'SDATATABLEFIELD',
10693
										param: 'TableName[equal]' + rec.TableRef
10694
									},
10695
									success: function (response) {
10696
										var results = Ext.decode(response.responseText);
10697
										data_ = results.data;
10698
										if (data_ != undefined) {
10699
											valueField_ = $.grep(data_, function (r) {
10700
													return r.ValueField == '1'
10701
												});
10702
											valueField = valueField_[0].FieldName
10703
												displayValue_ = $.grep(data_, function (r) {
10704
													return r.DisplayValue == '1'
10705
												});
10706
											displayValue = displayValue_[0].FieldName
10707
										}
10708
									}
10709
								});
10710

    
10711
								//create Store
10712
								Ext.create('Ext.data.Store', {
10713
									storeId: 'store_' + me.tableName + rec.FieldName,
10714
									autoLoad: true,
10715
									proxy: {
10716
										method: 'POST',
10717
										type: 'ajax',
10718
										url: '/UserControl/GetStoreAuth',
10719
										extraParams: {
10720
											tableName: TableRef,
10721
											param: rec.ParamCombo,
10722
											menuId: MinovaUtil.GetMenuID()
10723
										},
10724
										reader: {
10725
											type: 'json',
10726
											root: 'data',
10727
											totalProperty: 'data[0].TotalCount'
10728
										}
10729
									}
10730
								});
10731
							} else if (rec.FixedValue != '') {
10732
								var storeData = [];
10733
								var str = rec.FixedValue;
10734
								var hasil = str.split('||');
10735
								hasil.forEach(function (h) {
10736
									store_ = h.split('=')
10737
										storeData.push({
10738
											code: store_[0],
10739
											desc: store_[1],
10740

    
10741
										});
10742
								});
10743

    
10744
								valueField = 'code';
10745
								displayValue = 'desc';
10746

    
10747
								Ext.create('Ext.data.Store', {
10748
									storeId: 'store_' + me.tableName + rec.FieldName,
10749
									autoLoad: true,
10750
									data: storeData
10751
								})
10752
							}
10753

    
10754
							cols.push({
10755
								xtype: 'minovacombocolumn',
10756
								hidden: Hidden_,
10757
								text: rec.HeaderTitle,
10758
								dataIndex: rec.FieldName,
10759
								valueField: valueField,
10760
								displayField: displayValue,
10761
								store: 'store_' + me.tableName + rec.FieldName,
10762
								editor: {
10763
									allowBlank: null_,
10764
									xtype: 'combobox',
10765
									readOnly: ReadOnly_,
10766
									id: tableName + rec.FieldName,
10767
									nameTable: rec.TableName,
10768
									fieldGrid: rec.FieldName,
10769
									valueField: valueField,
10770
									displayField: displayValue,
10771
									vtype: 'validateCombobox',
10772
									store: 'store_' + me.tableName + rec.FieldName,
10773
								},
10774
								filter: {
10775
									type: 'list',
10776
									itemDefaults: {
10777
										emptyText: 'Search for...'
10778
									}
10779
								}
10780
							});
10781

    
10782
						} else if (rec.SearchType == '5') {
10783
							var valueField = null;
10784
							var displayValue = null;
10785
							var AdditionaldisplayValue = null;
10786
							var TableRef = undefined;
10787
							if (rec.TableRef != '') {
10788
								TableRef = rec.TableRef;
10789
								Ext.Ajax.request({
10790
									async: false,
10791
									method: 'POST',
10792
									url: '/UserControl/GetStore',
10793
									params: {
10794
										tableName: 'SDATATABLEFIELD',
10795
										param: 'TableName[equal]' + rec.TableRef
10796
									},
10797
									success: function (response) {
10798
										var results = Ext.decode(response.responseText);
10799
										data_ = results.data;
10800
										if (data_ != undefined) {
10801
											valueField_ = $.grep(data_, function (r) {
10802
													return r.ValueField == '1'
10803
												});
10804
											if (valueField_.length > 0) {
10805
												valueField = valueField_[0].FieldName
10806
											}
10807

    
10808
											displayValue_ = $.grep(data_, function (r) {
10809
													return r.DisplayValue == '1' || r.DisplayValue == '2'
10810
												});
10811
											if (displayValue_.length > 0) {
10812
												displayValue = displayValue_[0].FieldName;
10813
											}
10814
											if (displayValue_.length >= 2) {
10815
												AdditionaldisplayValue = displayValue_[1].FieldName
10816
											}
10817
										}
10818
									}
10819
								});
10820
							}
10821
							Ext.create('Ext.data.Store', {
10822
								storeId: 'store_' + me.tableName + rec.FieldName,
10823
								autoLoad: true,
10824
								proxy: {
10825
									method: 'POST',
10826
									type: 'ajax',
10827
									url: '/UserControl/GetStoreAuth',
10828
									extraParams: {
10829
										tableName: TableRef,
10830
										param: rec.ParamCombo,
10831
										menuId: MinovaUtil.GetMenuID()
10832
									},
10833
									reader: {
10834
										type: 'json',
10835
										root: 'data',
10836
										totalProperty: 'data[0].TotalCount'
10837
									}
10838
								}
10839
							});
10840
							cols.push({
10841
								xtype: 'minovacombocolumn',
10842
								hidden: Hidden_,
10843
								text: rec.HeaderTitle,
10844
								dataIndex: rec.FieldName,
10845
								valueField: valueField,
10846
								displayField: displayValue,
10847
								store: 'store_' + me.tableName + rec.FieldName,
10848
								tpl: Ext.create('Ext.XTemplate',
10849
									'<ul class="x-list-plain"><tpl for=".">',
10850
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10851
									'</tpl></ul>'),
10852
								displayTpl: Ext.create('Ext.XTemplate',
10853
									'<tpl for=".">',
10854
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10855
									'</tpl>'),
10856
								editor: {
10857
									allowBlank: null_,
10858
									xtype: 'combobox',
10859
									readOnly: ReadOnly_,
10860
									id: rec.TableName + rec.FieldName,
10861
									nameTable: rec.TableName,
10862
									fieldGrid: rec.FieldName,
10863
									valueField: valueField,
10864
									displayField: displayValue,
10865
									store: 'store_' + me.tableName + rec.FieldName,
10866
									value: rec.DefaultValue,
10867
									tpl: Ext.create('Ext.XTemplate',
10868
										'<ul class="x-list-plain"><tpl for=".">',
10869
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10870
										'</tpl></ul>'),
10871
									displayTpl: Ext.create('Ext.XTemplate',
10872
										'<tpl for=".">',
10873
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10874
										'</tpl>')
10875
								},
10876
								renderer: function (value) {
10877
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
10878
									var index = store.find(valueField, value);
10879
									var val = "";
10880
									if (index != -1) {
10881
										var rc = store.getAt(index);
10882
										//val = rc.get(displayValue);
10883
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
10884
									} else {
10885
										val = value;
10886
									}
10887
									return val;
10888
								},
10889
								filter: {
10890
									type: 'list',
10891
									itemDefaults: {
10892
										emptyText: 'Search for...'
10893
									}
10894
								}
10895
							});
10896
						} else if (rec.SearchType == '2') {
10897
							var triger = (rec.TriggerCombo).split('$');
10898
							var targetField_ = triger[0];
10899
							var fieldValue_ = triger[1];
10900
							cols.push({
10901
								text: rec.HeaderTitle,
10902
								hidden: Hidden_,
10903
								dataIndex: rec.FieldName,
10904
								filter: {
10905
									itemDefaults: {
10906
										emptyText: 'Search for...'
10907
									}
10908
								},
10909
								editor: {
10910
									allowBlank: null_,
10911
									xtype: 'minovalookupgrid',
10912
									readOnly: ReadOnly_,
10913
									isGrid: true,
10914
									fieldTarget: targetField_,
10915
									fieldValue: fieldValue_,
10916
									isGrid: true,
10917
									id: tableName + rec.FieldName,
10918
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
10919
									triggerCls: 'x-form-search-trigger',
10920
									vtype: 'alphanum', // disable space
10921
									nameTable: rec.TableName,
10922
									fieldGrid: rec.FieldName,
10923
									LookupFunction: rec.LookupFunction,
10924
									listeners: {
10925
										change: function (val) {
10926
											var custumFunc = rec.SelectFunction;
10927
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10928
												Ext.Ajax.request({
10929
													async: false,
10930
													method: 'POST',
10931
													url: '/UserControl/GetStore',
10932
													params: {
10933
														tableName: 'PCMFUNC',
10934
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10935
													},
10936
													success: function (response) {
10937
														var results = Ext.decode(response.responseText);
10938
														data_ = results.data[0];
10939
														if (data_ != undefined) {
10940
															custumFunc = data_.FunctionCode;
10941
														}
10942
													}
10943
												});
10944
											}
10945
											if (custumFunc) {
10946
												eval(custumFunc)
10947
											}
10948
										}
10949
									}
10950
								}
10951
							});
10952
						} else if (rec.SearchType == '3') {
10953
							cols.push({
10954
								text: rec.HeaderTitle,
10955
								hidden: Hidden_,
10956
								dataIndex: rec.FieldName,
10957
								filter: {
10958
									itemDefaults: {
10959
										emptyText: 'Search for...'
10960
									}
10961
								},
10962
								editor: {
10963
									allowBlank: null_,
10964
									// xtype: 'minovalookuptreePopup',
10965
									xtype: 'MinovaLookupTree',
10966
									readOnly: ReadOnly_,
10967
									id: tableName + rec.FieldName,
10968
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
10969
									triggerCls: 'x-form-search-trigger',
10970
									vtype: 'alphanum', // disable space
10971
									treeSructure: rec.SearchFunction, //'O-O-P',
10972
									objClassValue: rec.ParamCombo, //'O',
10973
									nameTable: rec.TableName,
10974
									fieldGrid: rec.FieldName,
10975
									listeners: {
10976
										change: function (val) {
10977
											var custumFunc = rec.SelectFunction;
10978
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10979
												Ext.Ajax.request({
10980
													async: false,
10981
													method: 'POST',
10982
													url: '/UserControl/GetStore',
10983
													params: {
10984
														tableName: 'PCMFUNC',
10985
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10986
													},
10987
													success: function (response) {
10988
														var results = Ext.decode(response.responseText);
10989
														data_ = results.data[0];
10990
														if (data_ != undefined) {
10991
															custumFunc = data_.FunctionCode;
10992
														}
10993
													}
10994
												});
10995
											}
10996
											if (custumFunc) {
10997
												eval(custumFunc)
10998
											}
10999
										}
11000
									}
11001
								}
11002
							});
11003
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
11004
							var triger = (rec.TriggerCombo).split('&');
11005
							var targetField_ = triger[0];
11006
							var fieldValue_ = triger[0];
11007
							cols.push({
11008
								text: rec.HeaderTitle,
11009
								hidden: Hidden_,
11010
								dataIndex: rec.FieldName,
11011
								filter: {
11012
									itemDefaults: {
11013
										emptyText: 'Search for...'
11014
									}
11015
								},
11016
								editor: {
11017
									allowBlank: null_,
11018
									xtype: 'lookupemployee',
11019
									readOnly: ReadOnly_,
11020
									isGrid: true,
11021
									fieldTarget: targetField_,
11022
									fieldValue: fieldValue_,
11023
									isGrid: true,
11024
									id: tableName + rec.FieldName,
11025
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11026
									triggerCls: 'x-form-search-trigger',
11027
									vtype: 'alphanum', // disable space
11028
									nameTable: rec.TableName,
11029
									fieldGrid: rec.FieldName,
11030
									listeners: {
11031
										change: function (val) {
11032
											var custumFunc = rec.SelectFunction;
11033
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11034
												Ext.Ajax.request({
11035
													async: false,
11036
													method: 'POST',
11037
													url: '/UserControl/GetStore',
11038
													params: {
11039
														tableName: 'PCMFUNC',
11040
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11041
													},
11042
													success: function (response) {
11043
														var results = Ext.decode(response.responseText);
11044
														data_ = results.data[0];
11045
														if (data_ != undefined) {
11046
															custumFunc = data_.FunctionCode;
11047
														}
11048
													}
11049
												});
11050
											}
11051
											if (custumFunc) {
11052
												eval(custumFunc)
11053
											}
11054
										}
11055
									}
11056
								}
11057
							});
11058
						} else if (rec.SearchType == '4' && isLookup != true) {
11059
							cols.push({
11060

    
11061
								text: rec.HeaderTitle,
11062
								hidden: Hidden_,
11063
								dataIndex: rec.FieldName,
11064
								filter: {
11065
									itemDefaults: {
11066
										emptyText: 'Search for...'
11067
									}
11068
								},
11069
								editor: {
11070
									allowBlank: null_,
11071
									xtype: 'lookupemployee',
11072
									readOnly: ReadOnly_,
11073
									isGrid: true,
11074
									fieldTarget: targetField_,
11075
									fieldValue: fieldValue_,
11076
									isGrid: true,
11077
									id: tableName + rec.FieldName,
11078
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11079
									triggerCls: 'x-form-search-trigger',
11080
									vtype: 'alphanum', // disable space
11081
									nameTable: rec.TableName,
11082
									fieldGrid: rec.FieldName,
11083
									listeners: {
11084
										change: function (val) {
11085
											var custumFunc = rec.SelectFunction;
11086
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11087
												Ext.Ajax.request({
11088
													async: false,
11089
													method: 'POST',
11090
													url: '/UserControl/GetStore',
11091
													params: {
11092
														tableName: 'PCMFUNC',
11093
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11094
													},
11095
													success: function (response) {
11096
														var results = Ext.decode(response.responseText);
11097
														data_ = results.data[0];
11098
														if (data_ != undefined) {
11099
															custumFunc = data_.FunctionCode;
11100
														}
11101
													}
11102
												});
11103
											}
11104
											if (custumFunc) {
11105
												eval(custumFunc)
11106
											}
11107
										}
11108
									}
11109
								}
11110
							});
11111
						} else {
11112
							if (rec.FieldDataType == 3) { //add by taufan
11113
								cols.push({
11114
									text: rec.HeaderTitle,
11115
									hidden: Hidden_,
11116
									dataIndex: rec.FieldName,
11117
									filter: {
11118
										itemDefaults: {
11119
											emptyText: 'Search for...'
11120
										}
11121
									},
11122
									editor: {
11123
										allowBlank: null_,
11124
										xtype: 'textfield',
11125
										readOnly: ReadOnly_,
11126
										id: tableName + rec.FieldName,
11127
										nameTable: rec.TableName,
11128
										fieldGrid: rec.FieldName,
11129
										vtype: 'validateDecimal',
11130
										maxLength: rec.Length,
11131
										precision: rec.Prec,
11132
										fieldStyle: 'text-align:right;',
11133
										listeners: {
11134
											change: function (val) {
11135
												var custumFunc = null;
11136
												Ext.Ajax.request({
11137
													async: false,
11138
													method: 'POST',
11139
													url: '/UserControl/GetStore',
11140
													params: {
11141
														tableName: 'SDATATABLEFIELD',
11142
														param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11143
													},
11144
													success: function (response) {
11145
														var results = Ext.decode(response.responseText);
11146
														data_ = results.data[0];
11147
														if (data_ != undefined) {
11148
															custumFunc = data_.SelectFunction;
11149
															//console.log(data_)
11150
														}
11151
													}
11152
												});
11153

    
11154
												if (custumFunc) {
11155
													eval(custumFunc)
11156
												}
11157
											}
11158
										}
11159
									}
11160
								});
11161
							} else {
11162
								cols.push({
11163
									text: rec.HeaderTitle,
11164
									hidden: Hidden_,
11165
									dataIndex: rec.FieldName,
11166
									filter: {
11167
										itemDefaults: {
11168
											emptyText: 'Search for...'
11169
										}
11170
									},
11171
									editor: {
11172
										allowBlank: null_,
11173
										xtype: 'textfield',
11174
										readOnly: ReadOnly_,
11175
										id: tableName + rec.FieldName,
11176
										nameTable: rec.TableName,
11177
										fieldGrid: rec.FieldName,
11178
										listeners: {
11179
											change: function (val) {
11180
												var custumFunc = null;
11181
												Ext.Ajax.request({
11182
													async: false,
11183
													method: 'POST',
11184
													url: '/UserControl/GetStore',
11185
													params: {
11186
														tableName: 'SDATATABLEFIELD',
11187
														param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11188
													},
11189
													success: function (response) {
11190
														var results = Ext.decode(response.responseText);
11191
														data_ = results.data[0];
11192
														if (data_ != undefined) {
11193
															custumFunc = data_.SelectFunction;
11194
															//console.log(data_)
11195
														}
11196
													}
11197
												});
11198

    
11199
												if (custumFunc) {
11200
													eval(custumFunc)
11201
												}
11202
											}
11203
										}
11204
									}
11205
								});
11206
							}
11207
						}
11208

    
11209
						break
11210

    
11211
					}
11212
				} else {
11213
					cols.push({
11214
						text: rec.HeaderTitle,
11215
						hidden: Hidden_,
11216
						dataIndex: rec.FieldName,
11217
						hidden: true,
11218
						editor: {
11219
							allowBlank: true,
11220
							xtype: 'textfield',
11221
							readOnly: ReadOnly_,
11222
							id: tableName + rec.FieldName,
11223
							nameTable: rec.TableName,
11224
							fieldGrid: rec.FieldName,
11225
						},
11226
						filter: {
11227
							itemDefaults: {
11228
								emptyText: 'Search for...'
11229
							}
11230
						}
11231
					});
11232
				}
11233
			});
11234

    
11235
		};
11236
		addData = addData + "}";
11237
		Ext.applyIf(me, {
11238
			items: [{
11239
					xtype: 'grid',
11240
					id: gridName,
11241
					name: gridName,
11242
					height: height,
11243
					viewConfig: {
11244
						emptyText: 'No Data Display',
11245
						deferEmptyText: false,
11246
						//Add Nana For Autosize Column Mode
11247
						listeners: {
11248
							refresh: function (dataview) {
11249
								Ext.each(dataview.panel.columns, function (column) {
11250
									//if (column.autoSizeColumn == false)
11251
									//	column.autoSizeColumn = true;
11252
									column.autoSize();
11253
									//dataview.store.reload();
11254
								})
11255
							}
11256
						},
11257
						render: function (comp) {
11258
							comp.getStore().reload();
11259
							console.log(comp);
11260
						}
11261
					},
11262
					//store: 'gridStore',
11263
					store: Ext.create('Ext.data.Store', {
11264
						storeId: storeID,
11265
						fields: fieldStore,
11266
						proxy: {
11267
							method: 'POST',
11268
							type: 'ajax',
11269
							url: '',
11270
							reader: {
11271
								type: 'json',
11272
								root: 'data'
11273
							}
11274
						}
11275
					}),
11276
					dockedItems: [{
11277
							xtype: 'toolbar',
11278
							items: [{
11279
									text: 'Add',
11280
									hidden: hide_,
11281
									name: tableName + 'Add',
11282
									iconCls: 'fa-plus-circle',
11283
									style: 'font-family: FontAwesome',
11284
									handler: function () {
11285
										var store = Ext.StoreMgr.lookup(storeID)
11286
											idx = store.getCount();
11287
										var action = getParam('action');
11288
										var data = '';
11289
										var Sequence = 0;
11290
										if (idx == 0) {
11291
											Sequence = 1;
11292
										} else {
11293
											Sequence = 1 + idx;
11294
										}
11295
										//data = {
11296
										//    Sequence: Sequence
11297
										//};
11298

    
11299
										var seq = 'Sequence';
11300
										var SequenceValue = Sequence;
11301
										eval(addData);
11302
										data[seq] = SequenceValue;
11303

    
11304
										store.insert(idx, data);
11305
									}
11306

    
11307
								}, {
11308
									text: 'Delete',
11309
									hidden: hide_,
11310
									name: tableName + 'DeleteText',
11311
									iconCls: 'fa-trash-o',
11312
									style: 'font-family: FontAwesome',
11313
									//disabled: true
11314
									handler: function () {
11315
										var me = this,
11316
										store = Ext.StoreMgr.lookup(storeID)
11317

    
11318
											var grid = Ext.getCmp(gridName);
11319

    
11320
										Ext.MessageBox.show({
11321
											title: 'Remove tab',
11322
											msg: "This will remove. Do you want to continue?",
11323
											buttons: Ext.MessageBox.YESNO,
11324
											fn: function (choice) {
11325
												console.log(choice);
11326
												if (choice === 'yes') {
11327
													var selection = grid.getView().getSelectionModel().getSelection()[0];
11328
													if (selection) {
11329
														store.remove(selection);
11330
													}
11331
												}
11332
												//delete panel.pendingClose;
11333
											}
11334
										});
11335
									}
11336

    
11337
								}
11338
							]
11339
						}
11340
					],
11341
					columns: cols,
11342
					selType: checkSelection,
11343
					//selType: 'rowmodel',
11344
					plugins: {
11345
						ptype: 'rowediting',
11346
						pluginId: 'rowEditing',
11347
						clicksToEdit: 0,
11348
						listeners: {
11349
							//edit: 'onGridEditorEdit'
11350
						}
11351
					}
11352
				}, ]
11353

    
11354
		});
11355

    
11356
		me.callParent(arguments);
11357
	}
11358
});
11359

    
11360
Ext.define('MinovaUtil.MinovaES.MinovaCellEditGrid', {
11361
	extend: 'Ext.form.Panel',
11362
	alias: ['widget.MinovaCellEditGrid', 'widget.minovacelleditgrid'],
11363
	requires: [
11364
		'Ext.grid.plugin.CellEditing',
11365
		'Ext.grid.Panel',
11366
	],
11367

    
11368
	//renderTo: 'panel-extjs',
11369
	anchor: '100%',
11370
	tableName: undefined,
11371
	hideButton: undefined,
11372
	multiSelect: undefined,
11373
	initComponent: function () {
11374
		var me = this;
11375
		var isLookup = me.isLookup;
11376
		var hide_ = false;
11377
		var widthLock = 250;
11378
		var checkSelection = '';
11379

    
11380
		if (me.hideButton == true) {
11381
			hide_ = true;
11382
		}
11383
		if (me.multiSelect) {
11384
			locking = false;
11385
			checkSelection = 'checkboxmodel';
11386
			widthLock = 40;
11387
		}
11388
		var tableName = me.tableName;
11389
		var cols = [];
11390
		var fieldStore = [];
11391
		var _url = 'GetAllField';
11392
		var hasil = null;
11393
		var height = me.height;
11394
		var storeID = 'store' + me.tableName;
11395
		var gridName = 'grid' + me.name;
11396
		if (me.storeName) {
11397
			storeID = me.storeName;
11398
		}
11399
		var LangID = MinovaUtil.GetLangID();
11400
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
11401
			Ext.Ajax.request({
11402
				async: false,
11403
				method: 'POST',
11404
				url: '/UserControl/GetStore',
11405
				params: {
11406
					tableName: 'PDSBS0007',
11407
					param: parameter
11408
				},
11409
				success: function (response) {
11410
					var results = Ext.decode(response.responseText);
11411
					hasil = results.data;
11412
				}
11413
			});
11414
		if (hasil.length > 0) {
11415
			Ext.each(hasil, function (rec) {
11416
				fieldStore.push(rec.FieldName)
11417

    
11418
				var null_ = null;
11419
				var ReadOnly_ = false;
11420
				if (rec.IsPrimaryKey == true) {
11421
					null_ = false;
11422
				}
11423
				if (rec.IsRequired == true) {
11424
					null_ = false;
11425
				} else {
11426
					null_ = true;
11427
				}
11428
				if (rec.ReadOnly == '1') {
11429
					ReadOnly_ = true;
11430
				}
11431
				var Hidden_ = false;
11432
				if (rec.ReadOnly == '1') {
11433
					ReadOnly_ = true;
11434
				}
11435

    
11436
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
11437
					Hidden_ = true;
11438
					null_ = true;
11439
				}
11440

    
11441
				if (rec.GridView == 1) {
11442
					switch (rec.FormatRef) {
11443
					case "date":
11444
						cols.push({
11445
							xtype: 'minovadatecolumn',
11446
							hidden: Hidden_,
11447
							text: rec.HeaderTitle,
11448
							dataIndex: rec.FieldName,
11449
							filter: {
11450
								itemDefaults: {
11451
									emptyText: 'Search for...',
11452

    
11453
								}
11454
							},
11455
							editor: {
11456
								allowBlank: null_,
11457
								xtype: 'datefield',
11458
								hideMode: 'visibility',
11459
								readOnly: ReadOnly_,
11460
								id: tableName + rec.FieldName,
11461
							}
11462
						});
11463
						break
11464
					case "amount":
11465
						cols.push({
11466
							xtype: 'minovacurrancycolumn',
11467
							text: rec.HeaderTitle,
11468
							align: 'right',
11469
							dataIndex: rec.FieldName,
11470
							hidden: Hidden_,
11471
							filter: {
11472
								itemDefaults: {
11473
									emptyText: 'Search for...'
11474
								}
11475
							},
11476
							editor: {
11477
								allowBlank: null_,
11478
								xtype: 'textfield',
11479
								readOnly: ReadOnly_,
11480
								id: tableName + rec.FieldName,
11481
							}
11482
						});
11483
						break
11484
						//case "datetime":
11485
						//    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
11486
						//        cols.push({
11487
						//            xtype: 'minovadatetimecolumn',
11488
						//            text: rec.HeaderTitle,
11489
						//            dataIndex: rec.FieldName,
11490
						//            filter: {
11491
						//                itemDefaults: {
11492
						//                    emptyText: 'Search for...'
11493
						//                }
11494
						//            },
11495
						//            editor: {
11496
						//                allowBlank: null_,
11497
						//                xtype: 'textfield',
11498
						//            }
11499
						//        });
11500
						//    }
11501
						//    break
11502
					default:
11503
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
11504
							cols.push({
11505
								text: rec.HeaderTitle,
11506
								dataIndex: rec.FieldName,
11507
								width: 100,
11508
								filter: {
11509
									type: 'string',
11510
									itemDefaults: {
11511
										emptyText: 'Search for...'
11512
									}
11513
								}
11514
							});
11515
						} else if (rec.SearchType == '0') {
11516
							var valueField = null;
11517
							var displayValue = null;
11518
							var TableRef = undefined;
11519
							if (rec.TableRef != '') {
11520
								TableRef = rec.TableRef;
11521

    
11522
								Ext.Ajax.request({
11523
									async: false,
11524
									method: 'POST',
11525
									url: '/UserControl/GetStore',
11526
									params: {
11527
										tableName: 'SDATATABLEFIELD',
11528
										param: 'TableName[equal]' + rec.TableRef
11529
									},
11530
									success: function (response) {
11531
										var results = Ext.decode(response.responseText);
11532
										data_ = results.data;
11533
										if (data_ != undefined) {
11534
											valueField_ = $.grep(data_, function (r) {
11535
													return r.ValueField == '1'
11536
												});
11537
											valueField = valueField_[0].FieldName
11538
												displayValue_ = $.grep(data_, function (r) {
11539
													return r.DisplayValue == '1'
11540
												});
11541
											displayValue = displayValue_[0].FieldName
11542
										}
11543
									}
11544
								});
11545

    
11546
								//create Store
11547
								Ext.create('Ext.data.Store', {
11548
									storeId: 'store_' + me.tableName + rec.FieldName,
11549
									autoLoad: true,
11550
									proxy: {
11551
										method: 'POST',
11552
										type: 'ajax',
11553
										url: '/UserControl/GetStoreAuth',
11554
										extraParams: {
11555
											tableName: TableRef,
11556
											param: rec.ParamCombo,
11557
											menuId: MinovaUtil.GetMenuID()
11558
										},
11559
										reader: {
11560
											type: 'json',
11561
											root: 'data',
11562
											totalProperty: 'data[0].TotalCount'
11563
										}
11564
									}
11565
								});
11566

    
11567
							} else if (rec.FixedValue != '') {
11568
								var storeData = [];
11569
								var str = rec.FixedValue;
11570
								var hasil = str.split('||');
11571
								hasil.forEach(function (h) {
11572
									store_ = h.split('=')
11573
										storeData.push({
11574
											code: store_[0],
11575
											desc: store_[1],
11576

    
11577
										});
11578
								});
11579

    
11580
								valueField = 'code';
11581
								displayValue = 'desc';
11582

    
11583
								Ext.create('Ext.data.Store', {
11584
									storeId: 'store_' + me.tableName + rec.FieldName,
11585
									autoLoad: true,
11586
									data: storeData
11587
								})
11588
							}
11589

    
11590
							cols.push({
11591
								xtype: 'minovacombocolumn',
11592
								hidden: Hidden_,
11593
								text: rec.HeaderTitle,
11594
								dataIndex: rec.FieldName,
11595
								valueField: valueField,
11596
								displayField: displayValue,
11597
								store: 'store_' + me.tableName + rec.FieldName,
11598
								editor: {
11599
									allowBlank: null_,
11600
									xtype: 'combobox',
11601
									readOnly: ReadOnly_,
11602
									id: tableName + rec.FieldName,
11603
									valueField: valueField,
11604
									displayField: displayValue,
11605
									store: 'store_' + me.tableName + rec.FieldName,
11606
								},
11607
								filter: {
11608
									type: 'list',
11609
									itemDefaults: {
11610
										emptyText: 'Search for...'
11611
									}
11612
								}
11613
							});
11614

    
11615
						} else if (rec.SearchType == '5') {
11616
							var valueField = null;
11617
							var displayValue = null;
11618
							var AdditionaldisplayValue = null;
11619
							var TableRef = undefined;
11620
							if (rec.TableRef != '') {
11621
								TableRef = rec.TableRef;
11622
								Ext.Ajax.request({
11623
									async: false,
11624
									method: 'POST',
11625
									url: '/UserControl/GetStore',
11626
									params: {
11627
										tableName: 'SDATATABLEFIELD',
11628
										param: 'TableName[equal]' + rec.TableRef
11629
									},
11630
									success: function (response) {
11631
										var results = Ext.decode(response.responseText);
11632
										data_ = results.data;
11633
										if (data_ != undefined) {
11634
											valueField_ = $.grep(data_, function (r) {
11635
													return r.ValueField == '1'
11636
												});
11637
											if (valueField_.length > 0) {
11638
												valueField = valueField_[0].FieldName
11639
											}
11640

    
11641
											displayValue_ = $.grep(data_, function (r) {
11642
													return r.DisplayValue == '1' || r.DisplayValue == '2'
11643
												});
11644
											if (displayValue_.length > 0) {
11645
												displayValue = displayValue_[0].FieldName;
11646
											}
11647
											if (displayValue_.length >= 2) {
11648
												AdditionaldisplayValue = displayValue_[1].FieldName
11649
											}
11650
										}
11651
									}
11652
								});
11653
							}
11654
							Ext.create('Ext.data.Store', {
11655
								storeId: 'store_' + me.tableName + rec.FieldName,
11656
								autoLoad: true,
11657
								proxy: {
11658
									method: 'POST',
11659
									type: 'ajax',
11660
									url: '/UserControl/GetStoreAuth',
11661
									extraParams: {
11662
										tableName: TableRef,
11663
										param: rec.ParamCombo,
11664
										menuId: MinovaUtil.GetMenuID()
11665
									},
11666
									reader: {
11667
										type: 'json',
11668
										root: 'data',
11669
										totalProperty: 'data[0].TotalCount'
11670
									}
11671
								}
11672
							});
11673
							cols.push({
11674
								xtype: 'minovacombocolumn',
11675
								hidden: Hidden_,
11676
								text: rec.HeaderTitle,
11677
								dataIndex: rec.FieldName,
11678
								valueField: valueField,
11679
								displayField: displayValue,
11680
								store: 'store_' + me.tableName + rec.FieldName,
11681
								tpl: Ext.create('Ext.XTemplate',
11682
									'<ul class="x-list-plain"><tpl for=".">',
11683
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11684
									'</tpl></ul>'),
11685
								displayTpl: Ext.create('Ext.XTemplate',
11686
									'<tpl for=".">',
11687
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11688
									'</tpl>'),
11689
								editor: {
11690
									allowBlank: null_,
11691
									xtype: 'combobox',
11692
									readOnly: ReadOnly_,
11693
									id: rec.TableName + rec.FieldName,
11694
									nameTable: rec.TableName,
11695
									fieldGrid: rec.FieldName,
11696
									valueField: valueField,
11697
									displayField: displayValue,
11698
									store: 'store_' + me.tableName + rec.FieldName,
11699
									value: rec.DefaultValue,
11700
									tpl: Ext.create('Ext.XTemplate',
11701
										'<ul class="x-list-plain"><tpl for=".">',
11702
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11703
										'</tpl></ul>'),
11704
									displayTpl: Ext.create('Ext.XTemplate',
11705
										'<tpl for=".">',
11706
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11707
										'</tpl>')
11708
								},
11709
								renderer: function (value) {
11710
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
11711
									var index = store.find(valueField, value);
11712
									var val = "";
11713
									if (index != -1) {
11714
										var rc = store.getAt(index);
11715
										//val = rc.get(displayValue);
11716
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
11717
									} else {
11718
										val = value;
11719
									}
11720
									return val;
11721
								},
11722
								filter: {
11723
									type: 'list',
11724
									itemDefaults: {
11725
										emptyText: 'Search for...'
11726
									}
11727
								}
11728
							});
11729
						} else if (rec.SearchType == '2') {
11730
							var triger = (rec.TriggerCombo).split('$');
11731
							var targetField_ = triger[0];
11732
							var fieldValue_ = triger[1];
11733
							cols.push({
11734
								text: rec.HeaderTitle,
11735
								hidden: Hidden_,
11736
								dataIndex: rec.FieldName,
11737
								filter: {
11738
									itemDefaults: {
11739
										emptyText: 'Search for...'
11740
									}
11741
								},
11742
								editor: {
11743
									allowBlank: null_,
11744
									xtype: 'minovalookupgrid',
11745
									readOnly: ReadOnly_,
11746
									isGrid: true,
11747
									fieldTarget: targetField_,
11748
									fieldValue: fieldValue_,
11749
									isGrid: true,
11750
									id: tableName + rec.FieldName,
11751
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11752
									triggerCls: 'x-form-search-trigger',
11753
									vtype: 'alphanum', // disable space
11754

    
11755
									listeners: {
11756
										change: function (val) {
11757
											var custumFunc = rec.SelectFunction;
11758
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11759
												Ext.Ajax.request({
11760
													async: false,
11761
													method: 'POST',
11762
													url: '/UserControl/GetStore',
11763
													params: {
11764
														tableName: 'PCMFUNC',
11765
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11766
													},
11767
													success: function (response) {
11768
														var results = Ext.decode(response.responseText);
11769
														data_ = results.data[0];
11770
														if (data_ != undefined) {
11771
															custumFunc = data_.FunctionCode;
11772
														}
11773
													}
11774
												});
11775
											}
11776
											if (custumFunc) {
11777
												eval(custumFunc)
11778
											}
11779
										}
11780
									}
11781
								}
11782
							});
11783
						} else if (rec.SearchType == '3') {
11784
							cols.push({
11785
								text: rec.HeaderTitle,
11786
								hidden: Hidden_,
11787
								dataIndex: rec.FieldName,
11788
								filter: {
11789
									itemDefaults: {
11790
										emptyText: 'Search for...'
11791
									}
11792
								},
11793
								editor: {
11794
									allowBlank: null_,
11795
									// xtype: 'minovalookuptreePopup',
11796
									xtype: 'MinovaLookupTree',
11797
									readOnly: ReadOnly_,
11798
									id: tableName + rec.FieldName,
11799
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11800
									triggerCls: 'x-form-search-trigger',
11801
									vtype: 'alphanum', // disable space
11802
									treeSructure: rec.SearchFunction, //'O-O-P',
11803
									objClassValue: rec.ParamCombo, //'O',
11804
									listeners: {
11805
										change: function (val) {
11806
											var custumFunc = rec.SelectFunction;
11807
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11808
												Ext.Ajax.request({
11809
													async: false,
11810
													method: 'POST',
11811
													url: '/UserControl/GetStore',
11812
													params: {
11813
														tableName: 'PCMFUNC',
11814
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11815
													},
11816
													success: function (response) {
11817
														var results = Ext.decode(response.responseText);
11818
														data_ = results.data[0];
11819
														if (data_ != undefined) {
11820
															custumFunc = data_.FunctionCode;
11821
														}
11822
													}
11823
												});
11824
											}
11825
											if (custumFunc) {
11826
												eval(custumFunc)
11827
											}
11828
										}
11829
									}
11830
								}
11831
							});
11832
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
11833
							var triger = (rec.TriggerCombo).split('&');
11834
							var targetField_ = triger[0];
11835
							var fieldValue_ = triger[0];
11836
							cols.push({
11837
								text: rec.HeaderTitle,
11838
								hidden: Hidden_,
11839
								dataIndex: rec.FieldName,
11840
								filter: {
11841
									itemDefaults: {
11842
										emptyText: 'Search for...'
11843
									}
11844
								},
11845
								editor: {
11846
									allowBlank: null_,
11847
									xtype: 'lookupemployee',
11848
									readOnly: ReadOnly_,
11849
									isGrid: true,
11850
									fieldTarget: targetField_,
11851
									fieldValue: fieldValue_,
11852
									isGrid: true,
11853
									id: tableName + rec.FieldName,
11854
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11855
									triggerCls: 'x-form-search-trigger',
11856
									vtype: 'alphanum', // disable space
11857
									listeners: {
11858
										change: function (val) {
11859
											var custumFunc = rec.SelectFunction;
11860
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11861
												Ext.Ajax.request({
11862
													async: false,
11863
													method: 'POST',
11864
													url: '/UserControl/GetStore',
11865
													params: {
11866
														tableName: 'PCMFUNC',
11867
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11868
													},
11869
													success: function (response) {
11870
														var results = Ext.decode(response.responseText);
11871
														data_ = results.data[0];
11872
														if (data_ != undefined) {
11873
															custumFunc = data_.FunctionCode;
11874
														}
11875
													}
11876
												});
11877
											}
11878
											if (custumFunc) {
11879
												eval(custumFunc)
11880
											}
11881
										}
11882
									}
11883
								}
11884
							});
11885
						} else if (rec.SearchType == '4' && isLookup != true) {
11886
							cols.push({
11887

    
11888
								text: rec.HeaderTitle,
11889
								hidden: Hidden_,
11890
								dataIndex: rec.FieldName,
11891
								filter: {
11892
									itemDefaults: {
11893
										emptyText: 'Search for...'
11894
									}
11895
								},
11896
								editor: {
11897
									allowBlank: null_,
11898
									xtype: 'lookupemployee',
11899
									readOnly: ReadOnly_,
11900
									isGrid: true,
11901
									fieldTarget: targetField_,
11902
									fieldValue: fieldValue_,
11903
									isGrid: true,
11904
									id: tableName + rec.FieldName,
11905
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
11906
									triggerCls: 'x-form-search-trigger',
11907
									vtype: 'alphanum', // disable space
11908
									listeners: {
11909
										change: function (val) {
11910
											var custumFunc = rec.SelectFunction;
11911
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11912
												Ext.Ajax.request({
11913
													async: false,
11914
													method: 'POST',
11915
													url: '/UserControl/GetStore',
11916
													params: {
11917
														tableName: 'PCMFUNC',
11918
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11919
													},
11920
													success: function (response) {
11921
														var results = Ext.decode(response.responseText);
11922
														data_ = results.data[0];
11923
														if (data_ != undefined) {
11924
															custumFunc = data_.FunctionCode;
11925
														}
11926
													}
11927
												});
11928
											}
11929
											if (custumFunc) {
11930
												eval(custumFunc)
11931
											}
11932
										}
11933
									}
11934
								}
11935
							});
11936
						} else {
11937
							cols.push({
11938
								text: rec.HeaderTitle,
11939
								hidden: Hidden_,
11940
								dataIndex: rec.FieldName,
11941
								filter: {
11942
									itemDefaults: {
11943
										emptyText: 'Search for...'
11944
									}
11945
								},
11946
								editor: {
11947
									allowBlank: null_,
11948
									xtype: 'textfield',
11949
									readOnly: ReadOnly_,
11950
									id: tableName + rec.FieldName,
11951
									listeners: {
11952
										change: function (val) {
11953
											var custumFunc = null;
11954
											Ext.Ajax.request({
11955
												async: false,
11956
												method: 'POST',
11957
												url: '/UserControl/GetStore',
11958
												params: {
11959
													tableName: 'SDATATABLEFIELD',
11960
													param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11961
												},
11962
												success: function (response) {
11963
													var results = Ext.decode(response.responseText);
11964
													data_ = results.data[0];
11965
													if (data_ != undefined) {
11966
														custumFunc = data_.SelectFunction;
11967
														//console.log(data_)
11968
													}
11969
												}
11970
											});
11971

    
11972
											if (custumFunc) {
11973
												eval(custumFunc)
11974
											}
11975
										}
11976
									}
11977
								}
11978
							});
11979
						}
11980

    
11981
						break
11982

    
11983
					}
11984
				} else {
11985
					cols.push({
11986
						text: rec.HeaderTitle,
11987
						hidden: Hidden_,
11988
						dataIndex: rec.FieldName,
11989
						hidden: true,
11990
						editor: {
11991
							allowBlank: true,
11992
							xtype: 'textfield',
11993
							readOnly: ReadOnly_,
11994
							id: tableName + rec.FieldName,
11995
						},
11996
						filter: {
11997
							itemDefaults: {
11998
								emptyText: 'Search for...'
11999
							}
12000
						}
12001
					});
12002
				}
12003
			});
12004
		};
12005

    
12006
		this.cellEditing = new Ext.grid.plugin.CellEditing({
12007
				clicksToEdit: 1
12008
			});
12009
		Ext.applyIf(me, {
12010
			items: [{
12011
					xtype: 'grid',
12012
					id: gridName,
12013
					name: gridName,
12014
					height: height,
12015
					//store: 'gridStore',
12016
					store: Ext.create('Ext.data.Store', {
12017
						storeId: storeID,
12018
						fields: fieldStore,
12019
						proxy: {
12020
							method: 'POST',
12021
							type: 'ajax',
12022
							url: '',
12023
							reader: {
12024
								type: 'json',
12025
								root: 'data'
12026
							}
12027
						}
12028
					}),
12029
					viewConfig: {
12030
						emptyText: 'No Data Display',
12031
						deferEmptyText: false,
12032
						//Add Nana For Autosize Column Mode
12033
						listeners: {
12034
							refresh: function (dataview) {
12035
								Ext.each(dataview.panel.columns, function (column) {
12036
									if (column.autoSizeColumn == false)
12037
										column.autoSizeColumn = true;
12038
									column.autoSize();
12039
									//dataview.store.reload();
12040
								})
12041
							}
12042
						},
12043
						render: function (comp) {
12044
							comp.getStore().reload();
12045
							console.log(comp);
12046
						}
12047
					},
12048
					dockedItems: [{
12049
							xtype: 'toolbar',
12050
							items: [{
12051
									text: 'Add',
12052
									hidden: hide_,
12053
									name: tableName + 'Add',
12054
									iconCls: 'fa-plus-circle',
12055
									style: 'font-family: FontAwesome',
12056
									handler: function () {
12057
										var store = Ext.StoreMgr.lookup(storeID)
12058
											idx = store.getCount();
12059
										var action = getParam('action');
12060
										var data = '';
12061
										var Sequence = 0;
12062
										if (idx == 0) {
12063
											Sequence = 1;
12064
										} else {
12065
											Sequence = 1 + idx;
12066
										}
12067
										data = {
12068
											Sequence: Sequence
12069
										};
12070

    
12071
										store.insert(idx, data);
12072
									}
12073

    
12074
								}, {
12075
									text: 'Delete',
12076
									hidden: hide_,
12077
									name: tableName + 'DeleteText',
12078
									iconCls: 'fa-trash-o',
12079
									style: 'font-family: FontAwesome',
12080
									//disabled: true
12081
									handler: function () {
12082
										var me = this,
12083
										store = Ext.StoreMgr.lookup(storeID)
12084

    
12085
											var grid = Ext.getCmp(gridName);
12086

    
12087
										Ext.MessageBox.show({
12088
											title: 'Remove tab',
12089
											msg: "This will remove. Do you want to continue?",
12090
											buttons: Ext.MessageBox.YESNO,
12091
											fn: function (choice) {
12092
												console.log(choice);
12093
												if (choice === 'yes') {
12094
													var selection = grid.getView().getSelectionModel().getSelection()[0];
12095
													if (selection) {
12096
														store.remove(selection);
12097
													}
12098
												}
12099
												//delete panel.pendingClose;
12100
											}
12101
										});
12102
									}
12103

    
12104
								}
12105
							]
12106
						}
12107
					],
12108
					columns: cols,
12109
					selModel: {
12110
						type: 'cellmodel'
12111
					},
12112
					plugins: [this.cellEditing],
12113
				}, ]
12114

    
12115
		});
12116

    
12117
		me.callParent(arguments);
12118
	}
12119
});
12120
//hamid200916
12121
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployeelama', {
12122
	extend: 'Ext.panel.Panel',
12123
	alias: 'widget.lookupemployeelama',
12124
	requires: [
12125
		'Ext.data.*',
12126
		'Ext.grid.*',
12127
		'Ext.tree.*',
12128
		'Ext.ux.CheckColumn',
12129
		//'MinovaES.View.sample.samplepopupEMPID'
12130

    
12131
	],
12132
	formname: undefined,
12133
	fieldname: undefined,
12134
	allowBlank: undefined,
12135
	width: undefined,
12136
	tableName: undefined,
12137
	//bodyStyle: 'padding-left: -20px; padding-bottom: -20px; padding-top: -20px; padding-right: -20px;',
12138
	//padding: '-40px',
12139
	//bodyStyle: 'margin:-20px;',
12140
	//margin: '-20 -20 -20 -20',
12141
	//fieldLabel: undefined,
12142
	//name: undefined,
12143
	//pnl: this.name,
12144
	initComponent: function () {
12145
		var me = this;
12146
		targetField_ = me.fieldname;
12147
		//var nameField_ = me.name;
12148
		//var panelform = this.pnl;
12149
		var nameField_ = me.fieldname;
12150
		var blank = me.allowBlank;
12151
		var width_ = me.width;
12152
		var tableName_ = me.tableName;
12153
		var panelform = "form" + me.name;
12154
		//var fieldLabel_ = me.fieldLabel;
12155
		Ext.applyIf(me, {
12156
			items: [{
12157
					xtype: 'form',
12158
					name: panelform,
12159
					items: [{
12160
							xtype: 'fieldcontainer',
12161
							layout: 'hbox',
12162
							fieldLabel: me.fieldLabel,
12163
							items: [{
12164
									xtype: "triggerfield",
12165
									name: nameField_,
12166
									width: width_,
12167
									//anchor: '50%',
12168
									//editable: true,
12169
									allowBlank: blank,
12170
									triggerCls: 'x-form-search-trigger',
12171
									onTriggerClick: function (e) {
12172
										//var tableName_ = this.tableName;
12173
										var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12174
										var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12175
										var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12176
										var EmployeeID_ = EmployeeID.getValue();
12177
										//var params = "EmployeeID[=]" + EmployeeID.getValue();
12178
										//var Url = "sample?EmployeeID=" + EmployeeID.getValue();
12179
										//window.open(Url, "_self");
12180
										//var selection_ = selection.getValue();
12181
										//var EmployeeSearch = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12182
										//var lokup = EmployeeSearch.setValue(selection_);
12183

    
12184
										var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12185
										if (count_lookup == 1) {
12186
											Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12187
											Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12188
										} else {
12189
											//var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12190
											Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12191
												//    tableName: tableName_,
12192

    
12193
												//}).show()
12194
												//_popUploadView.tableName = tableName_;
12195
												tableName: tableName_,
12196
												targetField: this.name,
12197
											}).show()
12198
										}
12199

    
12200
										//var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12201
										//var a = _popUploadView.show();
12202
										var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12203
										text.setValue(EmployeeID_);
12204

    
12205
										if (EmployeeID_ !== "") {
12206
											var store = Ext.data.StoreManager.lookup('lookupEMPID');
12207
											var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12208
											store.proxy.extraParams = {
12209
												tableName: tableName_, //'PDSEMP0002',
12210
												param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12211
											};
12212
											store.reload();
12213
										}
12214
									},
12215
									listeners: {
12216
										specialkey: function (f, e) {
12217
											if (e.getKey() == e.ENTER) {
12218
												//alert("about to submit");
12219
												var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12220
												var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12221
												var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12222
												var EmployeeID_ = EmployeeID.getValue();
12223

    
12224
												var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12225
												if (count_lookup == 1) {
12226
													Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12227
													Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12228
												} else {
12229
													Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12230
														tableName: tableName_,
12231
														targetField: this.name,
12232
													}).show()
12233
													//var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12234
													//_popUploadView.targetField = this.name;
12235
													//_popUploadView.show();
12236

    
12237
												}
12238
												//var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12239
												//var a = _popUploadView.show();
12240
												var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12241
												text.setValue(EmployeeID_);
12242

    
12243
												if (EmployeeID_ !== "") {
12244
													var store = Ext.data.StoreManager.lookup('lookupEMPID');
12245
													var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12246
													store.proxy.extraParams = {
12247
														tableName: tableName_, //'PDSEMP0002',
12248
														param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12249
													};
12250
													store.reload();
12251
												}
12252
												//myform.getForm().submit();
12253
											}
12254
										}
12255
									}
12256

    
12257
								}, {
12258
									xtype: 'tbspacer',
12259
									width: 5
12260
								}, {
12261
									xtype: 'button',
12262
									name: nameField_,
12263
									anchor: '50%',
12264
									text: 'Advance',
12265
									listeners: {
12266
										click: function () {
12267
											var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEmployee]').length;
12268
											if (count_lookup == 1) {
12269
												Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField = this.name;
12270
												Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].show();
12271
											} else {
12272
												Ext.create('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12273
													tableName: tableName_,
12274
													targetField: this.name,
12275
												}).show()
12276
												//var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeAdvance");
12277
												//_popUploadView.targetField = this.name;
12278
												//_popUploadView.show();
12279

    
12280
											}
12281
										}
12282
									},
12283
								}
12284
							]
12285
						}
12286
					]
12287
				}
12288
			]
12289
		});
12290
		me.callParent(arguments);
12291
	}
12292
});
12293

    
12294
Ext.define('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12295
	extend: 'Ext.window.Window',
12296
	alias: 'widget.popup_employeequicksearch',
12297
	requires: [
12298
		// 'MinovaES.controller.sample.ctrlsample',
12299
		//'MinovaES.store.data.TableType',
12300
	],
12301
	//controller: 'ctrlsample',
12302
	height: '85%',
12303
	width: '42%',
12304
	minWidth: '50%',
12305
	maxWidth: '100%',
12306
	bodyPadding: 0,
12307
	formname: undefined,
12308
	//modal: true,
12309
	title: 'Lookup - EmployeeID',
12310
	name: 'popup_lookupEMPID',
12311
	test: undefined,
12312
	targetField: undefined,
12313
	tableName: undefined,
12314
	afterender: function () {
12315
		test = nameform;
12316
	},
12317
	initComponent: function () {
12318

    
12319
		var me = this;
12320
		var targetField_ = me.targetField;
12321
		var form = me.test;
12322
		var tableName_ = me.tableName;
12323
		Ext.applyIf(me, {
12324
			items: [{
12325
					xtype: 'form',
12326
					name: 'frmSearch',
12327
					width: '100%',
12328
					height: 'auto',
12329
					dockedItems: [{
12330
							xtype: 'toolbar',
12331
							dock: 'top',
12332
							layout: 'vbox',
12333
							bodyPadding: 10,
12334
							border: 0,
12335
							items: [{
12336
									xtype: 'fieldset',
12337
									layout: 'hbox',
12338
									width: '100%',
12339
									border: 0,
12340
									padding: 0,
12341
									items: [{
12342
											xtype: 'textfield',
12343
											name: 'EmployeeSearch',
12344
											fieldLabel: 'Emp ID/ External ID/ Full Name',
12345
											width: 475,
12346
											labelWidth: 185,
12347
											enableKeyEvents: true,
12348
											listeners: {
12349
												specialkey: function (f, e) {
12350
													if (e.getKey() == e.ENTER) {
12351
														var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12352
														var emp_ = emp.getValue();
12353
														var store = Ext.data.StoreManager.lookup('lookupEMPID');
12354
														var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12355
														store.proxy.extraParams = {
12356
															tableName: tableName_, //'PDSEMP0002',
12357
															param: 'EmpID_ExternalID_FullName[like]' + emp_
12358
														};
12359
														store.reload();
12360
													}
12361
												}
12362
											}
12363
										}, {
12364
											xtype: 'tbspacer',
12365
											width: 5
12366
										}, {
12367
											xtype: 'button',
12368
											name: 'Search',
12369
											text: 'Search',
12370
											handler: function () {
12371
												var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12372
												var emp_ = emp.getValue();
12373
												var store = Ext.data.StoreManager.lookup('lookupEMPID');
12374
												var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12375
												store.proxy.extraParams = {
12376
													tableName: tableName_, //'PDSEMP0002',
12377
													param: 'EmpID_ExternalID_FullName[like]' + emp_
12378
												};
12379
												store.reload();
12380
											},
12381

    
12382
										}
12383
									]
12384
								}
12385
							]
12386
						}
12387
					],
12388
				}, {
12389
					items: [{
12390
							xtype: "minovagrid1",
12391
							name: "GridEmployeeID",
12392
							storename: 'lookupEMPID',
12393
							tableName: tableName_, //'PDSEMP0002',
12394
							param: '',
12395
							isLookup: true,
12396
							pagesize: 25,
12397
							height: 425,
12398
							listeners: {
12399
								beforeedit: function () {
12400
									return false;
12401
								},
12402
								itemdblclick: function () {
12403
									var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
12404
									var selection = grid.getView().getSelectionModel().getSelection()[0];
12405
									var Emp_ = selection.data.EmployeeID;
12406
									//var formSelection = Ext.ComponentQuery.query('[name=' + form + ']')[0];
12407
									//formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12408

    
12409
									var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
12410
									Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12411
									//Ext.ComponentQuery.query('[name=EmployeeiD]')[0].setValue(selection.data.EmployeeID);;
12412
									Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
12413
								}
12414
							},
12415
						}, {
12416
							xtype: 'pagingtoolbar',
12417
							store: 'lookupEMPID',
12418
							dock: 'bottom',
12419
							displayInfo: true
12420
						}
12421
					]
12422
				}
12423
			]
12424
		});
12425
		me.callParent(arguments);
12426
	}
12427
});
12428
Ext.define('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12429
	extend: 'Ext.window.Window',
12430
	alias: 'widget.popup_employeeadvance',
12431
	requires: [
12432
		//'MinovaES.controller.sample.ctrlsample',
12433
		//'MinovaES.store.data.TableType',
12434
	],
12435
	//controller: 'ctrlsample',
12436
	height: '85%',
12437
	width: '42%',
12438
	minWidth: '50%',
12439
	maxWidth: '100%',
12440
	bodyPadding: 10,
12441
	anchor: '50%',
12442
	formname: undefined,
12443
	//modal: true,
12444
	title: 'Lookup - EmployeeID',
12445
	name: 'popup_lookupEmployee',
12446
	test: undefined,
12447
	targetField: undefined,
12448
	tableName: undefined,
12449
	initComponent: function () {
12450
		var me = this;
12451
		var targetField_ = me.targetField;
12452
		var form = me.test;
12453
		var tableName_ = me.tableName;
12454
		Ext.applyIf(me, {
12455
			items: [{
12456
					xtype: 'form',
12457
					name: 'formlookup',
12458
					items: [{
12459
							xtype: 'minovaform',
12460
							name: 'frmlookup',
12461
							tableName: tableName_, //'PDSEMP0001',
12462
							param: '',
12463
							isLookup: true,
12464
							listeners: {
12465
								onStockFormKeyPress: function (textfield, event, options) {
12466
									if (event.getKey() == event.ENTER) {
12467
										alert("test");
12468
										//Ext.Msg.alert('Keys', 'You pressed the Enter key');
12469
									}
12470
								}
12471
							},
12472
							buttons: [{
12473
									text: 'Search',
12474
									//iconCls : 'fa-edit',
12475
									//style : 'font-family: FontAwesome',
12476
									listeners: {
12477
										click: function () {
12478
											var store = Ext.data.StoreManager.lookup('lookupStore');
12479
											var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
12480
											grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12481
											var values_ = form.getValues();
12482
											var fields_ = form.getFields().items;
12483
											var param_ = '';
12484
											for (var i = 0; i < fields_.length; i++) {
12485
												var val_ = form.getFields().items[i].getValue();
12486
												var xtype_ = form.getFields().items[i].xtype;
12487
												var oprator_ = '[like]';
12488
												if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
12489
													oprator_ = '[Equal]';
12490
												}
12491
												if (xtype_ == 'datefield') {
12492
													if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
12493
														oprator_ = '[LessThanEqual]';
12494
													} else {
12495
														oprator_ = '[GreaterThanEqual]';
12496
													}
12497
												}
12498
												if (val_ != 'undefined' && val_ != "" && val_ != null) {
12499
													param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
12500
												}
12501
											}
12502
											store.proxy.extraParams = {
12503
												tableName: grid.tableName,
12504
												param: param_
12505
											};
12506
											store.removeAll();
12507
											store.reload();
12508
											store.loadPage(1);
12509
										},
12510

    
12511
									}
12512
								}
12513
							]
12514
						}, {
12515
							xtype: 'minovagrid',
12516
							name: 'gridlookup',
12517
							minHeight: 320,
12518
							height: 250,
12519
							tableName: tableName_, //'PDSEMP0001',
12520
							param: '',
12521
							isLookup: true,
12522
							storename: 'lookupStore',
12523
							pagesize: 25,
12524
							listeners: {
12525
								beforeedit: function () {
12526
									return false;
12527
								},
12528
								itemdblclick: function () {
12529
									var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12530
									var selection = grid.getView().getSelectionModel().getSelection()[0];
12531
									var Emp_ = selection.data.EmployeeID;
12532
									//var formSelection = Ext.ComponentQuery.query('[name=EmployeeSelection]')[0];
12533
									//formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12534
									var target = Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField;
12535
									Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12536
									Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].hide();
12537

    
12538
								}
12539
							},
12540
							dockedItems: [{
12541
									xtype: 'pagingtoolbar',
12542
									store: 'lookupStore',
12543
									dock: 'bottom',
12544
									displayInfo: true
12545
								}
12546
							]
12547
						}
12548
					]
12549
				}
12550
			]
12551
		});
12552
		me.callParent(arguments);
12553
	}
12554
});
12555
//end hamid
12556

    
12557

    
12558
// lookup tree
12559
Ext.define('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12560
	extend: 'Ext.window.Window',
12561
	alias: 'widget.minovalookuptreePopup',
12562
	requires: [
12563

    
12564
	],
12565
	height: '80%',
12566
	width: '40%',
12567
	minWidth: '50%',
12568
	maxWidth: '100%',
12569
	bodyPadding: 5,
12570
	modal: true,
12571
	name: 'mainlookupTree',
12572
	objFilter: undefined,
12573
	treeSructure: undefined, // object relationship
12574
	objClassValue: undefined, // object yang akan di input ke field
12575
	formname: undefined, // nama form
12576
	targetField: undefined, // nama field yang akan diset value
12577
	//title:'judul',
12578
	bodyPadding: 0,
12579
	initComponent: function () {
12580
		var me = this;
12581
		var objFilter_ = me.objFilter;
12582
		var treeSructure_ = me.treeSructure;
12583
		var formname_ = me.formname;
12584
		var objClassValue_ = me.objClassValue;
12585
		var targetField_ = me.targetField;
12586
		var AllObjectClass = treeSructure_.split('-');
12587
		var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0];
12588
		var StartDate_ = '';
12589
		if (form_) {
12590

    
12591
			if (form_.getForm().findField('StartDate')) {
12592
				StartDate_ = form_.getForm().findField('StartDate').getValue();
12593
			} else {
12594
				StartDate_ = MinovaUtil.GetNowDate();
12595
			}
12596

    
12597
		}
12598

    
12599
		Ext.applyIf(me, {
12600
			items: [{
12601
					//xtype : 'panel',
12602
					items: [{
12603
							xtype: 'tabpanel',
12604
							items: [{
12605

    
12606
									xtype: 'form',
12607
									title: 'Structured Search',
12608
									height: '70%',
12609
									tabConfig: {
12610
										tooltip: 'Search by tree'
12611
									},
12612
									items: [{
12613
											xtype: 'form',
12614
											items: [{
12615

    
12616
													xtype: 'treepanel',
12617
													rootVisible: false,
12618
													height: 400,
12619

    
12620
													name: 'searchByTreePopUp',
12621
													useArrows: true,
12622
													animate: false,
12623
													targetField: targetField_,
12624
													formname: formname_,
12625
													root: {
12626
														expanded: true,
12627
														nodeType: 'async',
12628
														ext: 'Favorites',
12629
														id: 'null'
12630
													},
12631
													listeners: {
12632
														afterrender: function (me_) {
12633
															me_.mask();
12634
															if (treeSructure_ != 'O-O-P') {
12635
																var countCol = me_.columns.length;
12636
																me_.columns[countCol - 1].setHidden(true);
12637

    
12638
															}
12639
															if (StartDate_ != '') {
12640
																var node = "root";
12641
																var ObjectClass_ = treeSructure_.split('-');
12642
																//Ext.Ajax.request({
12643
																//    method: 'POST',
12644
																//    async: false,
12645
																//    url: '/UserControl/GetStoreAuth',
12646
																//    params: {
12647
																//        tableName: "PHROM0001",
12648
																//        param: "ObjectClass[=]" + ObjectClass_[0],
12649
																//        menuId: MinovaUtil.GetMenuID()
12650
																//    },
12651
																//    success: function (response) {
12652
																//        var results = Ext.decode(response.responseText);
12653
																//        var data_ = results.data;
12654
																//        if (data_.length > 0 && data_.length == 1) {
12655
																//            node = ObjectClass_[0] + data_[0].ObjectID;
12656
																//        }
12657

    
12658
																//    }
12659
																//});
12660

    
12661
																Ext.Ajax.request({
12662
																	async: false,
12663
																	//url: '/ORM/GetRelObjectTreeAsync?node=' + node + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12664
																	url: '/ORM/GetRelObjectTreeAsyncAuth?node=' + 'root' + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_ + '&ObjectClass=' + ObjectClass_[0] + '&MenuID=' + MinovaUtil.GetMenuID(),
12665
																	success: function (response) {
12666
																		var results = Ext.decode(response.responseText);
12667
																		var data_ = results.results;
12668
																		//console.log(data_)
12669
																		var pnl = Ext.ComponentQuery.query('[name=searchByTreePopUp]')[0];
12670
																		pnl.store.setRootNode({
12671
																			expanded: true,
12672
																			nodetype: 'async',
12673
																			children: data_
12674
																			//[]
12675
																		});
12676
																	}
12677
																});
12678

    
12679
															}
12680
															me_.unmask();
12681
														},
12682
														afteritemexpand: function (node, index, item, eOpts) {
12683
															var me = this;
12684
															var data_ = null;
12685
															var idx = 0;
12686
															var tree_ = Ext.ComponentQuery.query('treepanel[name=searchByTreePopUp]')[0];
12687
															var v = tree_.getView();
12688
															tree_.mask('Expanding tree...');
12689
															var main_ = Ext.ComponentQuery.query('[name=ORMMain]')[0];
12690
															Ext.Ajax.request({
12691
																async: false,
12692
																url: '/ORM/GetRelObjectTreeAsync?node=' + node.get('Id') + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12693
																success: function (response) {
12694
																	var results = Ext.decode(response.responseText);
12695
																	data_ = results.results;
12696
																	console.log(data_)
12697
																}
12698
															});
12699

    
12700
															if (data_.length > 0) {
12701
																data_.forEach(function (rec) {
12702

    
12703
																	console.log(rec.Id)
12704
																	if (v.store.data.find('Id', rec.Id) == null) {
12705
																		node.appendChild(data_[idx])
12706
																	}
12707
																	idx++;
12708
																})
12709
															}
12710

    
12711
															setTimeout(function () {
12712

    
12713
																tree_.unmask();
12714
															}, 200);
12715

    
12716
														},
12717
														itemdblclick: function (this_, record, item, index, e, eOpts) {
12718
															var cek = false;
12719
															var class_ = objClassValue_;
12720
															var classDt = class_.split(']');
12721
															var classVal = "";
12722
															if (classDt.length == 1) {
12723
																classVal = classDt[0];
12724
															}
12725
															if (classDt.length > 1) {
12726
																classVal = classDt[1];
12727
															}
12728
															if (classVal == record.data.ObjectType) {
12729
																var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12730
																var type = 'rc';
12731
																if (form_.findField(targetField_).nameTable) {
12732
																	type = form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase();
12733
																}
12734
																if (type != "rc") {
12735
																	if (classVal == 'P' && MinovaUtil.GetMenuID() == 'PA02') {
12736
																		// cek apakah posisis sudah di assign
12737
																		var hasil = null;
12738
																		Ext.Ajax.request({
12739
																			async: false,
12740
																			method: 'POST',
12741
																			url: '/UserControl/GetStore',
12742
																			params: {
12743
																				tableName: 'PHROM0002',
12744
																				param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[LessThanEqual]' + StartDate_ + ',EndDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectId
12745
																			},
12746
																			success: function (response) {
12747
																				var results = Ext.decode(response.responseText);
12748
																				//hasil = results.data[0].RelationshipObject;
12749
																				hasil = results.data.length;
12750
																				if (hasil == 0) {
12751
																					cek = true;
12752
																				} else {
12753
																					//Ext.Msg.show({
12754
																					//    title: 'Warning',
12755
																					//    message: MinovaMessageData('OM0001', ''),
12756
																					//    buttons: Ext.Msg.OK,
12757
																					//     fn: function (choice) {
12758
																					//        console.log(choice);
12759
																					//        if (choice === 'ok') {
12760
																					//        }
12761

    
12762
																					//    }
12763
																					//});
12764
																					alert(MinovaMessageData('OM0001', ''))
12765
																				}
12766
																				//count = hasil.length
12767
																			}
12768
																		});
12769
																	} else {
12770
																		cek = true;
12771
																	}
12772
																} else {
12773
																	cek = true;
12774
																}
12775
															}
12776
															if (cek) {
12777
																// set value to form
12778
																var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12779
																form_.findField(targetField_).setValue('a');
12780
																form_.findField(targetField_).valData = 'a';
12781
																form_.findField(targetField_).setValue(record.data.Text);
12782
																form_.findField(targetField_).valData = record.data.ObjectId;
12783
																form_.findField(targetField_).focus();
12784
																if (form_.findField(targetField_).nextSibling()) {
12785
																	form_.findField(targetField_).nextSibling().focus();
12786
																} else {
12787
																	form_.findField(targetField_).blur();
12788
																}
12789
																Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12790
															}
12791

    
12792
														}
12793
													},
12794

    
12795
													columns: [{
12796
															xtype: 'treecolumn',
12797
															text: 'Organization Structure',
12798
															flex: 2,
12799
															sortable: true,
12800
															dataIndex: 'TextObject'
12801
														}, {
12802
															text: 'Object ID',
12803
															flex: 1,
12804
															sortable: true,
12805
															dataIndex: 'ObjectId',
12806
														}, {
12807
															text: 'Object Class',
12808
															flex: 1,
12809
															sortable: true,
12810
															dataIndex: 'ObjectType',
12811
														}, {
12812
															text: 'Object Abbr',
12813
															flex: 1,
12814
															sortable: true,
12815
															dataIndex: 'TextObject',
12816
														}, {
12817
															text: 'Start Date',
12818
															flex: 1,
12819
															sortable: true,
12820
															dataIndex: 'StartDate',
12821
														}, {
12822
															text: 'End Date',
12823
															flex: 1,
12824
															sortable: true,
12825
															dataIndex: 'EndDate',
12826
														}, {
12827
															xtype: 'actioncolumn',
12828
															text: 'Vacant Status',
12829
															flex: 1,
12830
															dataIndex: 'IsVacant',
12831
															sortable: true,
12832
															iconCls: 'fa-child',
12833
															renderer: function (value, metadata, record) {
12834
																if (record.data.ObjectType == "P") {
12835
																	var Vacant = record.data.IsVacant;
12836
																	if (!Vacant) {
12837
																		metadata.tdStyle = 'font-family: FontAwesome';
12838
																	}
12839

    
12840
																}
12841

    
12842
															},
12843
														}
12844
													]
12845

    
12846
												}
12847
											]
12848
										}
12849
									]
12850
								}, {
12851
									title: 'Search by Object',
12852
									height: 400,
12853
									autoScroll: true,
12854
									items: [{
12855
											xtype: 'form',
12856
											name: 'filterbyObj',
12857
											margin: '5 5 5 5',
12858
											buttons: [{
12859
													text: 'Search',
12860
													name: 'SearchAssign',
12861
													handler: function () {
12862
														var storeGrid = Ext.StoreMgr.lookup("gridObj");
12863
														var form = Ext.ComponentQuery.query('[name=filterbyObj]')[0].getForm();
12864
														if (form.isValid()) {
12865
															var values_ = form.getValues();
12866
															storeGrid.proxy.url = '/ORM/SearchByObject?StartDate=' + values_.StartDate + "&EndDate=99991231" + "&ObjectID=" + values_.ObjectID + "&ObjectClass=" + values_.ObjectClass +
12867
																"&ObjectClassTarget=" + values_.ObjectClassTarget + "&ObjectDescription=" + values_.ObjectDescription +
12868
																"&Abbreviation=" + values_.Abbreviation + "&MenuID=" + MinovaUtil.GetMenuID() +
12869
																"&TreeStructCode=" + values_.TreeStructCode;
12870
															storeGrid.load({});
12871
															storeGrid.loadPage(1);
12872

    
12873
														}
12874

    
12875
													}
12876
												}
12877
											],
12878
											items: [{
12879
													xtype: "datefield",
12880
													fieldLabel: "Date",
12881
													name: 'StartDate',
12882
													submitFormat: 'Ymd',
12883
													format: 'd/m/Y',
12884
													value: new Date(),
12885
													anchor: '50%',
12886
												}, {
12887
													xtype: "hidden",
12888
													fieldLabel: "Date",
12889
													name: 'ObjectClass',
12890
													value: AllObjectClass[0],
12891
													anchor: '50%',
12892
												}, {
12893
													xtype: "hidden",
12894
													fieldLabel: "Date",
12895
													name: 'EndDate',
12896
													value: '99991231',
12897
													anchor: '50%',
12898
												}, {
12899
													xtype: "combobox",
12900
													fieldLabel: "Object Class",
12901
													name: 'ObjectClassTarget',
12902
													allowBlank: false,
12903
													anchor: '50%',
12904
													displayField: 'desc',
12905
													valueField: 'code',
12906
													store: Ext.create('Ext.data.Store', {
12907
														storeId: 'storeYesNo',
12908
														fields: ['code', 'desc'],
12909
														data: [{
12910
																"desc": AllObjectClass[0],
12911
																"code": AllObjectClass[0]
12912
															}, {
12913
																"desc": AllObjectClass[2],
12914
																"code": AllObjectClass[2]
12915
															}
12916
														]
12917
													}),
12918
													queryMode: 'local',
12919
												}, {
12920
													xtype: "textfield",
12921
													fieldLabel: "Object ID",
12922
													name: 'ObjectID',
12923
													anchor: '50%',
12924
												}, {
12925
													xtype: "textfield",
12926
													fieldLabel: "Object Description",
12927
													name: 'ObjectDescription',
12928
													anchor: '50%',
12929
												}, {
12930
													xtype: "textfield",
12931
													fieldLabel: "Abbreviation",
12932
													name: 'Abbreviation',
12933
													anchor: '50%',
12934
												}, {
12935
													xtype: "hidden",
12936
													fieldLabel: "MenuID",
12937
													name: 'MenuID',
12938
													anchor: '50%',
12939
													value: MinovaUtil.GetMenuID()
12940
												}, {
12941
													xtype: "hidden",
12942
													fieldLabel: "TreeStructCode",
12943
													name: 'TreeStructCode',
12944
													anchor: '50%',
12945
													value: treeSructure_
12946
												},
12947
											],
12948
										}, {
12949
											xtype: "minovagrid1",
12950
											tableName: 'PDSBS0008',
12951
											name: "gridbyObject",
12952
											param: '',
12953
											autoLoad: false,
12954
											pagesize: 5,
12955
											storename: 'gridObj',
12956
											isLookup: true,
12957
											height: 250,
12958
											targetField: targetField_,
12959
											formname: formname_,
12960
											bodyPadding: 0,
12961
											listeners: {
12962
												afterrender: function (me_) {
12963
													if (treeSructure_ != 'O-O-P') {
12964
														var countCol = me_.columns.length;
12965
														me_.columns[countCol - 1].setHidden(true);
12966

    
12967
													}
12968
												},
12969
												itemdblclick: function (this_, record, item, index, e, eOpts) {
12970
													console.log(record.data);
12971
													var cek = false;
12972
													if (objClassValue_ == record.data.ObjectClass) {
12973
														var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12974
														if (form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase() != "rc") {
12975
															if (objClassValue_ == 'P') {
12976
																// cek apakah posisis sudah di assign
12977
																var hasil = null;
12978
																Ext.Ajax.request({
12979
																	async: false,
12980
																	method: 'POST',
12981
																	url: '/UserControl/GetStore',
12982
																	params: {
12983
																		tableName: 'PHROM0002',
12984
																		param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectID
12985
																	},
12986
																	success: function (response) {
12987
																		var results = Ext.decode(response.responseText);
12988
																		//hasil = results.data[0].RelationshipObject;
12989
																		hasil = results.data.length;
12990
																		if (hasil == 0) {
12991
																			cek = true;
12992
																		}
12993
																		//count = hasil.length
12994
																	}
12995
																});
12996

    
12997
															} else {
12998
																cek = true;
12999
															}
13000
														} else {
13001
															cek = true;
13002
														}
13003
													}
13004
													if (cek) {
13005
														var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
13006
														//form_.findField(targetField_).setValue(record.data.ObjectID);
13007
														//form_.findField(targetField_).valData = record.data.ObjectID + ' - ' + record.data.ObjectDescription;
13008
														form_.findField(targetField_).setValue('-');
13009
														form_.findField(targetField_).valData = '-';
13010
														form_.findField(targetField_).setValue(record.data.ObjectID);
13011
														form_.findField(targetField_).valData = record.data.ObjectID;
13012
														form_.findField(targetField_).setRawValue(record.data.ObjectID + ' - ' + record.data.ObjectDescription);
13013
														Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
13014
													} else {
13015
														alert(MinovaMessageData('OM0001', ''))
13016
													}
13017
												},
13018
												beforeclick: function () {
13019
													return false;
13020
												}
13021

    
13022
											},
13023
											dockedItems: [{
13024
													xtype: 'pagingtoolbar',
13025
													store: 'gridObj',
13026
													dock: 'bottom',
13027
													displayInfo: true
13028
												}
13029

    
13030
											]
13031
										},
13032
									]
13033

    
13034
								}
13035
							]
13036

    
13037
						}
13038
					]
13039
				},
13040
			]
13041

    
13042
		});
13043
		me.callParent(arguments);
13044
	}
13045
});
13046

    
13047
Ext.define('MinovaUtil.MinovaES.MinovaLookupTree', {
13048
	extend: 'Ext.form.field.Trigger',
13049
	alias: ['widget.minovalookuptree', 'widget.MinovaLookupTree'],
13050
	treeSructure: undefined, // object relationship
13051
	objClassValue: undefined, // object yang akan di input ke field
13052
	formname: undefined, // nama form
13053
	targetField: undefined, // nama field yang akan diset value
13054
	initComponent: function () {
13055

    
13056
		this.callParent();
13057
	},
13058
	getValue: function () {
13059
		var me = this;
13060
		var hasil = '';
13061
		if (this.valData) {
13062
			hasil = this.valData.split('-')[0].replace(' ', '');
13063

    
13064
		} else {
13065
			if (me.rawValue != '' && me.rawValue != undefined) {
13066
				hasil = me.rawValue.split('-')[0].replace(' ', '');
13067
			}
13068
		}
13069

    
13070
		return hasil;
13071
	},
13072
	getSubmitValue: function () {
13073
		var me = this;
13074
		var hasil = '';
13075
		if (this.valData) {
13076
			hasil = this.valData.split('-')[0].replace(' ', '');
13077
		} else {
13078
			if (me.rawValue != '' && me.rawValue != undefined) {
13079
				hasil = me.rawValue.split('-')[0].replace(' ', '');
13080
			}
13081
		}
13082

    
13083
		return hasil;
13084
	},
13085
	onTriggerClick: function () {
13086
		var _treeSructure = this.treeSructure;
13087
		var _objClassValue = this.objClassValue;
13088
		var _formname = this.formname;
13089
		var _targetField = this.name;
13090
		var _fieldLabel = this.fieldLabel;
13091
		var _objFilter = this.objFilter;
13092
		var Mainform = Ext.ComponentQuery.query('[name=' + _formname + ']')[0];
13093
		var _StartDate = MinovaUtil.GetNowDate();
13094
		if (Mainform) {
13095
			if (Mainform.getForm().findField('StartDate')) {
13096
				_StartDate = Mainform.getForm().findField('StartDate').getValue();
13097
			}
13098
		}
13099
		//alert(treeSructure_ + ',' + objClassValue_ + ',' + formname_ + ',' + targetField_)
13100
		if (_StartDate != "") {
13101
			Ext.create('MinovaES.view.orm.lookup.minovalookuptreePopup', {
13102
				name: _targetField + 'lookUp',
13103
				treeSructure: _treeSructure, // object relationship
13104
				objClassValue: _objClassValue, // object yang akan di input ke field
13105
				formname: _formname, // nama form
13106
				targetField: _targetField,
13107
				objFilter: _objFilter,
13108
				title: 'Lookup ' + _fieldLabel
13109
			}).show()
13110
		} else {
13111
			MinovaMessage('', 'BS0001', 'Start Date', 'E')
13112
		}
13113

    
13114
	},
13115
});
13116

    
13117
Ext.define('MinovaUtil.MinovaES.LookupEmployee', {
13118
	extend: 'Ext.window.Window',
13119
	alias: 'widget.minovalookupemployee',
13120
	requires: [],
13121
	height: '87%',
13122
	width: '41%',
13123
	minWidth: '50%',
13124
	maxWidth: '100%',
13125
	bodyPadding: 0,
13126
	formname: undefined,
13127
	name: 'popup_lookupEMPID',
13128
	test: undefined,
13129
	vtype: 'validateMinovaXss',
13130
	targetField: undefined,
13131
	valueField: undefined,
13132
	tableName: undefined,
13133
	LookupFunction: undefined,
13134
	isGrid: undefined,
13135
	listeners: {
13136
		afterrender: function (f) {
13137
			f.setTitle('Lookup - ' + f.targetField);
13138
		}
13139
	},
13140
	initComponent: function () {
13141
		var me = this;
13142
		var targetField_ = me.targetField;
13143
		var valueField_ = me.valueField;
13144
		var form = me.test;
13145
		var tableName_ = me.tableName;
13146
		var isGrid = me.isGrid_;
13147
		var LookupFunction = me.LookupFunction;
13148
		param_ = null;
13149

    
13150
		var filterParam_ = me.filterParam;
13151
		if (tableName_ == "PDSRC0002") {
13152
			fieldLabel_ = 'App ID/ External ID/ Full Name';
13153
		} else {
13154
			fieldLabel_ = 'Emp ID/ External ID/ Full Name';
13155
		}
13156
		Ext.applyIf(me, {
13157
			items: [{
13158
					items: [{
13159
							xtype: 'tabpanel',
13160
							items: [{
13161
									xtype: 'form',
13162
									title: 'Quick Search',
13163
									height: '70%',
13164
									items: [{
13165
											xtype: 'form',
13166
											name: 'frmSearch',
13167
											width: '100%',
13168
											height: 'auto',
13169
											dockedItems: [{
13170
													xtype: 'toolbar',
13171
													dock: 'top',
13172
													layout: 'vbox',
13173
													bodyPadding: 10,
13174
													border: 0,
13175
													items: [{
13176
															xtype: 'fieldset',
13177
															layout: 'hbox',
13178
															width: '100%',
13179
															border: 0,
13180
															padding: 0,
13181
															items: [{
13182
																	xtype: 'textfield',
13183
																	name: 'EmployeeSearch',
13184
																	fieldLabel: fieldLabel_,
13185
																	width: 470,
13186
																	labelWidth: 185,
13187
																	enableKeyEvents: true,
13188
																	filterParam: filterParam_,
13189
																	listeners: {
13190
																		specialkey: function (f, e) {
13191
																			if (e.getKey() == e.ENTER) {
13192
																				var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13193
																				var emp_ = emp.getValue();
13194
																				var store = Ext.data.StoreManager.lookup('storeQC');
13195
																				var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13196
																				if (tableName_ == 'PDSRC0002') {
13197
																					param_ = 'AppIDExternalIDFullName[like]' + emp_
13198
																				} else {
13199
																					param_ = 'EmpIDExternalIDFullName[like]' + emp_
13200
																				}
13201
																				if (this.filterParam) {
13202
																					param_ = param_ + ',' + this.filterParam_
13203
																				}
13204

    
13205
																				store.proxy.extraParams = {
13206
																					tableName: tableName_,
13207
																					param: param_,
13208
																					menuId: MinovaUtil.GetMenuID()
13209
																				};
13210
																				store.removeAll();
13211
																				store.reload();
13212
																				store.loadPage(1);
13213
																			}
13214
																		}
13215
																	}
13216
																}, {
13217
																	xtype: 'tbspacer',
13218
																	width: 5
13219
																}, {
13220
																	xtype: 'button',
13221
																	name: 'Search',
13222
																	text: 'Search',
13223
																	filterParam: filterParam_,
13224
																	handler: function () {
13225
																		var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13226
																		var emp_ = emp.getValue();
13227
																		var store = Ext.data.StoreManager.lookup('storeQC');
13228
																		var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13229

    
13230
																		if (tableName_ == 'PDSRC0002') {
13231
																			param_ = 'AppIDExternalIDFullName[like]' + emp_
13232
																		} else {
13233
																			param_ = 'EmpIDExternalIDFullName[like]' + emp_
13234
																		}
13235
																		if (this.filterParam) {
13236
																			param_ = param_ + ',' + this.filterParam
13237
																		}
13238
																		store.proxy.extraParams = {
13239
																			tableName: tableName_,
13240
																			param: param_,
13241
																			menuId: MinovaUtil.GetMenuID()
13242
																		};
13243
																		store.removeAll();
13244
																		store.reload();
13245
																		store.loadPage(1);
13246
																	}
13247
																}
13248
															]
13249
														}
13250
													]
13251
												}
13252
											]
13253
										}, {
13254
											items: [{
13255
													xtype: "minovagrid1",
13256
													name: "GridEmployeeID",
13257
													storename: 'storeQC',
13258
													tableName: tableName_,
13259
													param: '',
13260
													isLookup: true,
13261
													pagesize: 25,
13262
													height: 398,
13263
													LookupFunction: LookupFunction,
13264
													valueField: valueField_,
13265
													targetField: targetField_,
13266
													isGrid: true,
13267
													listeners: {
13268
														beforeedit: function () {
13269
															return false;
13270
														},
13271
														itemdblclick: function () {
13272
															var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
13273
															var selection = grid.getView().getSelectionModel().getSelection()[0];
13274
															var Emp_ = selection.data.EmployeeID;
13275
															LookupFunction = this.LookupFunction;
13276
															eval(LookupFunction);
13277
															var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13278
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13279
															Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13280
														}
13281
													},
13282
												}, {
13283
													xtype: 'pagingtoolbar',
13284
													store: 'storeQC',
13285
													dock: 'bottom',
13286
													displayInfo: true
13287
												}
13288
											]
13289
										}
13290
									]
13291
								}, {
13292
									title: 'Advance Search',
13293
									items: [{
13294
											xtype: 'form',
13295
											name: 'formlookup',
13296
											items: [{
13297
													xtype: 'minovaform',
13298
													name: 'frmlookup',
13299
													tableName: tableName_,
13300
													param: filterParam_,
13301
													isLookup: true,
13302
													listeners: {
13303
														onStockFormKeyPress: function (textfield, event, options) {
13304
															if (event.getKey() == event.ENTER) {
13305
																alert("test");
13306
															}
13307
														}
13308
													},
13309
													buttons: [{
13310
															text: 'Search',
13311
															filterParam: filterParam_,
13312
															listeners: {
13313
																click: function () {
13314
																	var store = Ext.data.StoreManager.lookup('storeadvance');
13315
																	var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
13316
																	grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13317
																	var values_ = form.getValues();
13318
																	var fields_ = form.getFields().items;
13319
																	var param_ = '';
13320
																	for (var i = 0; i < fields_.length; i++) {
13321
																		var val_ = form.getFields().items[i].getValue();
13322
																		var xtype_ = form.getFields().items[i].xtype;
13323
																		var oprator_ = '[like]';
13324
																		if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
13325
																			oprator_ = '[Equal]';
13326
																		}
13327
																		if (xtype_ == 'datefield') {
13328
																			if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
13329
																				oprator_ = '[LessThanEqual]';
13330
																			} else {
13331
																				oprator_ = '[GreaterThanEqual]';
13332
																			}
13333
																		}
13334
																		if (val_ != 'undefined' && val_ != "" && val_ != null) {
13335
																			param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
13336
																		}
13337
																	}
13338
																	if (this.filterParam_) {
13339
																		param_ = param_ + ',' + this.filterParam_
13340
																	}
13341
																	store.proxy.extraParams = {
13342
																		tableName: grid.tableName,
13343
																		param: param_,
13344
																		menuId: MinovaUtil.GetMenuID()
13345
																	};
13346
																	store.removeAll();
13347
																	store.reload();
13348
																	store.loadPage(1);
13349
																},
13350

    
13351
															}
13352
														}
13353
													]
13354
												}, {
13355
													xtype: 'minovagrid1', // update by hamid 20170208
13356
													name: 'gridlookup',
13357
													minHeight: 312,
13358
													height: 290,
13359
													tableName: tableName_, //'PDSEMP0001',
13360
													param: '',
13361
													isLookup: true,
13362
													storename: 'storeadvance',
13363
													pagesize: 25,
13364
													valueField: valueField_,
13365
													targetField: targetField_,
13366
													hidebutton: 0, // update by hamid 20170208
13367
													isGrid: true,
13368
													listeners: {
13369
														beforeedit: function () {
13370
															return false;
13371
														},
13372
														itemdblclick: function () {
13373
															var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13374
															var selection = grid.getView().getSelectionModel().getSelection()[0];
13375
															var Emp_ = selection.data.EmployeeID;
13376
															LookupFunction = this.LookupFunction;
13377
															eval(LookupFunction);
13378
															var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13379
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13380
															Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13381
														}
13382
													},
13383
													dockedItems: [{
13384
															xtype: 'pagingtoolbar',
13385
															store: 'storeadvance',
13386
															dock: 'bottom',
13387
															displayInfo: true
13388
														}
13389
													]
13390
												}
13391
											]
13392

    
13393
										}
13394
									]
13395

    
13396
								}
13397
							]
13398

    
13399
						}
13400
					]
13401
				}
13402
			]
13403
		});
13404
		me.callParent(arguments);
13405
	}
13406
});
13407

    
13408
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployee', {
13409
	extend: 'Ext.form.field.Trigger',
13410
	alias: 'widget.lookupemployee',
13411

    
13412
	formname: undefined,
13413
	fieldname: undefined,
13414
	allowBlank: undefined,
13415
	width: undefined,
13416
	tableName: undefined,
13417
	LookupFunction: undefined,
13418
	targetField: undefined,
13419
	vtype: 'validateMinovaXss',
13420
	fieldValue: undefined,
13421
	initComponent: function () {
13422

    
13423
		this.callParent();
13424
	},
13425
	onTriggerClick: function () {
13426
		var nameField_ = this.fieldname;
13427
		var blank = this.allowBlank;
13428
		var width_ = this.width;
13429
		var tableName_ = this.tableName;
13430
		var panelform = "form" + this.name;
13431
		//add filer by atin
13432
		var filterParam_ = this.filterParam;
13433
		// and add by atin
13434
		var _targetField = this.name;
13435
		if (this.targetField) {
13436
			_targetField = targetField
13437
		}
13438
		var fieldValue_ = this.fieldValue;
13439
		var _fieldLabel = this.fieldLabel;
13440

    
13441
		//var tableName_ = this.tableName;
13442
		var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13443
		var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13444
		var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13445
		var EmployeeID_ = EmployeeID.getValue();
13446
		var LookupFunction = this.LookupFunction;
13447
		var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13448
		if (count_lookup == 1) {
13449
			Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13450
			Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13451
		} else {
13452
			Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13453
				tableName: tableName_,
13454
				targetField: this.name,
13455
				fieldValue: fieldValue_,
13456
				LookupFunction: LookupFunction,
13457
				filterParam: filterParam_,
13458
			}).show()
13459
		}
13460
		var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13461
		text.setValue(EmployeeID_);
13462
		var store = Ext.data.StoreManager.lookup('storeQC');
13463
		if (EmployeeID_ !== "") {
13464

    
13465
			var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13466
			if (tableName_ == 'PDSEMP0002') {
13467
				param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13468
			} else {
13469
				param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13470
			}
13471
			if (filterParam_) {
13472
				param_ = param_ + ',' + filterParam_;
13473
			}
13474
			store.proxy.extraParams = {
13475
				tableName: tableName_, //'PDSEMP0002',
13476
				param: param_,
13477
				menuId: MinovaUtil.GetMenuID()
13478
			};
13479
			store.reload();
13480
		} else {
13481
			store.proxy.extraParams = {
13482
				tableName: tableName_, //'PDSEMP0002',
13483
				param: filterParam_,
13484
				menuId: MinovaUtil.GetMenuID()
13485
			};
13486
			store.reload();
13487
		}
13488

    
13489
	},
13490
	listeners: {
13491
		specialkey: function (f, e) {
13492
			if (e.getKey() == e.ENTER) {
13493
				//alert("about to submit");
13494
				var nameField_ = this.fieldname;
13495
				var blank = this.allowBlank;
13496
				var width_ = this.width;
13497
				var tableName_ = this.tableName;
13498
				var panelform = "form" + this.name;
13499
				//add filer by atin
13500
				var filterParam = this.filterParam;
13501
				// and add by atin
13502
				var _targetField = this.name;
13503
				var _fieldLabel = this.fieldLabel;
13504
				var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13505
				var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13506
				var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13507
				var EmployeeID_ = EmployeeID.getValue();
13508

    
13509
				var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13510
				if (count_lookup == 1) {
13511
					Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13512
					Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13513
				} else {
13514
					Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13515
						tableName: tableName_,
13516
						targetField: this.name,
13517
						fieldValue: this.fieldValue,
13518
						LookupFunction: this.LookupFunction,
13519
						filterParam: filterParam,
13520
					}).show()
13521
				}
13522
				var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13523
				text.setValue(EmployeeID_);
13524

    
13525
				if (EmployeeID_ !== "") {
13526
					var store = Ext.data.StoreManager.lookup('storeQC');
13527
					var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13528
					if (tableName_ == 'PDSEMP0002') {
13529
						param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13530
					} else {
13531
						param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13532
					}
13533
					if (filterParam_) {
13534
						param_ = param_ + ',' + filterParam_;
13535
					}
13536
					store.proxy.extraParams = {
13537
						tableName: tableName_, //'PDSEMP0002',
13538
						param: param_,
13539
						menuId: MinovaUtil.GetMenuID()
13540
					};
13541
					store.reload();
13542
				}
13543
			}
13544
		}
13545
	}
13546

    
13547
});
13548
Ext.define('MinovaUtil.MinovaES.UploadFile', {
13549
	extend: 'Ext.form.field.Trigger',
13550
	alias: 'widget.uploadfile',
13551

    
13552
	//fieldLabel: undefined,
13553
	uploadName: 'uploadName',
13554
	formname: undefined,
13555
	fieldname: undefined,
13556
	allowBlank: undefined,
13557
	width: undefined,
13558
	tableName: undefined,
13559
	initComponent: function () {
13560

    
13561
		this.callParent();
13562
	},
13563
	onTriggerClick: function () {
13564
		var nameField_ = this.fieldname;
13565
		var blank = this.allowBlank;
13566
		var width_ = this.width;
13567
		var tableName_ = this.tableName;
13568
		var panelform = "form" + this.name;
13569
		var val_ = this.value;
13570
		var _targetField = this.name;
13571
		var _fieldLabel = this.fieldLabel;
13572

    
13573
		//var tableName_ = this.tableName;
13574
		var count_lookup = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13575
		var lookupEMPID = Ext.ComponentQuery.query('[name=FormFileUpload]')[0];
13576
		var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13577
		var EmployeeID_ = EmployeeID.getValue();
13578

    
13579
		var FormFileUpload = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13580
		Ext.create('MinovaES.view.uploadfile.fileupload', {
13581
			tableName: tableName_,
13582
			targetField: this.name,
13583
			valueFile: val_,
13584
			titleLookup: _fieldLabel,
13585
		}).show()
13586

    
13587
	}
13588

    
13589
});
13590

    
13591
//atien
13592
Ext.define('MinovaES.view.uploadfile.fileupload', {
13593
	extend: 'Ext.window.Window',
13594
	alias: 'widget.fileupload',
13595
	requires: [
13596

    
13597
	],
13598
	//height: '67%',
13599
	width: '35%',
13600
	minWidth: '50%',
13601
	maxWidth: '100%',
13602
	bodyPadding: 0,
13603
	formname: undefined,
13604
	fieldname: undefined,
13605
	modal: true,
13606
	title: 'Upload ',
13607
	name: 'FormLookup',
13608
	test: undefined,
13609
	targetField: undefined,
13610
	tableName: undefined,
13611
	listeners: {
13612
		afterrender: function (f) {
13613
			f.setTitle('Upload ' + f.titleLookup);
13614
			var id_ = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0];
13615
			if (id_) {
13616
				var valID = id_.getValue();
13617
				Ext.ComponentQuery.query('textfield[name=FileID_]')[0].setValue(valID);
13618
			}
13619
		},
13620
	},
13621
	initComponent: function () {
13622
		var me = this;
13623
		var targetField_ = me.targetField;
13624
		var titleLookup_ = me.titleLookup;
13625
		var maxFileSize = me.maxFileSize;
13626
		var fileName = me.valueFile;
13627
		Ext.applyIf(me, {
13628
			items: [{
13629
					xtype: 'form',
13630
					name: 'FormFileUpload',
13631
					valueFile: fileName,
13632
					buttons: [{
13633
							xtype: 'button',
13634
							iconCls: 'fa-upload',
13635
							style: 'font-family: FontAwesome',
13636
							text: 'Upload',
13637
							action: 'Upload',
13638
							name: 'Upload',
13639
							handler: function () {
13640
								maxFileSize = Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].maxFileSize;
13641
								Ext.ComponentQuery.query('[name=FileMax]')[0].setValue(maxFileSize);
13642
								var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13643
								pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0]; // by hamid 20170206
13644
								if (form.isValid()) {
13645
									form.submit({
13646
										url: '/Devt/UploadFile',
13647
										waitMsg: 'Uploading your file...',
13648
										success: function (fp, o) {
13649
											var result = o.result;
13650
											Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].setValue(result.FileName);
13651
											Ext.ComponentQuery.query('[name=FormFileUpload]')[0].valueFile = result.FileName;
13652
											Ext.ComponentQuery.query('[name=download]')[0].fileName = result.FileName;
13653
											var fileID = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0]
13654
												if (fileID) {
13655
													fileID.setValue(result.ID);
13656
												}
13657

    
13658
												if (result.msg === "") {
13659
													if (me.onSuccess !== undefined)
13660
														me.onSuccess(result.FileName, result.content_type);
13661
													pnl.destroy(); // by hamid 20170206
13662
												} else
13663
													alert(result.msg);
13664
										}
13665
									});
13666
								}
13667
							}
13668
						}, {
13669
							xtype: 'button',
13670
							text: 'Clear',
13671
							width: 60,
13672
							handler: function () {
13673
								//Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13674
								Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(''); // by hamid 20170206
13675
							}
13676
						}, {
13677
							xtype: 'button',
13678
							text: 'Download',
13679
							name: 'download',
13680
							width: 60,
13681
							fileName: fileName,
13682
							handler: function (f) {
13683
								var url = '/Devt/GetFileData?FileName=' + f.fileName + '&download=true';
13684
								window.open(url, '_blank');
13685
							}
13686
							//href: '/Devt/GetFileData?FileName=' + me.valueFile + '&download=true',
13687

    
13688
						}
13689
					],
13690
					items: [{
13691
							xtype: 'filefield',
13692
							name: 'File',
13693
							fieldLabel: 'Select File',
13694
							//allowBlank: false,
13695
							//width: 270,
13696
							//labelWidth: 85,
13697
						}, {
13698
							xtype: 'textfield',
13699
							name: 'FileID_',
13700
							hidden: true,
13701
						}, {
13702
							xtype: 'textfield',
13703
							name: 'FileMax',
13704
							hidden: true,
13705
						}
13706
					]
13707
				}
13708
			]
13709
		});
13710
		me.callParent(arguments);
13711
	}
13712
});
13713
//atien
13714

    
13715

    
13716
//update by hamid 12012017
13717
Ext.define('MinovaES.view.uploadfile.fileupload1', {
13718
	extend: 'Ext.window.Window',
13719
	alias: 'widget.fileupload1',
13720
	requires: [
13721

    
13722
	],
13723
	height: '67%',
13724
	width: '21%',
13725
	minWidth: '50%',
13726
	maxWidth: '100%',
13727
	bodyPadding: 0,
13728
	formname: undefined,
13729
	fieldname: undefined,
13730
	//modal: true,
13731
	title: 'Lookup - Photo',
13732
	name: 'FormLookup',
13733
	test: undefined,
13734
	targetField: undefined,
13735
	tableName: undefined,
13736
	initComponent: function () {
13737
		var me = this;
13738
		var targetField_ = me.targetField;
13739
		var nameField_ = this.fieldname;
13740
		var form = me.test;
13741
		var tableName_ = me.tableName;
13742
		//var img_ = Ext.ComponentQuery.query('[name=Photo]')[0].getValue()
13743
		var img_ = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
13744
		Ext.applyIf(me, {
13745
			// items: [{
13746
			//xtype : 'panel',
13747
			items: [{
13748
					xtype: 'tabpanel',
13749
					//name: 'mainTab',
13750
					items: [{
13751
							xtype: 'form',
13752
							title: 'Upload File',
13753
							height: '70%',
13754
							name: 'FormFileUpload',
13755
							buttons: [{
13756
									xtype: 'button',
13757
									iconCls: 'fa-upload',
13758
									style: 'font-family: FontAwesome',
13759
									text: 'Upload',
13760
									action: 'Upload',
13761
									name: 'Upload',
13762
									handler: function () {
13763
										//var Tab = Ext.ComponentQuery.query('[name=mainTab]')[0].getActiveTab();
13764
										var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13765
										pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0];
13766
										if (form.isValid()) {
13767
											form.submit({
13768
												url: '/Devt/UploadFile',
13769
												waitMsg: 'Uploading your file...',
13770
												success: function (fp, o) {
13771
													var result = o.result;
13772
													Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(result.FileName)
13773
													//Ext.ComponentQuery.query('[name=Photo]')[0].setValue(result.FileName)
13774
													if (result.msg === "") {
13775
														//alert('success');
13776
														if (me.onSuccess !== undefined)
13777
															me.onSuccess(result.FileName, result.content_type);
13778
														pnl.destroy();
13779
													} else
13780
														alert(result.msg);
13781
												}
13782
											});
13783
										}
13784
									}
13785
								}, {
13786
									xtype: 'button',
13787
									text: 'Clear',
13788
									width: 60,
13789
									handler: function () {
13790
										Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13791
										//Ext.ComponentQuery.query('[name=Photo]')[0].setValue('');
13792

    
13793
									}
13794
								}
13795
							],
13796
							items: [{
13797
									xtype: 'fieldset',
13798
									layout: 'hbox',
13799
									width: '100%',
13800
									bodyPadding: 10,
13801
									border: 0,
13802
									padding: 0,
13803
									items: [{
13804
											xtype: 'filefield',
13805
											name: 'File',
13806
											fieldLabel: 'Select File',
13807
											//allowBlank: false,
13808
											width: 270,
13809
											labelWidth: 85,
13810
										}
13811
									]
13812
								}
13813
							]
13814
							//items: [{
13815
							//    xtype: 'form',
13816
							//    name: 'Photo',
13817
							//    width: '100%',
13818
							//    height: 'auto',
13819
							//    dockedItems: [{
13820
							//        xtype: 'toolbar',
13821
							//        dock: 'top',
13822
							//        layout: 'vbox',
13823
							//        bodyPadding: 10,
13824
							//        border: 0,
13825
							//        items: [{
13826
							//            xtype: 'fieldset',
13827
							//            layout: 'hbox',
13828
							//            width: '100%',
13829
							//            border: 0,
13830
							//            padding: 0,
13831
							//            items: [{
13832
							//                xtype: 'filefield',
13833
							//                name: 'SelectFile',
13834
							//                fieldLabel: 'Select File',
13835
							//                width: 270,
13836
							//                labelWidth: 85,
13837
							//                enableKeyEvents: true,
13838
							//                buttonText: 'Browse',
13839
							//            }]
13840

    
13841
							//        }
13842
							//        ]
13843
							//    }
13844
							//    ]
13845
							//}]
13846
						}, {
13847
							title: 'View Image',
13848
							//height: 400,
13849
							//autoScroll: true,
13850
							items: [{
13851
									xtype: 'form',
13852
									name: 'ViewImage',
13853
									//margin: '5 5 5 5',
13854
									items: [{
13855
											xtype: 'form',
13856
											buttons: [{
13857
													text: 'Download',
13858
													handler: function () {},
13859
													href: '/Devt/GetFileData?FileName=' + img_ + '&download=true'
13860

    
13861
												}
13862
											],
13863
											items: [{
13864
													xtype: 'image',
13865
													//id: 'imageuser',
13866
													src: '/Devt/GetFileData?FileName=' + img_ + '&download=false'
13867
												},
13868
											]
13869
										}
13870
									]
13871

    
13872
								}
13873
							]
13874

    
13875
						}
13876
					]
13877

    
13878
				}
13879
			]
13880

    
13881
		});
13882
		me.callParent(arguments);
13883
	}
13884
});
13885

    
13886
Ext.define('MinovaUtil.MinovaES.Column.MinovaPictureColumn', {
13887
	extend: 'Ext.grid.column.Column',
13888
	alias: ['widget.minovapicturecolumn'],
13889
	alternateClassName: 'Ext.grid.MinovaPictureColumn',
13890
	//undefinedText: '&#160;',
13891
	defaultRenderer: function (value) {
13892
		return '<img alt="" class="icon-imagecolumn" src = "/Devt/GetFileData?FileName=' + value + '&download=false"  id="">'
13893
	}
13894
});
13895

    
13896
Ext.define('MinovaUtil.MinovaES.MinovaFixValue', {
13897
	extend: 'Ext.form.field.ComboBox',
13898
	alias: ['widget.MinovaFixValue', 'widget.minovafixvalue'],
13899
	fixedValue: undefined,
13900
	anchor: '50%',
13901
	queryMode: 'local',
13902
	forceSelection: true, // cek data
13903
	getValue: function () {
13904
		var value = this.value;
13905

    
13906
		return value;
13907
	},
13908
	getSubmitValue: function () {
13909
		var value = this.value;
13910

    
13911
		return value;
13912
	},
13913
	initComponent: function () {
13914
		var me = this;
13915
		var storeData = [];
13916
		//var str= "y=yes|| n=no";
13917
		var str = me.fixedValue;
13918
		var hasil = str.split('||');
13919
		hasil.forEach(function (h) {
13920
			store_ = h.split('=')
13921
				storeData.push({
13922
					code: store_[0],
13923
					desc: store_[1],
13924

    
13925
				});
13926
		});
13927
		Ext.applyIf(me, {
13928

    
13929
			store: Ext.create('Ext.data.Store', {
13930
				storeId: 'store' + name,
13931
				autoLoad: true,
13932
				data: storeData
13933

    
13934
			}),
13935
		});
13936
		me.callParent(arguments);
13937
	}
13938
});
13939

    
13940
Ext.define('MinovaUtil.MinovaES.MinovaDecimal', {
13941
	extend: 'Ext.form.field.Text',
13942
	alias: ['widget.MinovaDecimal', 'widget.minovadecimal'],
13943
	fixedValue: undefined,
13944
	anchor: '50%',
13945
	getValue: function () {
13946
		var value = this.value;
13947

    
13948
		return value.replace(',', '.');
13949
	},
13950
	getSubmitValue: function () {
13951
		var value = this.value;
13952
		return value.replace(',', '.');
13953
	},
13954
	initComponent: function () {
13955
		var me = this;
13956
		Ext.applyIf(me, {});
13957
		me.callParent(arguments);
13958
	}
13959
});
13960

    
13961
Ext.define('MinovaUtil.com.xtype.MinovaWorflowEditor', {
13962
	extend: 'Ext.panel.Panel',
13963
	alias: ['widget.minovawfeditor', 'widget.minovafloweditor'],
13964
	title: undefined,
13965
	initComponent: function () {
13966
		// this.layout = 'fit';
13967
		this.readOnly = this.readOnly ? this.readOnly : false;
13968
		this.autoScroll = true;
13969
		this.height = 480;
13970
		this.title = this.title ? this.title : 'Workflow editor';
13971
		this.html = '<div id="minovaGraphContainer" title="' + this.title
13972
			 + '" style="background:url(\'' + mxBasePath
13973
			 + '/editors/images/grid.gif\')"></div>';
13974
		this.tbar = [{
13975
				xtype: 'button',
13976
				hidden: true,
13977
				text: 'add Task',
13978
				handler: this.addTask
13979

    
13980
			}, {
13981
				xtype: 'button',
13982
				text: 'Remove',
13983
				hidden: true,
13984
				handler: this.removeCells
13985
			},
13986
			'->', {
13987
				xtype: 'cycle',
13988
				text: 'layout',
13989
				menu: {
13990
					// id : 'view-type-menu',
13991
					items: [{
13992
							text: 'mxCircleLayout'
13993
						}, {
13994
							text: 'mxCompactTreeLayout'
13995
						}, {
13996
							text: 'mxCompositeLayout'
13997
						}, {
13998
							text: 'mxEdgeLabelLayout'
13999
						}, {
14000
							text: 'mxFastOrganicLayout'
14001
						}, {
14002
							text: 'mxGraphLayout'
14003
						}, {
14004
							text: 'mxHierarchicalLayout'
14005
						}
14006
						// , {
14007
						// text : 'mxParallelEdgeLayout'
14008
						// }
14009
						// , {
14010
						// text : 'mxPartitionLayout'
14011
						// },
14012
						// {
14013
						// text : 'mxStackLayout'
14014
						// }
14015
					]
14016
				},
14017
				changeHandler: function (cycleBtn, activeItem) {
14018
					// Ext.Msg.alert('Change View', activeItem.text);
14019
					try {
14020
						switch (activeItem.text) {
14021
						case 'mxCircleLayout':
14022
							var layout = new mxCircleLayout(graph);
14023
							layout.execute(graph.getDefaultParent());
14024
							break;
14025
						case 'mxCompactTreeLayout':
14026
							var layout = new mxCompactTreeLayout(graph,
14027
									false);
14028
							layout.execute(graph.getDefaultParent());
14029
							break;
14030
						case 'mxCompositeLayout':
14031
							var first = new mxFastOrganicLayout(graph);
14032
							var second = new mxParallelEdgeLayout(graph);
14033
							var layout = new mxCompositeLayout(graph, [
14034
										first, second], first);
14035
							layout.execute(graph.getDefaultParent());
14036
							break;
14037
						case 'mxEdgeLabelLayout':
14038
							var layout = new mxEdgeLabelLayout(graph);
14039
							layout.execute(graph.getDefaultParent());
14040
							break;
14041
						case 'mxFastOrganicLayout':
14042
							var layout = new mxCircleLayout(graph);
14043
							layout.execute(graph.getDefaultParent());
14044
							break;
14045
						case 'mxGraphLayout':
14046
							var layout = new mxFastOrganicLayout(graph);
14047
							layout.execute(graph.getDefaultParent());
14048
							break;
14049
						case 'mxParallelEdgeLayout':
14050
							var layout = new mxParallelEdgeLayout(graph);
14051
							layout.execute(graph.getDefaultParent());
14052
							break;
14053
						case 'mxPartitionLayout':
14054
							var layout = new mxPartitionLayout(graph,
14055
									true, 10, 20);
14056
							layout.execute(graph.getDefaultParent());
14057
							break;
14058
						case 'mxStackLayout':
14059
							var layout = new mxStackLayout(graph, false);
14060
							layout.execute(graph.getDefaultParent());
14061
							break;
14062
						case 'mxHierarchicalLayout':
14063
							var layout = new mxHierarchicalLayout(graph);
14064
							layout.parallelEdgeSpacing = 100;
14065
							layout.moveParent = true;
14066
							layout.parentBorder = 100;
14067
							layout.intraCellSpacing = 100;
14068
							layout.interRankCellSpacing = 100;
14069
							layout.interHierarchySpacing = 0;
14070
							layout.orientation = mxConstants.DIRECTION_NORTH;
14071
							//layout.traverseAncestors = false;
14072
							layout.execute(parent);
14073
							break;
14074

    
14075
						}
14076
					} catch (e) {}
14077
				}
14078
			}, {
14079
				xtype: 'tbseparator'
14080
			}, {
14081
				text: 'In',
14082
				name: 'zoomin',
14083
				handler: function () {
14084
					graph.zoomIn();
14085
					graph.fit();
14086
				}
14087
			}, {
14088
				text: 'Out',
14089
				name: 'zoomout',
14090
				handler: function () {
14091
					graph.zoomOut();
14092
					graph.fit();
14093
				}
14094
			}
14095
			// , {
14096
			// text : 'Fit',
14097
			// name : 'zoomfit',
14098
			// handler : function() {
14099
			// graph.fit();
14100
			// }
14101
			// }
14102
		, {
14103
				xtype: 'tbseparator'
14104
			}, {
14105
				xtype: 'button',
14106
				text: 'print',
14107
				name: 'print',
14108
				handler: this.printPreview
14109
			}
14110
		]
14111

    
14112
		this.autoScroll = true;
14113
		this.listeners = {
14114
			afterrender: this.onAfterRender,
14115
			resize: this.onResize
14116
		}
14117

    
14118
		this.callParent(arguments);
14119
	},
14120
	printPreview: function () {
14121
		var preview = new mxPrintPreview(graph);
14122
		preview.print();
14123
	},
14124
	onAfterRender: function (_this) {
14125
		this.main(document.getElementById('minovaGraphContainer'));
14126
	},
14127
	removeCells: function () {
14128
		graph.removeCells();
14129
	},
14130
	onResize: function () {
14131
		try {
14132
			graph.sizeDidChange();
14133
		} catch (e) {}
14134
	},
14135
	addTask: function () {
14136
		graph.insertVertex(graph.getDefaultParent(), null, 'Task-' + Ext.id(),
14137
			0, 0, 80, 30);
14138
	},
14139
	main: function (container) {
14140
		// Checks if the browser is supported
14141
		if (!mxClient.isBrowserSupported()) {
14142
			// Displays an error message if the browser is not supported.
14143
			// mxUtils.error('Browser is not supported!', 200, false);
14144
			alert('Browser is not supported!');
14145
		} else {
14146
			// // Creates the graph inside the given container
14147
			// graph = new mxGraph(container);
14148
			// var keyHandler = new mxKeyHandler(graph);
14149
			// // keyHandler.bindKey(46, function(evt) {
14150
			// // if (graph.isEnabled()) {
14151
			// // graph.removeCells();
14152
			// // }
14153
			// // });
14154
			// wfEditor = new mxEditor();
14155
			//
14156
			// // Enables rubberband selection
14157
			//
14158
			// new mxRubberband(graph);
14159
			// graph.setPanning(true);
14160
			// graph.setTooltips(true);
14161
			//
14162
			// // graph.setConnectable(true);
14163
			// // graph.setDropEnabled(true);
14164
			// // graph.connectionHandler.setCreateTarget(true);
14165
			//
14166
			// // Gets the default parent for inserting new cells. This
14167
			// // is normally the first child of the root (ie. layer 0).
14168
			// var parent = graph.getDefaultParent();
14169

    
14170
			// Enables crisp rendering in SVG
14171
			// mxShape.prototype.crisp = true;
14172

    
14173
			// Enables guides
14174
			// mxGraphHandler.prototype.guidesEnabled = true;
14175

    
14176
			// Alt disables guides
14177
			// mxGuide.prototype.isEnabledForEvent = function(evt) {
14178
			// return !mxEvent.isAltDown(evt);
14179
			// };
14180

    
14181
			// Enables snapping waypoints to terminals
14182
			// mxEdgeHandler.prototype.snapToTerminals = true;
14183

    
14184
			// Enables orthogonal connect preview in IE
14185
			// mxConnectionHandler.prototype.movePreviewAway = true;
14186

    
14187
			// Creates the graph inside the given container
14188
			graph = new mxGraph(container);
14189
			// graph.disconnectOnMove = false;
14190
			// graph.foldingEnabled = false;
14191
			// graph.cellsResizable = false;
14192
			// graph.extendParents = false;
14193
			// graph.setConnectable(true);
14194
			graph.setAllowDanglingEdges(false);
14195

    
14196
			// Implements perimeter-less connection points as fixed points
14197
			// (computed before the edge style).
14198
			// graph.view.updateFixedTerminalPoint = function(edge, terminal,
14199
			// source, constraint) {
14200
			// mxGraphView.prototype.updateFixedTerminalPoint.apply(this,
14201
			// arguments);
14202
			//
14203
			// var pts = edge.absolutePoints;
14204
			// var pt = pts[(source) ? 0 : pts.length - 1];
14205
			//
14206
			// if (terminal != null && pt == null
14207
			// && this.getPerimeterFunction(terminal) == null) {
14208
			// edge.setAbsoluteTerminalPoint(new mxPoint(this
14209
			// .getRoutingCenterX(terminal), this
14210
			// .getRoutingCenterY(terminal)),
14211
			// source)
14212
			// }
14213
			// };
14214

    
14215
			// Changes the default edge style
14216
			graph.getStylesheet().getDefaultEdgeStyle()['edgeStyle'] = 'orthogonalEdgeStyle';
14217
			// delete graph.getStylesheet().getDefaultEdgeStyle()['endArrow'];
14218

    
14219
			// Implements the connect preview
14220
			graph.connectionHandler.createEdgeState = function (me) {
14221
				var edge = graph.createEdge(null, null, null, null, null);
14222

    
14223
				return new mxCellState(this.graph.view, edge, this.graph
14224
					.getCellStyle(edge));
14225
			};
14226

    
14227
			// Uncomment the following if you want the container
14228
			// to fit the size of the graph
14229
			// graph.setResizeContainer(true);
14230

    
14231
			// Enables rubberband selection
14232
			new mxRubberband(graph);
14233

    
14234
			// Disables basic selection and cell handling
14235
			graph.setEnabled(false);
14236

    
14237
			// Gets the default parent for inserting new cells. This
14238
			// is normally the first child of the root (ie. layer 0).
14239
			var parent = graph.getDefaultParent();
14240

    
14241
			// Enables HTML labels as wrapping is only available for those
14242
			graph.htmlLabels = true;
14243

    
14244
			// Disables in-place editing for edges
14245
			// graph.isCellEditable = function(cell) {
14246
			// return !this.model.isEdge(cell);
14247
			// };
14248

    
14249
			// Changes the default vertex style in-place
14250
			var style = graph.getStylesheet().getDefaultVertexStyle();
14251
			style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14252
			style[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14253
			style[mxConstants.STYLE_PERIMETER_SPACING] = 1; // 6;
14254
			style[mxConstants.STYLE_ROUNDED] = true;
14255
			style[mxConstants.STYLE_SHADOW] = true;
14256

    
14257
			style = graph.getStylesheet().getDefaultEdgeStyle();
14258
			style[mxConstants.STYLE_ROUNDED] = true;
14259
			style[mxConstants.STYLE_EDGE] = mxEdgeStyle.SegmentConnector;
14260

    
14261
			var style2 = new Object();
14262
			style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14263
			style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
14264
			style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14265
			style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14266
			style2[mxConstants.STYLE_ROUNDED] = true;
14267
			style2[mxConstants.STYLE_SHADOW] = true;
14268
			style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14269
			style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14270
			style2[mxConstants.STYLE_ALIGN] = 'center';
14271
			style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14272
			graph.getStylesheet().putCellStyle('RHOMBUS', style2);
14273

    
14274
			style2 = new Object();
14275
			style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_ELLIPSE;
14276
			style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.EllipsePerimeter;
14277
			style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14278
			style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14279
			style2[mxConstants.STYLE_ROUNDED] = true;
14280
			style2[mxConstants.STYLE_SHADOW] = true;
14281
			style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14282
			style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14283
			style2[mxConstants.STYLE_ALIGN] = 'center';
14284
			style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14285
			graph.getStylesheet().putCellStyle('ELLIPSE', style2);
14286

    
14287
			style2 = new Object();
14288
			style2[mxConstants.STYLE_SHAPE] = 'label';
14289
			style2[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom';
14290
			style2[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse';
14291
			style2[mxConstants.STYLE_INDICATOR_WIDTH] = 34;
14292
			style2[mxConstants.STYLE_INDICATOR_HEIGHT] = 34;
14293
			style2[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment
14294
			style2[mxConstants.STYLE_IMAGE_ALIGN] = 'center';
14295
			graph.getStylesheet().putCellStyle('LABEL', style2);
14296

    
14297
			style2 = new Object();
14298
			style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RECTANGLE;
14299
			style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14300
			style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14301
			style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14302
			style2[mxConstants.STYLE_ROUNDED] = false;
14303
			style2[mxConstants.STYLE_SHADOW] = true;
14304
			style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14305
			style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14306
			graph.getStylesheet().putCellStyle('RECTANGLE', style2);
14307
			// Adds cells to the model in a single step
14308
			graph.getModel().beginUpdate();
14309
			try {
14310
				// var v1 = graph.insertVertex(parent, null, '1', 20, 0, 150,
14311
				// 80);
14312
				// var v2 = graph.insertVertex(parent, null, '2', 20, 50, 150,
14313
				// 80);
14314
				// var v3 = graph
14315
				// .insertVertex(parent, null, '3', 20, 100, 150, 80);
14316
				// var v4 = graph
14317
				// .insertVertex(parent, null, '4', 120, 50, 150, 80);
14318
				// var v5 = graph.insertVertex(parent, null, '5', 120, 100, 150,
14319
				// 80);
14320
				//
14321
				// var e1 = graph.insertEdge(parent, null, '', v1, v2);
14322
				// var e2 = graph.insertEdge(parent, null, '', v2, v3);
14323
				// var e3 = graph.insertEdge(parent, null, '', v2, v4);
14324
				// var e4 = graph.insertEdge(parent, null, '', v4, v5);
14325
				// var e5 = graph.insertEdge(parent, null, '', v3, v5);
14326
			}
14327
			finally {
14328
				// Updates the display
14329
				graph.getModel().endUpdate();
14330
			}
14331

    
14332
		}
14333
	}
14334
});
14335

    
14336
Ext.define('MinovaUtil.MinovaES.MinovaMonthPicker', {
14337
	extend: 'Ext.form.field.Text',
14338
	alias: ['widget.minovamonthpicker', 'widget.minovamonthpicker'],
14339
	tableName: undefined,
14340
	param: undefined,
14341
	formtarget_: this.formtarget,
14342
	Sequence: this.Sequence,
14343
	anchor: '50%',
14344
	pagesize: undefined,
14345
	triggerCls: 'x-form-date-trigger',
14346
	getValue: function () {
14347
		var Sequence = this.Sequence;
14348
		var me = this;
14349
		var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14350
		var hasil = "";
14351
		if (_e != undefined) {
14352
			if (_e.value[0] >= 0) {
14353
				if (_e.value[0].toString() != '') {
14354
					var _m = (_e.value[0] + 1).toString();
14355
					if (_m.length == 1) {
14356
						_m = '0' + _m;
14357
					}
14358
					hasil = _e.value[1].toString() + _m;
14359
				}
14360
			}
14361
		}
14362
		if (hasil == "") {
14363
			me.value = null;
14364
			me.submitValue = null;
14365
		} else {
14366
			me.submitValue = hasil;
14367
		}
14368
		return hasil;
14369
	},
14370
	clearValue: function () {
14371
		var Sequence = this.Sequence;
14372
		var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14373
		_e.value[0] = '';
14374
		_e.value[1] = '';
14375
		return this.setValue('');
14376
	},
14377
	getRawValue: function () {
14378
		var Sequence = this.Sequence;
14379
		var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14380
		var hasil = null;
14381
		if (_e != undefined) {
14382
			var _m = (_e.value[0] + 1).toString();
14383
			if (_m.length == 1) {
14384
				_m = '0' + _m;
14385
			}
14386
			hasil = _e.value[1].toString() + _m;
14387
		}
14388
		return hasil;
14389
	},
14390
	initComponent: function () {
14391
		var target = this.formtarget;
14392
		this.callParent();
14393
	},
14394
	onTriggerClick: function () {
14395
		var Sequence = this.Sequence;
14396
		var count_lookup = Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]').length;
14397
		if (count_lookup == 1) {
14398
			Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].show();
14399
		} else {
14400
			var target_ = this.formtarget;
14401
			var fieldtarget = this.name;
14402
			Ext.create('Ext.window.Window', {
14403
				title: 'Select Period',
14404
				name: Sequence + 'monthLookup',
14405
				layout: 'fit',
14406
				bodyPadding: 0,
14407
				border: false,
14408
				items: [{
14409
						xtype: 'monthpicker',
14410
						name: Sequence + 'monthselect',
14411
						listeners: {
14412
							afterrender: function () {
14413
								var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14414

    
14415
								_e.setValue(new Date());
14416
							}
14417
						},
14418
						onOkClick: function () {
14419
							var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14420
							if (_e.value[0] == null || _e.value[1] == null) {
14421
								alert('Pilih Tanggal!');
14422
								return;
14423
							}
14424

    
14425
							var _m = (_e.value[0] + 1).toString();
14426
							if (_m.length == 1) {
14427
								_m = '0' + _m;
14428
							}
14429
							var _period = _m + ' - ' + _e.value[1].toString();
14430

    
14431
							var _f = Ext.ComponentQuery.query('[name=' + fieldtarget + ']')[0];
14432
							_f.setValue(_period);
14433

    
14434
							Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14435
						},
14436
						onCancelClick: function () {
14437
							Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14438
						}
14439
					}
14440
				]
14441
			}).show();
14442
		}
14443
	}
14444
});
14445

    
14446
Ext.define('MinovaUtil.MinovaES.Column.MinovaTimeColumn', {
14447
	extend: 'Ext.grid.column.Column',
14448
	alias: ['widget.minovatimecolumn'],
14449
	alternateClassName: 'Ext.grid.MinovaTimeColumn',
14450
	undefinedText: '&#160;',
14451
	defaultRenderer: function (value) {
14452
		if (value === "") {
14453
			return "";
14454
		}
14455
		return hasil;
14456
	}
14457
});
14458

    
14459
Ext.define('MinovaUtil.MinovaES.Column.MinovaCurrencyColumn', {
14460
	extend: 'Ext.grid.column.Column',
14461
	alias: ['widget.minovacurrancycolumn'],
14462
	undefinedText: '&#160;',
14463
	defaultRenderer: function (value) {
14464
		if (value === "" || value === undefined || value === null) {
14465
			return this.undefinedText;
14466
		}
14467

    
14468
		Ext.util.Format.thousandSeparator = ",";
14469
		Ext.util.Format.decimalSeparator = ".";
14470
		value = value.toString().replace(',', '.');
14471
		return Ext.util.Format.number(value, '0,000.00');
14472
	}
14473
});
14474

    
14475
Ext.define('MinovaUtil.MinovaES.Field.MinovaCurrencyField', {
14476
	extend: 'Ext.form.field.Text',
14477
	alias: ['widget.MinovaCurrencyField', 'widget.minovacurrencyfield'],
14478
	undefinedText: '&#160;',
14479
	defaultRenderer: function (value) {
14480
		if (value === "" || value === undefined || value === null) {
14481
			return this.undefinedText;
14482
		}
14483

    
14484
		Ext.util.Format.thousandSeparator = ",";
14485
		Ext.util.Format.decimalSeparator = ".";
14486
		value = value.toString().replace(',', '.');
14487
		return Ext.util.Format.number(value, '0000.00');
14488
	}
14489
});
14490

    
14491
Ext.define('MinovaUtil.MinovaES.MinovaGridMD', {
14492
	extend: 'Ext.grid.Panel',
14493
	requires: ['Ext.grid.RowNumberer'],
14494
	alias: 'widget.minovagridmd',
14495
	//alias: ['widget.minovagrid1', 'widget.minovagrid'],
14496
	//alias: ['widget.minovagrid1', 'widget.minovagrid'],
14497
	alternateClassName: 'Ext.grid.MinovaGrid',
14498
	//controller:'orm-manage2-controller',
14499
	tableName: undefined,
14500
	isLookup: undefined,
14501
	param: undefined,
14502
	pagesize: undefined,
14503
	storename: undefined,
14504
	layoutType: undefined,
14505
	enableLocking: true,
14506
	autoLoad: undefined,
14507
	multiSelect: undefined,
14508
	getTableName: function () {
14509
		return this.tableName;
14510
	},
14511

    
14512
	initComponent: function () {
14513
		var me = this;
14514
		var cols_ = [];
14515
		var fieldeditor = {};
14516
		var hasil = null;
14517
		var autoLoad = true;
14518
		var LangID = localStorage.LangId;
14519
		var fielGrid = 'rec.GridView == 1';
14520
		var locking = true;
14521
		var checkSelection = '';
14522
		var widthLock = 250;
14523
		if (me.multiSelect) {
14524
			locking = false;
14525
			checkSelection = 'checkboxmodel';
14526
			widthLock = 40;
14527
		}
14528
		//var _url = 'GetAllField';
14529
		if (me.autoLoad == false) {
14530
			autoLoad = false;
14531
		}
14532
		parameter = null;
14533
		if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14534
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
14535
			fielGrid = 'rec.LookupGrid == 1';
14536
			locking = false;
14537

    
14538
		} else {
14539
			parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
14540
				//autoLoad = false;
14541
				//_url = 'GetAllFieldGridLookUp';
14542
		};
14543

    
14544
		//Ext.Ajax.request({
14545
		//	async : false,
14546
		//	method : 'POST',
14547
		//	url : '/Devt/' + _url + '?tableName=' + me.tableName,
14548
		//	success : function (response) {
14549
		//		var results = Ext.decode(response.responseText);
14550
		//		hasil = results.data;
14551
		//	}
14552
		//});
14553
		//hamid03102016
14554

    
14555
		Ext.Ajax.request({
14556
			async: false,
14557
			method: 'POST',
14558
			url: '/UserControl/GetStore',
14559
			params: {
14560
				tableName: 'PDSBS0007',
14561
				param: parameter
14562
			},
14563
			success: function (response) {
14564
				var results = Ext.decode(response.responseText);
14565
				hasil = results.data;
14566
			}
14567
		});
14568
		//end
14569

    
14570
		if (hasil.length > 0) {
14571

    
14572
			Ext.each(hasil, function (rec) {
14573
				var null_ = null;
14574
				if (rec.IsPrimaryKey == true) {
14575
					null_ = false;
14576
				}
14577
				if (rec.IsRequired == true) {
14578
					null_ = false;
14579
				} else {
14580
					null_ = true;
14581
				}
14582

    
14583
				if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14584
					if (rec.LookupGrid == 1) {
14585
						switch (rec.FormatRef) {
14586
						case "file":
14587
							cols_.push({
14588
								xtype: 'minovapicturecolumn',
14589
								text: rec.HeaderTitle,
14590
								dataIndex: rec.FieldName,
14591
								width: 100,
14592
								//filter: {
14593
								//    type: 'image',
14594
								//    itemDefaults: {
14595
								//        emptyText: 'Search for...'
14596
								//    }
14597
								//}
14598
							});
14599
							break
14600
						case "date":
14601
							cols_.push({
14602
								xtype: 'minovadatecolumn',
14603
								text: rec.HeaderTitle,
14604
								dataIndex: rec.FieldName,
14605
								width: 100,
14606
								filter: {
14607
									type: 'date',
14608
									itemDefaults: {
14609
										emptyText: 'Search for...'
14610
									}
14611
								}
14612
							});
14613
							break
14614
						case "amount":
14615
							cols_.push({
14616
								xtype: 'minovacurrancycolumn',
14617
								text: rec.HeaderTitle,
14618
								align: 'right',
14619
								dataIndex: rec.FieldName,
14620
								width: 100,
14621
								filter: {
14622
									type: 'number',
14623
									itemDefaults: {
14624
										emptyText: 'Search for...'
14625
									}
14626
								}
14627
							});
14628
							break
14629
						case "amountencrypt":
14630
							cols_.push({
14631
								xtype: 'minovaamountcolumn',
14632
								align: 'right',
14633
								text: rec.HeaderTitle,
14634
								dataIndex: rec.FieldName,
14635
								width: 100,
14636
								filter: {
14637
									type: 'string',
14638
									itemDefaults: {
14639
										emptyText: 'Search for...'
14640
									}
14641
								}
14642
							});
14643
							break
14644
						case "datetime":
14645
							cols_.push({
14646
								xtype: 'minovadatetimecolumn',
14647
								text: rec.HeaderTitle,
14648
								dataIndex: rec.FieldName,
14649
								width: 140,
14650
								filter: {
14651
									type: 'string',
14652
									itemDefaults: {
14653
										emptyText: 'Search for...'
14654
									}
14655
								}
14656
							});
14657
							break
14658
						default:
14659
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14660
								cols_.push({
14661
									text: rec.HeaderTitle,
14662
									dataIndex: rec.FieldName,
14663
									width: 100,
14664
									filter: {
14665
										type: 'string',
14666
										itemDefaults: {
14667
											emptyText: 'Search for...'
14668
										}
14669
									}
14670
								});
14671
							} else if (rec.SearchType == '2') {
14672
								cols_.push({
14673
									xtype: 'minovalookupcolumn',
14674
									text: rec.HeaderTitle,
14675
									tableName: rec.TableRef,
14676
									dataIndex: rec.FieldName,
14677
									filter: {
14678
										itemDefaults: {
14679
											emptyText: 'Search for...'
14680
										}
14681
									}
14682
								});
14683
							} else if (rec.TableRef != "") {
14684
								if (rec.TableRef != null) {
14685
									var valueField = null;
14686
									var displayValue = null;
14687
									Ext.Ajax.request({
14688
										async: false,
14689
										method: 'POST',
14690
										url: '/UserControl/GetStore',
14691
										params: {
14692
											tableName: 'SDATATABLEFIELD',
14693
											param: 'TableName[equal]' + rec.TableRef
14694
										},
14695
										success: function (response) {
14696
											var results = Ext.decode(response.responseText);
14697
											data_ = results.data;
14698
											if (data_ != undefined) {
14699
												valueField_ = $.grep(data_, function (r) {
14700
														return r.ValueField == '1'
14701
													});
14702
												valueField = valueField_[0].FieldName
14703
													displayValue_ = $.grep(data_, function (r) {
14704
														return r.DisplayValue == '1'
14705
													});
14706
												displayValue = displayValue_[0].FieldName
14707
											}
14708
										}
14709
									});
14710
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14711
									var count_ = 0;
14712
									if (store_) {
14713
										count_ = store_.count();
14714
									}
14715
									if (count_ == 0) {
14716
										Ext.create('Ext.data.Store', {
14717
											storeId: 'store_' + rec.FieldName,
14718
											//autoLoad: true,
14719
											proxy: {
14720
												method: 'POST',
14721
												type: 'ajax',
14722
												url: '/UserControl/GetStore',
14723
												extraParams: {
14724
													tableName: rec.TableRef,
14725
													param: rec.ParamCombo
14726
												},
14727
												reader: {
14728
													type: 'json',
14729
													root: 'data',
14730
													totalProperty: 'data[0].TotalCount'
14731
												}
14732
											}
14733
										})
14734
									}
14735
									cols_.push({
14736
										xtype: 'minovacombocolumn',
14737
										text: rec.HeaderTitle,
14738
										dataIndex: rec.FieldName,
14739
										valueField: valueField,
14740
										displayField: displayValue,
14741
										store: 'store_' + rec.FieldName,
14742
										filter: {
14743
											type: 'list',
14744
											itemDefaults: {
14745
												emptyText: 'Search for...'
14746
											}
14747
										}
14748
									});
14749
								}
14750

    
14751
							} else {
14752
								cols_.push({
14753
									text: rec.HeaderTitle,
14754
									dataIndex: rec.FieldName,
14755
									filter: {
14756
										itemDefaults: {
14757
											emptyText: 'Search for...'
14758
										}
14759
									}
14760
								});
14761
							}
14762
							break
14763
						}
14764
					} else {
14765
						cols_.push({
14766
							text: rec.HeaderTitle,
14767
							dataIndex: rec.FieldName,
14768
							hidden: true,
14769
							filter: {
14770
								itemDefaults: {
14771
									emptyText: 'Search for...'
14772
								}
14773
							}
14774
						});
14775
					}
14776

    
14777
				} else {
14778
					if (rec.GridView == 1) {
14779
						switch (rec.FormatRef) {
14780
						case "file":
14781
							cols_.push({
14782
								xtype: 'minovapicturecolumn',
14783
								text: rec.HeaderTitle,
14784
								dataIndex: rec.FieldName,
14785
								width: 100,
14786
								//filter: {
14787
								//    type: '',
14788
								//    itemDefaults: {
14789
								//        emptyText: 'Search for...'
14790
								//    }
14791
								//}
14792
							});
14793
							break
14794
						case "date":
14795
							cols_.push({
14796
								xtype: 'minovadatecolumn',
14797
								text: rec.HeaderTitle,
14798
								dataIndex: rec.FieldName,
14799
								width: 100,
14800
								filter: {
14801
									type: 'date',
14802
									itemDefaults: {
14803
										emptyText: 'Search for...'
14804
									}
14805
								}
14806
							});
14807
							break
14808
						case "amountencrypt":
14809
							cols_.push({
14810
								xtype: 'minovaamountcolumn',
14811
								align: 'right',
14812
								text: rec.HeaderTitle,
14813
								dataIndex: rec.FieldName,
14814
								width: 100,
14815
								filter: {
14816
									type: 'string',
14817
									itemDefaults: {
14818
										emptyText: 'Search for...'
14819
									}
14820
								}
14821
							});
14822
							break
14823
						case "amount":
14824
							cols_.push({
14825
								text: rec.HeaderTitle,
14826
								dataIndex: rec.FieldName,
14827
								width: 100,
14828
								filter: {
14829
									type: 'number',
14830
									itemDefaults: {
14831
										emptyText: 'Search for...'
14832
									}
14833
								}
14834
							});
14835
							break
14836
						case "datetime":
14837
							cols_.push({
14838
								xtype: 'minovadatetimecolumn',
14839
								text: rec.HeaderTitle,
14840
								dataIndex: rec.FieldName,
14841
								width: 140,
14842
								filter: {
14843
									type: 'string',
14844
									itemDefaults: {
14845
										emptyText: 'Search for...'
14846
									}
14847
								}
14848
							});
14849
							break
14850
						default:
14851
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14852
								cols_.push({
14853
									text: rec.HeaderTitle,
14854
									dataIndex: rec.FieldName,
14855
									width: 100,
14856
									filter: {
14857
										type: 'string',
14858
										itemDefaults: {
14859
											emptyText: 'Search for...'
14860
										}
14861
									}
14862
								});
14863
							} else if (rec.SearchType == '2') {
14864
								cols_.push({
14865
									xtype: 'minovalookupcolumn',
14866
									text: rec.HeaderTitle,
14867
									tableName: rec.TableRef,
14868
									dataIndex: rec.FieldName,
14869
									filter: {
14870
										itemDefaults: {
14871
											emptyText: 'Search for...'
14872
										}
14873
									}
14874
								});
14875
							} else if (rec.TableRef != "" && rec.SearchType != '2') {
14876
								if (rec.TableRef != null) {
14877
									var valueField = null;
14878
									var displayValue = null;
14879
									Ext.Ajax.request({
14880
										async: false,
14881
										method: 'POST',
14882
										url: '/UserControl/GetStore',
14883
										params: {
14884
											tableName: 'SDATATABLEFIELD',
14885
											param: 'TableName[equal]' + rec.TableRef
14886
										},
14887
										success: function (response) {
14888
											var results = Ext.decode(response.responseText);
14889
											data_ = results.data;
14890
											//if (data_ != undefined) {
14891
											if (data_.length > 0) {
14892
												valueField_ = $.grep(data_, function (r) {
14893
														return r.ValueField == '1'
14894
													});
14895
												valueField = valueField_[0].FieldName
14896
													displayValue_ = $.grep(data_, function (r) {
14897
														return r.DisplayValue == '1'
14898
													});
14899
												displayValue = displayValue_[0].FieldName
14900
											} else {
14901
												MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
14902
											}
14903
										}
14904
									});
14905
									var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14906
									var count_ = 0;
14907
									if (store_) {
14908
										count_ = store_.count();
14909
									}
14910
									if (count_ == 0) {
14911
										var paramFilter = rec.ParamCombo;
14912
										if (rec.TableRef.toLowerCase() == 'phrom0001' && rec.ParamCombo.length == 1) {
14913
											paramFilter = 'ObjectClass[=]' + paramFilter;
14914
										}
14915
										Ext.create('Ext.data.Store', {
14916
											storeId: 'store_' + rec.FieldName,
14917
											autoLoad: false,
14918
											proxy: {
14919
												method: 'POST',
14920
												type: 'ajax',
14921
												url: '/UserControl/GetStore',
14922
												extraParams: {
14923
													tableName: rec.TableRef,
14924
													param: paramFilter
14925
												},
14926
												reader: {
14927
													type: 'json',
14928
													root: 'data',
14929
													totalProperty: 'data[0].TotalCount'
14930
												}
14931
											}
14932
										})
14933
									}
14934
									cols_.push({
14935
										xtype: 'minovacombocolumn',
14936
										text: rec.HeaderTitle,
14937
										dataIndex: rec.FieldName,
14938
										valueField: valueField,
14939
										displayField: displayValue,
14940
										store: 'store_' + rec.FieldName,
14941
										filter: {
14942
											type: 'list',
14943
											itemDefaults: {
14944
												emptyText: 'Search for...'
14945
											}
14946
										}
14947
									});
14948
								}
14949

    
14950
							} else if (rec.FixedValue != "") {
14951
								cols_.push({
14952
									xtype: 'minovacombocolumnfixvalue',
14953
									text: rec.HeaderTitle,
14954
									dataIndex: rec.FieldName,
14955
									fixedValue: rec.FixedValue,
14956
									filter: {
14957
										type: 'list',
14958
										itemDefaults: {
14959
											emptyText: 'Search for...'
14960
										}
14961
									}
14962
								});
14963
							} else {
14964
								cols_.push({
14965
									text: rec.HeaderTitle,
14966
									dataIndex: rec.FieldName,
14967
									filter: {
14968
										itemDefaults: {
14969
											emptyText: 'Search for...'
14970
										}
14971
									}
14972
								});
14973
							}
14974
							break
14975
						}
14976
					} else {
14977
						cols_.push({
14978
							text: rec.HeaderTitle,
14979
							dataIndex: rec.FieldName,
14980
							hidden: true,
14981
							filter: {
14982
								itemDefaults: {
14983
									emptyText: 'Search for...'
14984
								}
14985
							}
14986
						});
14987
					}
14988

    
14989
				}
14990
			});
14991
		};
14992
		var param_ = me.param;
14993
		if (param_ == undefined) {
14994
			param_ = ''
14995
		}
14996
		var jsStoreGrid = new Ext.data.Store({
14997
				storeId: me.storename,
14998
				autoLoad: autoLoad,
14999
				pageSize: me.pagesize,
15000
				proxy: {
15001
					method: 'POST',
15002
					type: 'ajax',
15003
					url: '/UserControl/GetStorePaging',
15004
					extraParams: {
15005
						tableName: me.tableName,
15006
						param: param_,
15007
						//menuId: MinovaUtil.GetMenuID()
15008
					},
15009
					reader: {
15010
						type: 'json',
15011
						root: 'data',
15012
						totalProperty: 'totalRecords'
15013
					}
15014
				},
15015
			});
15016
		Ext.applyIf(me, {
15017
			autoScroll: true,
15018
			enableLocking: locking,
15019
			lockedGridConfig: {
15020
				header: false,
15021
				collapsible: true,
15022
				width: widthLock,
15023
				forceFit: locking,
15024
				listeners: {
15025
					render: function (grid) {
15026
						var pagingToolbar = grid.child('pagingtoolbar');
15027
						if (pagingToolbar) {
15028
							grid.remove(pagingToolbar, true);
15029
						}
15030
					}
15031
				}
15032
			},
15033
			listeners: {
15034
				viewready: function () {
15035
					if (autoLoad == true) {
15036
						this.getStore().loadPage(1);
15037
					}
15038

    
15039
				},
15040
				beforeedit: function () {
15041
					return false;
15042
				}
15043
			},
15044
			lockedViewConfig: {
15045
				scroll: 'horizontal'
15046
			},
15047
			viewConfig: {
15048
				emptyText: 'No Data Display',
15049
				deferEmptyText: false,
15050
				//Add Nana For Autosize Column Mode Grid MD
15051
				listeners: {
15052
					refresh: function (dataview) {
15053
						Ext.each(dataview.panel.columns, function (column) {
15054
							if (column.autoSizeColumn == false)
15055
								column.autoSizeColumn = true;
15056
							column.autoSize();
15057
							console.log('GridMD');
15058
						})
15059
					},
15060
					//afterrender: function (dataview) {
15061
					//	console.log(dataview);
15062
					//	dataview.getStore().reload();
15063
					//}
15064
					afterrender: function (dataview) {
15065
						Ext.defer(function () {
15066
							dataview.store.reload();
15067
						}, 2500, this);
15068
					}
15069
				}
15070
			},
15071
			//for chekbox
15072
			selModel: {
15073
				//type: 'cellmodel'
15074
			},
15075
			selType: checkSelection,
15076
			columns: cols_,
15077
			store: jsStoreGrid,
15078
			plugins: [{
15079
					ptype: 'gridfilters'
15080
				}
15081
			],
15082

    
15083
		});
15084
		me.callParent(arguments);
15085
	}
15086

    
15087
});
15088

    
15089
Ext.define('MinovaUtil.MinovaES.MinovaPMSEditAbleGrid', {
15090
	extend: 'Ext.form.Panel',
15091
	alias: ['widget.MinovaPMSEditAbleGrid', 'widget.Minovapmseditablegrid', 'widget.minovapmseditablegrid'],
15092
	requires: [
15093
		'Ext.grid.plugin.CellEditing',
15094
		'Ext.grid.Panel',
15095
	],
15096
	anchor: '100%',
15097
	tableName: undefined,
15098
	apprasalType: undefined,
15099
	empID: undefined,
15100
	hideButton: undefined,
15101
	multiSelect: undefined,
15102
	initComponent: function () {
15103
		var me = this;
15104
		var isLookup = me.isLookup;
15105
		var hide_ = false;
15106
		var widthLock = 250;
15107
		var checkSelection = '';
15108
		if (me.hideButton == true) {
15109
			hide_ = true;
15110
		}
15111
		if (me.multiSelect) {
15112
			locking = false;
15113
			checkSelection = 'checkboxmodel';
15114
			widthLock = 40;
15115
		}
15116
		var tableName = me.tableName;
15117
		var cols = [];
15118
		var fieldStore = [];
15119
		var _url = 'GetAllField';
15120
		var hasil = null;
15121
		var height = me.height;
15122
		var storeID = 'store' + me.tableName;
15123
		var gridName = 'grid' + me.name;
15124
		if (me.storeName) {
15125
			storeID = me.storeName;
15126
		}
15127
		var empID = me.empID;
15128
		var apprasalType = me.apprasalType;
15129
		var LangID = MinovaUtil.GetLangID();
15130
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
15131
			Ext.Ajax.request({
15132
				async: false,
15133
				method: 'POST',
15134
				url: '/Performance/getFieldPMS',
15135
				params: {
15136
					tableName: 'PDSPMS001',
15137
					_param: parameter
15138
				},
15139
				success: function (response) {
15140
					var results = Ext.decode(response.responseText);
15141
					hasil = Ext.decode(results.data);
15142
				}
15143
			});
15144
		var addData = 'var data={';
15145
		if (hasil.length > 0) {
15146
			Ext.each(hasil, function (rec) {
15147
				fieldStore.push(rec.FieldName)
15148
				if (rec.FieldName != 'Sequence') {
15149
					addData = addData + rec.FieldName + ":" + "'',";
15150
				}
15151
				var null_ = null;
15152
				var ReadOnly_ = false;
15153
				if (rec.IsPrimaryKey == true) {
15154
					null_ = false;
15155
				}
15156
				if (rec.IsRequired == true) {
15157
					null_ = false;
15158
				} else {
15159
					null_ = true;
15160
				}
15161
				if (rec.ReadOnly == '1') {
15162
					ReadOnly_ = true;
15163
				}
15164
				var Hidden_ = false;
15165
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
15166
					Hidden_ = true;
15167
					null_ = true;
15168
				}
15169
				if (rec.GridView == 1) {
15170
					switch (rec.FormatRef) {
15171
					case "date":
15172
						cols.push({
15173
							xtype: 'minovadatecolumn',
15174
							hidden: Hidden_,
15175
							text: rec.HeaderTitle,
15176
							dataIndex: rec.FieldName,
15177
							filter: {
15178
								itemDefaults: {
15179
									emptyText: 'Search for...',
15180
								}
15181
							},
15182
							editor: {
15183
								allowBlank: null_,
15184
								xtype: 'datefield',
15185
								hideMode: 'visibility',
15186
								readOnly: ReadOnly_,
15187
								id: tableName + rec.FieldName,
15188
								fieldGrid: rec.FieldName,
15189
								nameTable: rec.TableName,
15190
							}
15191
						});
15192
						break
15193
					case "amount":
15194
						cols.push({
15195
							xtype: 'minovacurrancycolumn',
15196
							//renderer: Ext.util.Format.numberRenderer("0,0"),
15197
							text: rec.HeaderTitle,
15198
							align: 'right',
15199
							dataIndex: rec.FieldName,
15200
							hidden: Hidden_,
15201
							filter: {
15202
								itemDefaults: {
15203
									emptyText: 'Search for...'
15204
								}
15205
							},
15206
							editor: {
15207
								allowBlank: null_,
15208
								xtype: 'minovacurrencyfield',
15209
								//renderer: Ext.util.Format.numberRenderer("0,0"),
15210
								//vtype: 'validateDecimal',
15211
								readOnly: ReadOnly_,
15212
								id: tableName + rec.FieldName,
15213
								nameTable: rec.TableName,
15214
								fieldGrid: rec.FieldName,
15215
								fieldStyle: 'text-align:right;',
15216
								value: '0',
15217

    
15218
							}
15219
						});
15220
						break
15221
					case "time":
15222
						var DefaultValue = rec.DefaultValue;
15223
						if (DefaultValue == '') {
15224
							defaultValue = '00:00';
15225
						}
15226
						cols.push({
15227
							//xtype: 'minovatimecolumn',
15228
							xtype: 'timefield',
15229
							format: 'H:i',
15230
							submitFormat: 'Hi',
15231
							text: rec.HeaderTitle,
15232
							dataIndex: rec.FieldName,
15233
							hidden: Hidden_,
15234
							//renderer: Ext.util.Format.dateRenderer('G:i'),
15235
							filter: {
15236
								itemDefaults: {
15237
									emptyText: 'Search for...'
15238
								}
15239
							},
15240
							editor: {
15241
								allowBlank: null_,
15242
								xtype: 'timefield',
15243
								readOnly: ReadOnly_,
15244
								id: tableName + rec.FieldName,
15245
								format: 'H:i',
15246
								submitFormat: 'Hi',
15247
								increment: 5,
15248
								value: DefaultValue,
15249
								anchor: '100%',
15250
								listeners: {}
15251
								//renderer: Ext.util.Format.dateRenderer('G:i'),
15252
							}
15253
						});
15254
						break
15255
					default:
15256
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
15257
							cols.push({
15258
								text: rec.HeaderTitle,
15259
								dataIndex: rec.FieldName,
15260
								width: 100,
15261
								filter: {
15262
									type: 'string',
15263
									itemDefaults: {
15264
										emptyText: 'Search for...'
15265
									}
15266
								}
15267
							});
15268
						} else if (rec.SearchType == '0') {
15269
							var valueField = null;
15270
							var displayValue = null;
15271
							var TableRef = undefined;
15272
							if (rec.TableRef != '') {
15273
								TableRef = rec.TableRef;
15274

    
15275
								Ext.Ajax.request({
15276
									async: false,
15277
									method: 'POST',
15278
									url: '/UserControl/GetStore',
15279
									params: {
15280
										tableName: 'SDATATABLEFIELD',
15281
										param: 'TableName[equal]' + rec.TableRef
15282
									},
15283
									success: function (response) {
15284
										var results = Ext.decode(response.responseText);
15285
										data_ = results.data;
15286
										if (data_ != undefined) {
15287
											valueField_ = $.grep(data_, function (r) {
15288
													return r.ValueField == '1'
15289
												});
15290
											valueField = valueField_[0].FieldName
15291
												displayValue_ = $.grep(data_, function (r) {
15292
													return r.DisplayValue == '1'
15293
												});
15294
											displayValue = displayValue_[0].FieldName
15295
										}
15296
									}
15297
								});
15298

    
15299
								//create Store
15300
								Ext.create('Ext.data.Store', {
15301
									storeId: 'store_' + me.tableName + rec.FieldName,
15302
									autoLoad: true,
15303
									proxy: {
15304
										method: 'POST',
15305
										type: 'ajax',
15306
										url: '/UserControl/GetStore',
15307
										extraParams: {
15308
											tableName: TableRef,
15309
											param: rec.ParamCombo
15310
										},
15311
										reader: {
15312
											type: 'json',
15313
											root: 'data',
15314
											totalProperty: 'data[0].TotalCount'
15315
										}
15316
									}
15317
								});
15318
							} else if (rec.FixedValue != '') {
15319
								var storeData = [];
15320
								var str = rec.FixedValue;
15321
								var hasil = str.split('||');
15322
								hasil.forEach(function (h) {
15323
									store_ = h.split('=')
15324
										storeData.push({
15325
											code: store_[0],
15326
											desc: store_[1],
15327

    
15328
										});
15329
								});
15330

    
15331
								valueField = 'code';
15332
								displayValue = 'desc';
15333

    
15334
								Ext.create('Ext.data.Store', {
15335
									storeId: 'store_' + me.tableName + rec.FieldName,
15336
									autoLoad: true,
15337
									data: storeData
15338
								})
15339
							}
15340

    
15341
							cols.push({
15342
								xtype: 'minovacombocolumn',
15343
								hidden: Hidden_,
15344
								text: rec.HeaderTitle,
15345
								dataIndex: rec.FieldName,
15346
								valueField: valueField,
15347
								displayField: displayValue,
15348
								store: 'store_' + me.tableName + rec.FieldName,
15349
								editor: {
15350
									allowBlank: null_,
15351
									xtype: 'combobox',
15352
									readOnly: ReadOnly_,
15353
									id: tableName + rec.FieldName,
15354
									nameTable: rec.TableName,
15355
									fieldGrid: rec.FieldName,
15356
									valueField: valueField,
15357
									displayField: displayValue,
15358

    
15359
									store: 'store_' + me.tableName + rec.FieldName,
15360
								},
15361
								filter: {
15362
									type: 'list',
15363
									itemDefaults: {
15364
										emptyText: 'Search for...'
15365
									}
15366
								}
15367
							});
15368
						} else if (rec.SearchType == '5') {
15369
							var valueField = null;
15370
							var displayValue = null;
15371
							var AdditionaldisplayValue = null;
15372
							var TableRef = undefined;
15373
							if (rec.TableRef != '') {
15374
								TableRef = rec.TableRef;
15375
								Ext.Ajax.request({
15376
									async: false,
15377
									method: 'POST',
15378
									url: '/UserControl/GetStore',
15379
									params: {
15380
										tableName: 'SDATATABLEFIELD',
15381
										param: 'TableName[equal]' + rec.TableRef
15382
									},
15383
									success: function (response) {
15384
										var results = Ext.decode(response.responseText);
15385
										data_ = results.data;
15386
										if (data_ != undefined) {
15387
											valueField_ = $.grep(data_, function (r) {
15388
													return r.ValueField == '1'
15389
												});
15390
											if (valueField_.length > 0) {
15391
												valueField = valueField_[0].FieldName
15392
											}
15393

    
15394
											displayValue_ = $.grep(data_, function (r) {
15395
													return r.DisplayValue == '1' || r.DisplayValue == '2'
15396
												});
15397
											if (displayValue_.length > 0) {
15398
												displayValue = displayValue_[0].FieldName;
15399
											}
15400
											if (displayValue_.length >= 2) {
15401
												AdditionaldisplayValue = displayValue_[1].FieldName
15402
											}
15403
										}
15404
									}
15405
								});
15406
							}
15407
							Ext.create('Ext.data.Store', {
15408
								storeId: 'store_' + me.tableName + rec.FieldName,
15409
								autoLoad: true,
15410
								proxy: {
15411
									method: 'POST',
15412
									type: 'ajax',
15413
									url: '/UserControl/GetStoreAuth',
15414
									extraParams: {
15415
										tableName: TableRef,
15416
										param: rec.ParamCombo,
15417
										menuId: MinovaUtil.GetMenuID()
15418
									},
15419
									reader: {
15420
										type: 'json',
15421
										root: 'data',
15422
										totalProperty: 'data[0].TotalCount'
15423
									}
15424
								}
15425
							});
15426
							cols.push({
15427
								xtype: 'minovacombocolumn',
15428
								hidden: Hidden_,
15429
								text: rec.HeaderTitle,
15430
								dataIndex: rec.FieldName,
15431
								valueField: valueField,
15432
								displayField: displayValue,
15433
								store: 'store_' + me.tableName + rec.FieldName,
15434
								tpl: Ext.create('Ext.XTemplate',
15435
									'<ul class="x-list-plain"><tpl for=".">',
15436
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15437
									'</tpl></ul>'),
15438
								displayTpl: Ext.create('Ext.XTemplate',
15439
									'<tpl for=".">',
15440
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15441
									'</tpl>'),
15442
								editor: {
15443
									allowBlank: null_,
15444
									xtype: 'combobox',
15445
									readOnly: ReadOnly_,
15446
									id: rec.TableName + rec.FieldName,
15447
									nameTable: rec.TableName,
15448
									fieldGrid: rec.FieldName,
15449
									valueField: valueField,
15450
									displayField: displayValue,
15451
									store: 'store_' + me.tableName + rec.FieldName,
15452
									value: rec.DefaultValue,
15453
									tpl: Ext.create('Ext.XTemplate',
15454
										'<ul class="x-list-plain"><tpl for=".">',
15455
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15456
										'</tpl></ul>'),
15457
									displayTpl: Ext.create('Ext.XTemplate',
15458
										'<tpl for=".">',
15459
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15460
										'</tpl>')
15461
								},
15462
								renderer: function (value) {
15463
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
15464
									var index = store.find(valueField, value);
15465
									var val = "";
15466
									if (index != -1) {
15467
										var rc = store.getAt(index);
15468
										//val = rc.get(displayValue);
15469
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
15470
									} else {
15471
										val = value;
15472
									}
15473
									return val;
15474
								},
15475
								filter: {
15476
									type: 'list',
15477
									itemDefaults: {
15478
										emptyText: 'Search for...'
15479
									}
15480
								}
15481
							});
15482
						} else if (rec.SearchType == '2') {
15483
							var triger = (rec.TriggerCombo).split('$');
15484
							var targetField_ = triger[0];
15485
							var fieldValue_ = triger[1];
15486
							cols.push({
15487
								text: rec.HeaderTitle,
15488
								hidden: Hidden_,
15489
								dataIndex: rec.FieldName,
15490
								filter: {
15491
									itemDefaults: {
15492
										emptyText: 'Search for...'
15493
									}
15494
								},
15495
								editor: {
15496
									allowBlank: null_,
15497
									xtype: 'minovalookupgrid',
15498
									readOnly: ReadOnly_,
15499
									isGrid: true,
15500
									fieldTarget: targetField_,
15501
									fieldValue: fieldValue_,
15502
									isGrid: true,
15503
									id: tableName + rec.FieldName,
15504
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
15505
									triggerCls: 'x-form-search-trigger',
15506
									vtype: 'alphanum', // disable space
15507
									nameTable: rec.TableName,
15508
									fieldGrid: rec.FieldName,
15509
									LookupFunction: rec.LookupFunction,
15510
									listeners: {
15511
										change: function (val) {
15512
											var custumFunc = rec.SelectFunction;
15513
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15514
												Ext.Ajax.request({
15515
													async: false,
15516
													method: 'POST',
15517
													url: '/UserControl/GetStore',
15518
													params: {
15519
														tableName: 'PCMFUNC',
15520
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15521
													},
15522
													success: function (response) {
15523
														var results = Ext.decode(response.responseText);
15524
														data_ = results.data[0];
15525
														if (data_ != undefined) {
15526
															custumFunc = data_.FunctionCode;
15527
														}
15528
													}
15529
												});
15530
											}
15531
											if (custumFunc) {
15532
												eval(custumFunc)
15533
											}
15534
										}
15535
									}
15536
								}
15537
							});
15538
						} else if (rec.SearchType == '3') {
15539
							cols.push({
15540
								text: rec.HeaderTitle,
15541
								hidden: Hidden_,
15542
								dataIndex: rec.FieldName,
15543
								filter: {
15544
									itemDefaults: {
15545
										emptyText: 'Search for...'
15546
									}
15547
								},
15548
								editor: {
15549
									allowBlank: null_,
15550
									// xtype: 'minovalookuptreePopup',
15551
									xtype: 'MinovaLookupTree',
15552
									readOnly: ReadOnly_,
15553
									id: tableName + rec.FieldName,
15554
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
15555
									triggerCls: 'x-form-search-trigger',
15556
									vtype: 'alphanum', // disable space
15557
									treeSructure: rec.SearchFunction, //'O-O-P',
15558
									objClassValue: rec.ParamCombo, //'O',
15559
									nameTable: rec.TableName,
15560
									fieldGrid: rec.FieldName,
15561
									listeners: {
15562
										change: function (val) {
15563
											var custumFunc = rec.SelectFunction;
15564
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15565
												Ext.Ajax.request({
15566
													async: false,
15567
													method: 'POST',
15568
													url: '/UserControl/GetStore',
15569
													params: {
15570
														tableName: 'PCMFUNC',
15571
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15572
													},
15573
													success: function (response) {
15574
														var results = Ext.decode(response.responseText);
15575
														data_ = results.data[0];
15576
														if (data_ != undefined) {
15577
															custumFunc = data_.FunctionCode;
15578
														}
15579
													}
15580
												});
15581
											}
15582
											if (custumFunc) {
15583
												eval(custumFunc)
15584
											}
15585
										}
15586
									}
15587
								}
15588
							});
15589
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
15590
							var triger = (rec.TriggerCombo).split('&');
15591
							var targetField_ = triger[0];
15592
							var fieldValue_ = triger[0];
15593
							cols.push({
15594
								text: rec.HeaderTitle,
15595
								hidden: Hidden_,
15596
								dataIndex: rec.FieldName,
15597
								filter: {
15598
									itemDefaults: {
15599
										emptyText: 'Search for...'
15600
									}
15601
								},
15602
								editor: {
15603
									allowBlank: null_,
15604
									xtype: 'lookupemployee',
15605
									readOnly: ReadOnly_,
15606
									isGrid: true,
15607
									fieldTarget: targetField_,
15608
									fieldValue: fieldValue_,
15609
									isGrid: true,
15610
									id: tableName + rec.FieldName,
15611
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
15612
									triggerCls: 'x-form-search-trigger',
15613
									vtype: 'alphanum', // disable space
15614
									nameTable: rec.TableName,
15615
									fieldGrid: rec.FieldName,
15616
									listeners: {
15617
										change: function (val) {
15618
											var custumFunc = rec.SelectFunction;
15619
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15620
												Ext.Ajax.request({
15621
													async: false,
15622
													method: 'POST',
15623
													url: '/UserControl/GetStore',
15624
													params: {
15625
														tableName: 'PCMFUNC',
15626
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15627
													},
15628
													success: function (response) {
15629
														var results = Ext.decode(response.responseText);
15630
														data_ = results.data[0];
15631
														if (data_ != undefined) {
15632
															custumFunc = data_.FunctionCode;
15633
														}
15634
													}
15635
												});
15636
											}
15637
											if (custumFunc) {
15638
												eval(custumFunc)
15639
											}
15640
										}
15641
									}
15642
								}
15643
							});
15644
						} else if (rec.SearchType == '4' && isLookup != true) {
15645
							cols.push({
15646

    
15647
								text: rec.HeaderTitle,
15648
								hidden: Hidden_,
15649
								dataIndex: rec.FieldName,
15650
								filter: {
15651
									itemDefaults: {
15652
										emptyText: 'Search for...'
15653
									}
15654
								},
15655
								editor: {
15656
									allowBlank: null_,
15657
									xtype: 'lookupemployee',
15658
									readOnly: ReadOnly_,
15659
									isGrid: true,
15660
									fieldTarget: targetField_,
15661
									fieldValue: fieldValue_,
15662
									isGrid: true,
15663
									id: tableName + rec.FieldName,
15664
									tableName: rec.TableRef, //name tabel yang jadi ref-nya
15665
									triggerCls: 'x-form-search-trigger',
15666
									vtype: 'alphanum', // disable space
15667
									nameTable: rec.TableName,
15668
									fieldGrid: rec.FieldName,
15669
									listeners: {
15670
										change: function (val) {
15671
											var custumFunc = rec.SelectFunction;
15672
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15673
												Ext.Ajax.request({
15674
													async: false,
15675
													method: 'POST',
15676
													url: '/UserControl/GetStore',
15677
													params: {
15678
														tableName: 'PCMFUNC',
15679
														param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15680
													},
15681
													success: function (response) {
15682
														var results = Ext.decode(response.responseText);
15683
														data_ = results.data[0];
15684
														if (data_ != undefined) {
15685
															custumFunc = data_.FunctionCode;
15686
														}
15687
													}
15688
												});
15689
											}
15690
											if (custumFunc) {
15691
												eval(custumFunc)
15692
											}
15693
										}
15694
									}
15695
								}
15696
							});
15697
						} else {
15698
							cols.push({
15699
								text: rec.HeaderTitle,
15700
								hidden: Hidden_,
15701
								dataIndex: rec.FieldName,
15702
								filter: {
15703
									itemDefaults: {
15704
										emptyText: 'Search for...'
15705
									}
15706
								},
15707
								editor: {
15708
									allowBlank: null_,
15709
									xtype: 'textfield',
15710
									readOnly: ReadOnly_,
15711
									id: tableName + rec.FieldName,
15712
									nameTable: rec.TableName,
15713
									fieldGrid: rec.FieldName,
15714
									listeners: {
15715
										change: function (val) {
15716
											var custumFunc = null;
15717
											Ext.Ajax.request({
15718
												async: false,
15719
												method: 'POST',
15720
												url: '/UserControl/GetStore',
15721
												params: {
15722
													tableName: 'SDATATABLEFIELD',
15723
													param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
15724
												},
15725
												success: function (response) {
15726
													var results = Ext.decode(response.responseText);
15727
													data_ = results.data[0];
15728
													if (data_ != undefined) {
15729
														custumFunc = data_.SelectFunction;
15730
														//console.log(data_)
15731
													}
15732
												}
15733
											});
15734
											if (custumFunc) {
15735
												eval(custumFunc)
15736
											}
15737
										}
15738
									}
15739
								}
15740
							});
15741
						}
15742
						break
15743
					}
15744
				} else {
15745
					cols.push({
15746
						text: rec.HeaderTitle,
15747
						hidden: Hidden_,
15748
						dataIndex: rec.FieldName,
15749
						hidden: true,
15750
						editor: {
15751
							allowBlank: true,
15752
							xtype: 'textfield',
15753
							readOnly: ReadOnly_,
15754
							id: tableName + rec.FieldName,
15755
							nameTable: rec.TableName,
15756
							fieldGrid: rec.FieldName,
15757
						},
15758
						filter: {
15759
							itemDefaults: {
15760
								emptyText: 'Search for...'
15761
							}
15762
						}
15763
					});
15764
				}
15765
			});
15766
		};
15767
		addData = addData + "}";
15768
		Ext.applyIf(me, {
15769

    
15770
			items: [{
15771
					xtype: 'grid',
15772
					id: gridName,
15773
					name: gridName,
15774
					height: height,
15775
					autoHeight: true,
15776
					//store: 'gridStore',
15777
					autoScroll: true,
15778
					store: Ext.create('Ext.data.Store', {
15779
						storeId: storeID,
15780
						fields: fieldStore,
15781
						proxy: {
15782
							method: 'POST',
15783
							type: 'ajax',
15784
							url: '',
15785
							reader: {
15786
								type: 'json',
15787
								root: 'data'
15788
							}
15789
						}
15790
					}),
15791
					dockedItems: [{
15792
							xtype: 'toolbar',
15793
							items: [{
15794
									text: 'Add',
15795
									hidden: hide_,
15796
									name: tableName + 'Add',
15797
									iconCls: 'fa-plus-circle',
15798
									style: 'font-family: FontAwesome',
15799
									handler: function () {
15800
										var store = Ext.StoreMgr.lookup(storeID)
15801
											idx = store.getCount();
15802
										var action = getParam('action');
15803
										var data = '';
15804
										var Sequence = 0;
15805
										if (idx == 0) {
15806
											Sequence = 1;
15807
										} else {
15808
											Sequence = 1 + idx;
15809
										}
15810
										//data = {
15811
										//    Sequence: Sequence
15812
										//};
15813

    
15814
										var seq = 'Sequence';
15815
										var SequenceValue = Sequence;
15816
										eval(addData);
15817
										data[seq] = SequenceValue;
15818

    
15819
										store.insert(idx, data);
15820
									}
15821

    
15822
								}, {
15823
									text: 'Delete',
15824
									hidden: hide_,
15825
									name: tableName + 'DeleteText',
15826
									iconCls: 'fa-trash-o',
15827
									style: 'font-family: FontAwesome',
15828
									//disabled: true
15829
									handler: function () {
15830
										var me = this,
15831
										store = Ext.StoreMgr.lookup(storeID)
15832

    
15833
											var grid = Ext.getCmp(gridName);
15834

    
15835
										Ext.MessageBox.show({
15836
											title: 'Remove tab',
15837
											msg: "This will remove. Do you want to continue?",
15838
											buttons: Ext.MessageBox.YESNO,
15839
											fn: function (choice) {
15840
												console.log(choice);
15841
												if (choice === 'yes') {
15842
													var selection = grid.getView().getSelectionModel().getSelection()[0];
15843
													if (selection) {
15844
														store.remove(selection);
15845
													}
15846
												}
15847
												//delete panel.pendingClose;
15848
											}
15849
										});
15850
									}
15851

    
15852
								}
15853
							]
15854
						}
15855
					],
15856
					columns: cols,
15857
					selType: checkSelection,
15858
					//selType: 'rowmodel',
15859
					plugins: {
15860
						ptype: 'rowediting',
15861
						pluginId: 'rowEditing',
15862
						clicksToEdit: 0,
15863
						listeners: {
15864
							//edit: 'onGridEditorEdit'
15865
						}
15866
					}
15867
				}, ]
15868

    
15869
		});
15870

    
15871
		me.callParent(arguments);
15872
	}
15873
});
15874

    
15875
Ext.define('MinovaUtil.MinovaES.Minovatimefield', {
15876
	extend: 'Ext.form.field.Time',
15877
	alias: ['widget.minovatimefield'],
15878
	undefinedText: '&#160;',
15879
	setValue: function (v) {
15880
		hasil = '';
15881
		if (v != this.getValue()) {
15882
			if (v) {
15883
				if (v.length == 4) {
15884

    
15885
					var h = v.substring(0, 2);
15886
					var m = v.substring(2, 4)
15887
						//this.setValue(h +':'+m);
15888
						hasil = h + ':' + m;
15889
				}
15890
				if (v.length == 5) {
15891
					this.setValue(v);
15892
					hasil = v;
15893
				}
15894
			}
15895
			this.setValue(hasil);
15896
		}
15897

    
15898
	},
15899
});
15900

    
15901
Ext.define('MinovaUtil.MinovaES.MinovaFixValueLabel', {
15902
	extend: 'Ext.form.Label',
15903
	alias: ['widget.MinovaFixValueLabel', 'widget.minovafixvaluelabel'],
15904
	anchor: '50%',
15905
	defaultRenderer: function (value) {
15906
		if (typeof(this.store) !== 'object') {
15907
			this.store = Ext.data.StoreManager.lookup(this.store);
15908
		}
15909
		var idx = this.store.findExact('code', value);
15910
		if (this.store.getAt(idx)) {
15911
			var result = this.store.getAt(idx).get('desc');
15912
			value = result ? result : value;
15913
		}
15914
		this.setRawValue(value);
15915

    
15916
	},
15917
	initComponent: function () {
15918
		var me = this;
15919
		var storeData = [];
15920
		var str = me.fixedValue;
15921
		var hasil = str.split('||');
15922
		hasil.forEach(function (h) {
15923
			store_ = h.split('=')
15924
				storeData.push({
15925
					code: store_[0],
15926
					desc: store_[1],
15927

    
15928
				});
15929
		});
15930
		Ext.applyIf(me, {
15931

    
15932
			store: Ext.create('Ext.data.Store', {
15933
				storeId: 'store' + name,
15934
				autoLoad: true,
15935
				data: storeData
15936

    
15937
			}),
15938

    
15939
		});
15940
		me.callParent(arguments);
15941
	}
15942
});
15943

    
15944
Ext.define('MinovaUtil.MinovaES.MinovaComboColumnFixValueLabel', {
15945
	extend: 'Ext.grid.column.Column',
15946
	alias: ['widget.minovacombocolumnfixvalue'],
15947
	initComponent: function () {
15948
		var me = this;
15949
		var storeData = [];
15950
		var str = me.fixedValue;
15951
		var hasil = str.split('||');
15952
		hasil.forEach(function (h) {
15953
			store_ = h.split('=')
15954
				storeData.push({
15955
					code: store_[0],
15956
					desc: store_[1],
15957

    
15958
				});
15959
		});
15960
		Ext.applyIf(me, {
15961

    
15962
			store: Ext.create('Ext.data.Store', {
15963
				storeId: 'store' + name,
15964
				autoLoad: true,
15965
				data: storeData
15966

    
15967
			}),
15968

    
15969
		});
15970
		this.callParent(arguments);
15971
	},
15972
	defaultRenderer: function (value) {
15973
		if (typeof(this.store) !== 'object') {
15974
			Ext.data.StoreManager.lookup(this.store).load();
15975
			this.store = Ext.data.StoreManager.lookup(this.store);
15976
		}
15977
		var idx = this.store.findExact('code', value);
15978
		if (this.store.getAt(idx)) {
15979
			var result = this.store.getAt(idx).get('desc');
15980
			value = result ? result : value;
15981
		}
15982
		return value;
15983
	}
15984
});
15985

    
15986
Ext.define('MinovaUtil.MinovaES.MinovaLookupColumn', {
15987
	extend: 'Ext.grid.column.Column',
15988
	alias: ['widget.minovalookupcolumn'],
15989
	initComponent: function () {
15990
		this.callParent(arguments);
15991
	},
15992
	defaultRenderer: function (value) {
15993
		data_ = undefined;
15994
		Ext.Ajax.request({
15995
			async: false,
15996
			method: 'POST',
15997
			url: '/UserControl/GetStore',
15998
			params: {
15999
				tableName: 'PDSCMTABLE',
16000
				param: this.tableName + ',' + value + ',hasil'
16001
			},
16002
			success: function (response) {
16003
				var results = Ext.decode(response.responseText);
16004
				data_ = results.data;
16005
				if (data_ != null) {
16006
					if (data_.length > 0) {
16007
						value = value + '-' + data_[0].hasil;
16008
					}
16009
				}
16010
			}
16011
		});
16012
		return value;
16013
	}
16014
});
16015

    
16016
Ext.define('MinovaUtil.MinovaES.MinovaPMSTreeEditAbleGrid', {
16017
	extend: 'Ext.form.Panel',
16018
	alias: ['widget.MinovaPMSTreeEditAbleGrid', 'widget.Minovapmstreeeditablegrid', 'widget.minovapmstreeeeditablegrid'],
16019
	requires: [
16020
		'Ext.grid.plugin.CellEditing',
16021
		'Ext.grid.Panel',
16022
	],
16023
	anchor: '100%',
16024
	tableName: undefined,
16025
	apprasalType: undefined,
16026
	empID: undefined,
16027
	hideButton: undefined,
16028
	multiSelect: undefined,
16029
	height: undefined,
16030
	initComponent: function () {
16031
		var me = this;
16032
		var isLookup = me.isLookup;
16033
		var hide_ = false;
16034
		var widthLock = 250;
16035
		var checkSelection = '';
16036
		if (me.hideButton == true) {
16037
			hide_ = true;
16038
		}
16039
		if (me.multiSelect) {
16040
			locking = false;
16041
			checkSelection = 'checkboxmodel';
16042
			widthLock = 40;
16043
		}
16044
		var tableName = me.tableName;
16045
		var cols = [];
16046
		var fieldStore = [];
16047
		var _url = 'GetAllField';
16048
		var hasil = null;
16049
		var height = me.height;
16050
		var storeID = 'store' + me.tableName;
16051
		var gridName = 'grid' + me.tableName;
16052
		if (me.storeName) {
16053
			storeID = me.storeName;
16054
		}
16055
		var empID = me.empID;
16056
		var apprasalType = me.apprasalType;
16057
		var LangID = MinovaUtil.GetLangID();
16058
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
16059
			Ext.Ajax.request({
16060
				async: false,
16061
				method: 'POST',
16062
				url: '/Performance/getFieldPMS',
16063
				params: {
16064
					tableName: 'PDSPMS001',
16065
					_param: parameter
16066
				},
16067
				success: function (response) {
16068
					var results = Ext.decode(response.responseText);
16069
					hasil = Ext.decode(results.data);
16070
				}
16071
			});
16072
		var addData = 'var data={';
16073
		if (hasil.length > 0) {
16074
			Ext.each(hasil, function (rec) {
16075
				fieldStore.push(rec.FieldName)
16076
				if (rec.FieldName != 'Sequence') {
16077
					addData = addData + rec.FieldName + ":" + "'',";
16078
				}
16079
				var null_ = null;
16080
				var ReadOnly_ = false;
16081
				if (rec.IsPrimaryKey == true) {
16082
					null_ = false;
16083
				}
16084
				if (rec.IsRequired == true) {
16085
					null_ = false;
16086
				} else {
16087
					null_ = true;
16088
				}
16089
				if (rec.ReadOnly == '1') {
16090
					ReadOnly_ = true;
16091
				}
16092
				var Hidden_ = false;
16093
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
16094
					Hidden_ = true;
16095
					null_ = true;
16096
				}
16097
				if (rec.GridView != 0) {
16098
					if (rec.GridView == 3) {
16099
						cols.push({
16100
							xtype: 'treecolumn',
16101
							text: rec.HeaderTitle,
16102
							dataIndex: rec.FieldName,
16103
							hidden: Hidden_,
16104
							width: 200,
16105
							sortable: true,
16106
							filter: {
16107
								itemDefaults: {
16108
									emptyText: 'Search for...'
16109
								}
16110
							}
16111
						});
16112
					} else {
16113
						switch (rec.FormatRef) {
16114
						case "date":
16115
							cols.push({
16116
								xtype: 'minovadatecolumn',
16117
								hidden: Hidden_,
16118
								text: rec.HeaderTitle,
16119
								dataIndex: rec.FieldName,
16120
								filter: {
16121
									itemDefaults: {
16122
										emptyText: 'Search for...',
16123
									}
16124
								},
16125
								editor: {
16126
									allowBlank: null_,
16127
									xtype: 'datefield',
16128
									hideMode: 'visibility',
16129
									readOnly: ReadOnly_,
16130
									id: tableName + rec.FieldName,
16131
									fieldGrid: rec.FieldName,
16132
									nameTable: rec.TableName,
16133
								}
16134
							});
16135
							break
16136
						case "amount":
16137
							cols.push({
16138
								xtype: 'minovacurrancycolumn',
16139
								//renderer: Ext.util.Format.numberRenderer("0,0"),
16140
								text: rec.HeaderTitle,
16141
								align: 'right',
16142
								dataIndex: rec.FieldName,
16143
								hidden: Hidden_,
16144
								filter: {
16145
									itemDefaults: {
16146
										emptyText: 'Search for...'
16147
									}
16148
								},
16149
								editor: {
16150
									allowBlank: null_,
16151
									xtype: 'minovacurrencyfield',
16152
									//renderer: Ext.util.Format.numberRenderer("0,0"),
16153
									//vtype: 'validateDecimal',
16154
									readOnly: ReadOnly_,
16155
									id: tableName + rec.FieldName,
16156
									nameTable: rec.TableName,
16157
									fieldGrid: rec.FieldName,
16158
									fieldStyle: 'text-align:right;',
16159
									value: '0',
16160

    
16161
								}
16162
							});
16163
							break
16164
						case "time":
16165
							var DefaultValue = rec.DefaultValue;
16166
							if (DefaultValue == '') {
16167
								defaultValue = '00:00';
16168
							}
16169
							cols.push({
16170
								//xtype: 'minovatimecolumn',
16171
								xtype: 'timefield',
16172
								format: 'H:i',
16173
								submitFormat: 'Hi',
16174
								text: rec.HeaderTitle,
16175
								dataIndex: rec.FieldName,
16176
								hidden: Hidden_,
16177
								//renderer: Ext.util.Format.dateRenderer('G:i'),
16178
								filter: {
16179
									itemDefaults: {
16180
										emptyText: 'Search for...'
16181
									}
16182
								},
16183
								editor: {
16184
									allowBlank: null_,
16185
									xtype: 'timefield',
16186
									readOnly: ReadOnly_,
16187
									id: tableName + rec.FieldName,
16188
									format: 'H:i',
16189
									submitFormat: 'Hi',
16190
									increment: 5,
16191
									value: DefaultValue,
16192
									anchor: '100%',
16193
									listeners: {}
16194
									//renderer: Ext.util.Format.dateRenderer('G:i'),
16195
								}
16196
							});
16197
							break
16198
						default:
16199
							if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
16200
								cols.push({
16201
									text: rec.HeaderTitle,
16202
									dataIndex: rec.FieldName,
16203
									width: 100,
16204
									filter: {
16205
										type: 'string',
16206
										itemDefaults: {
16207
											emptyText: 'Search for...'
16208
										}
16209
									}
16210
								});
16211
							} else if (rec.SearchType == '0') {
16212
								var valueField = null;
16213
								var displayValue = null;
16214
								var TableRef = undefined;
16215
								if (rec.TableRef != '') {
16216
									TableRef = rec.TableRef;
16217

    
16218
									Ext.Ajax.request({
16219
										async: false,
16220
										method: 'POST',
16221
										url: '/UserControl/GetStore',
16222
										params: {
16223
											tableName: 'SDATATABLEFIELD',
16224
											param: 'TableName[equal]' + rec.TableRef
16225
										},
16226
										success: function (response) {
16227
											var results = Ext.decode(response.responseText);
16228
											data_ = results.data;
16229
											if (data_ != undefined) {
16230
												valueField_ = $.grep(data_, function (r) {
16231
														return r.ValueField == '1'
16232
													});
16233
												valueField = valueField_[0].FieldName
16234
													displayValue_ = $.grep(data_, function (r) {
16235
														return r.DisplayValue == '1'
16236
													});
16237
												displayValue = displayValue_[0].FieldName
16238
											}
16239
										}
16240
									});
16241

    
16242
									//create Store
16243
									Ext.create('Ext.data.Store', {
16244
										storeId: 'store_' + me.tableName + rec.FieldName,
16245
										autoLoad: true,
16246
										proxy: {
16247
											method: 'POST',
16248
											type: 'ajax',
16249
											url: '/UserControl/GetStore',
16250
											extraParams: {
16251
												tableName: TableRef,
16252
												param: rec.ParamCombo
16253
											},
16254
											reader: {
16255
												type: 'json',
16256
												root: 'data',
16257
												totalProperty: 'data[0].TotalCount'
16258
											}
16259
										}
16260
									});
16261
								} else if (rec.FixedValue != '') {
16262
									var storeData = [];
16263
									var str = rec.FixedValue;
16264
									var hasil = str.split('||');
16265
									hasil.forEach(function (h) {
16266
										store_ = h.split('=')
16267
											storeData.push({
16268
												code: store_[0],
16269
												desc: store_[1],
16270

    
16271
											});
16272
									});
16273

    
16274
									valueField = 'code';
16275
									displayValue = 'desc';
16276

    
16277
									Ext.create('Ext.data.Store', {
16278
										storeId: 'store_' + me.tableName + rec.FieldName,
16279
										autoLoad: true,
16280
										data: storeData
16281
									})
16282
								}
16283

    
16284
								cols.push({
16285
									xtype: 'minovacombocolumn',
16286
									hidden: Hidden_,
16287
									text: rec.HeaderTitle,
16288
									dataIndex: rec.FieldName,
16289
									valueField: valueField,
16290
									displayField: displayValue,
16291
									store: 'store_' + me.tableName + rec.FieldName,
16292
									editor: {
16293
										allowBlank: null_,
16294
										xtype: 'combobox',
16295
										readOnly: ReadOnly_,
16296
										id: tableName + rec.FieldName,
16297
										nameTable: rec.TableName,
16298
										fieldGrid: rec.FieldName,
16299
										valueField: valueField,
16300
										displayField: displayValue,
16301

    
16302
										store: 'store_' + me.tableName + rec.FieldName,
16303
									},
16304
									filter: {
16305
										type: 'list',
16306
										itemDefaults: {
16307
											emptyText: 'Search for...'
16308
										}
16309
									}
16310
								});
16311

    
16312
							} else if (rec.SearchType == '5') {
16313
								var valueField = null;
16314
								var displayValue = null;
16315
								var AdditionaldisplayValue = null;
16316
								var TableRef = undefined;
16317
								if (rec.TableRef != '') {
16318
									TableRef = rec.TableRef;
16319
									Ext.Ajax.request({
16320
										async: false,
16321
										method: 'POST',
16322
										url: '/UserControl/GetStore',
16323
										params: {
16324
											tableName: 'SDATATABLEFIELD',
16325
											param: 'TableName[equal]' + rec.TableRef
16326
										},
16327
										success: function (response) {
16328
											var results = Ext.decode(response.responseText);
16329
											data_ = results.data;
16330
											if (data_ != undefined) {
16331
												valueField_ = $.grep(data_, function (r) {
16332
														return r.ValueField == '1'
16333
													});
16334
												if (valueField_.length > 0) {
16335
													valueField = valueField_[0].FieldName
16336
												}
16337

    
16338
												displayValue_ = $.grep(data_, function (r) {
16339
														return r.DisplayValue == '1' || r.DisplayValue == '2'
16340
													});
16341
												if (displayValue_.length > 0) {
16342
													displayValue = displayValue_[0].FieldName;
16343
												}
16344
												if (displayValue_.length >= 2) {
16345
													AdditionaldisplayValue = displayValue_[1].FieldName
16346
												}
16347
											}
16348
										}
16349
									});
16350
								}
16351
								Ext.create('Ext.data.Store', {
16352
									storeId: 'store_' + me.tableName + rec.FieldName,
16353
									autoLoad: true,
16354
									proxy: {
16355
										method: 'POST',
16356
										type: 'ajax',
16357
										url: '/UserControl/GetStoreAuth',
16358
										extraParams: {
16359
											tableName: TableRef,
16360
											param: rec.ParamCombo,
16361
											menuId: MinovaUtil.GetMenuID()
16362
										},
16363
										reader: {
16364
											type: 'json',
16365
											root: 'data',
16366
											totalProperty: 'data[0].TotalCount'
16367
										}
16368
									}
16369
								});
16370
								cols.push({
16371
									xtype: 'minovacombocolumn',
16372
									hidden: Hidden_,
16373
									text: rec.HeaderTitle,
16374
									dataIndex: rec.FieldName,
16375
									valueField: valueField,
16376
									displayField: displayValue,
16377
									store: 'store_' + me.tableName + rec.FieldName,
16378
									tpl: Ext.create('Ext.XTemplate',
16379
										'<ul class="x-list-plain"><tpl for=".">',
16380
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16381
										'</tpl></ul>'),
16382
									displayTpl: Ext.create('Ext.XTemplate',
16383
										'<tpl for=".">',
16384
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16385
										'</tpl>'),
16386
									editor: {
16387
										allowBlank: null_,
16388
										xtype: 'combobox',
16389
										readOnly: ReadOnly_,
16390
										id: rec.TableName + rec.FieldName,
16391
										nameTable: rec.TableName,
16392
										fieldGrid: rec.FieldName,
16393
										valueField: valueField,
16394
										displayField: displayValue,
16395
										store: 'store_' + me.tableName + rec.FieldName,
16396
										value: rec.DefaultValue,
16397
										tpl: Ext.create('Ext.XTemplate',
16398
											'<ul class="x-list-plain"><tpl for=".">',
16399
											'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16400
											'</tpl></ul>'),
16401
										displayTpl: Ext.create('Ext.XTemplate',
16402
											'<tpl for=".">',
16403
											'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16404
											'</tpl>')
16405
									},
16406
									renderer: function (value) {
16407
										var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
16408
										var index = store.find(valueField, value);
16409
										var val = "";
16410
										if (index != -1) {
16411
											var rc = store.getAt(index);
16412
											//val = rc.get(displayValue);
16413
											val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
16414
										} else {
16415
											val = value;
16416
										}
16417
										return val;
16418
									},
16419
									filter: {
16420
										type: 'list',
16421
										itemDefaults: {
16422
											emptyText: 'Search for...'
16423
										}
16424
									}
16425
								});
16426
							} else if (rec.SearchType == '2') {
16427
								var triger = (rec.TriggerCombo).split('$');
16428
								var targetField_ = triger[0];
16429
								var fieldValue_ = triger[1];
16430
								cols.push({
16431
									text: rec.HeaderTitle,
16432
									hidden: Hidden_,
16433
									dataIndex: rec.FieldName,
16434
									filter: {
16435
										itemDefaults: {
16436
											emptyText: 'Search for...'
16437
										}
16438
									},
16439
									editor: {
16440
										allowBlank: null_,
16441
										xtype: 'minovalookupgrid',
16442
										readOnly: ReadOnly_,
16443
										isGrid: true,
16444
										fieldTarget: targetField_,
16445
										fieldValue: fieldValue_,
16446
										isGrid: true,
16447
										id: tableName + rec.FieldName,
16448
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
16449
										triggerCls: 'x-form-search-trigger',
16450
										vtype: 'alphanum', // disable space
16451
										nameTable: rec.TableName,
16452
										fieldGrid: rec.FieldName,
16453
										listeners: {
16454
											change: function (val) {
16455
												var custumFunc = rec.SelectFunction;
16456
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16457
													Ext.Ajax.request({
16458
														async: false,
16459
														method: 'POST',
16460
														url: '/UserControl/GetStore',
16461
														params: {
16462
															tableName: 'PCMFUNC',
16463
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16464
														},
16465
														success: function (response) {
16466
															var results = Ext.decode(response.responseText);
16467
															data_ = results.data[0];
16468
															if (data_ != undefined) {
16469
																custumFunc = data_.FunctionCode;
16470
															}
16471
														}
16472
													});
16473
												}
16474
												if (custumFunc) {
16475
													eval(custumFunc)
16476
												}
16477
											}
16478
										}
16479
									}
16480
								});
16481
							} else if (rec.SearchType == '3') {
16482
								cols.push({
16483
									text: rec.HeaderTitle,
16484
									hidden: Hidden_,
16485
									dataIndex: rec.FieldName,
16486
									filter: {
16487
										itemDefaults: {
16488
											emptyText: 'Search for...'
16489
										}
16490
									},
16491
									editor: {
16492
										allowBlank: null_,
16493
										// xtype: 'minovalookuptreePopup',
16494
										xtype: 'MinovaLookupTree',
16495
										readOnly: ReadOnly_,
16496
										id: tableName + rec.FieldName,
16497
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
16498
										triggerCls: 'x-form-search-trigger',
16499
										vtype: 'alphanum', // disable space
16500
										treeSructure: rec.SearchFunction, //'O-O-P',
16501
										objClassValue: rec.ParamCombo, //'O',
16502
										nameTable: rec.TableName,
16503
										fieldGrid: rec.FieldName,
16504
										listeners: {
16505
											change: function (val) {
16506
												var custumFunc = rec.SelectFunction;
16507
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16508
													Ext.Ajax.request({
16509
														async: false,
16510
														method: 'POST',
16511
														url: '/UserControl/GetStore',
16512
														params: {
16513
															tableName: 'PCMFUNC',
16514
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16515
														},
16516
														success: function (response) {
16517
															var results = Ext.decode(response.responseText);
16518
															data_ = results.data[0];
16519
															if (data_ != undefined) {
16520
																custumFunc = data_.FunctionCode;
16521
															}
16522
														}
16523
													});
16524
												}
16525
												if (custumFunc) {
16526
													eval(custumFunc)
16527
												}
16528
											}
16529
										}
16530
									}
16531
								});
16532
							} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
16533
								var triger = (rec.TriggerCombo).split('&');
16534
								var targetField_ = triger[0];
16535
								var fieldValue_ = triger[0];
16536
								cols.push({
16537
									text: rec.HeaderTitle,
16538
									hidden: Hidden_,
16539
									dataIndex: rec.FieldName,
16540
									filter: {
16541
										itemDefaults: {
16542
											emptyText: 'Search for...'
16543
										}
16544
									},
16545
									editor: {
16546
										allowBlank: null_,
16547
										xtype: 'lookupemployee',
16548
										readOnly: ReadOnly_,
16549
										isGrid: true,
16550
										fieldTarget: targetField_,
16551
										fieldValue: fieldValue_,
16552
										isGrid: true,
16553
										id: tableName + rec.FieldName,
16554
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
16555
										triggerCls: 'x-form-search-trigger',
16556
										vtype: 'alphanum', // disable space
16557
										nameTable: rec.TableName,
16558
										fieldGrid: rec.FieldName,
16559
										listeners: {
16560
											change: function (val) {
16561
												var custumFunc = rec.SelectFunction;
16562
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16563
													Ext.Ajax.request({
16564
														async: false,
16565
														method: 'POST',
16566
														url: '/UserControl/GetStore',
16567
														params: {
16568
															tableName: 'PCMFUNC',
16569
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16570
														},
16571
														success: function (response) {
16572
															var results = Ext.decode(response.responseText);
16573
															data_ = results.data[0];
16574
															if (data_ != undefined) {
16575
																custumFunc = data_.FunctionCode;
16576
															}
16577
														}
16578
													});
16579
												}
16580
												if (custumFunc) {
16581
													eval(custumFunc)
16582
												}
16583
											}
16584
										}
16585
									}
16586
								});
16587
							} else if (rec.SearchType == '4' && isLookup != true) {
16588
								cols.push({
16589

    
16590
									text: rec.HeaderTitle,
16591
									hidden: Hidden_,
16592
									dataIndex: rec.FieldName,
16593
									filter: {
16594
										itemDefaults: {
16595
											emptyText: 'Search for...'
16596
										}
16597
									},
16598
									editor: {
16599
										allowBlank: null_,
16600
										xtype: 'lookupemployee',
16601
										readOnly: ReadOnly_,
16602
										isGrid: true,
16603
										fieldTarget: targetField_,
16604
										fieldValue: fieldValue_,
16605
										isGrid: true,
16606
										id: tableName + rec.FieldName,
16607
										tableName: rec.TableRef, //name tabel yang jadi ref-nya
16608
										triggerCls: 'x-form-search-trigger',
16609
										vtype: 'alphanum', // disable space
16610
										nameTable: rec.TableName,
16611
										fieldGrid: rec.FieldName,
16612
										listeners: {
16613
											change: function (val) {
16614
												var custumFunc = rec.SelectFunction;
16615
												if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16616
													Ext.Ajax.request({
16617
														async: false,
16618
														method: 'POST',
16619
														url: '/UserControl/GetStore',
16620
														params: {
16621
															tableName: 'PCMFUNC',
16622
															param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16623
														},
16624
														success: function (response) {
16625
															var results = Ext.decode(response.responseText);
16626
															data_ = results.data[0];
16627
															if (data_ != undefined) {
16628
																custumFunc = data_.FunctionCode;
16629
															}
16630
														}
16631
													});
16632
												}
16633
												if (custumFunc) {
16634
													eval(custumFunc)
16635
												}
16636
											}
16637
										}
16638
									}
16639
								});
16640
							} else {
16641
								cols.push({
16642
									text: rec.HeaderTitle,
16643
									hidden: Hidden_,
16644
									dataIndex: rec.FieldName,
16645
									filter: {
16646
										itemDefaults: {
16647
											emptyText: 'Search for...'
16648
										}
16649
									},
16650
									editor: {
16651
										allowBlank: null_,
16652
										xtype: 'textfield',
16653
										readOnly: ReadOnly_,
16654
										id: tableName + rec.FieldName,
16655
										nameTable: rec.TableName,
16656
										fieldGrid: rec.FieldName,
16657
										listeners: {
16658
											change: function (val) {
16659
												var custumFunc = null;
16660
												Ext.Ajax.request({
16661
													async: false,
16662
													method: 'POST',
16663
													url: '/UserControl/GetStore',
16664
													params: {
16665
														tableName: 'SDATATABLEFIELD',
16666
														param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
16667
													},
16668
													success: function (response) {
16669
														var results = Ext.decode(response.responseText);
16670
														data_ = results.data[0];
16671
														if (data_ != undefined) {
16672
															custumFunc = data_.SelectFunction;
16673
															//console.log(data_)
16674
														}
16675
													}
16676
												});
16677
												if (custumFunc) {
16678
													eval(custumFunc)
16679
												}
16680
											}
16681
										}
16682
									}
16683
								});
16684
							}
16685
							break
16686
						}
16687
					}
16688
				} else {
16689
					cols.push({
16690
						text: rec.HeaderTitle,
16691
						hidden: Hidden_,
16692
						dataIndex: rec.FieldName,
16693
						hidden: true,
16694
						editor: {
16695
							allowBlank: true,
16696
							xtype: 'textfield',
16697
							readOnly: ReadOnly_,
16698
							id: tableName + rec.FieldName,
16699
							nameTable: rec.TableName,
16700
							fieldGrid: rec.FieldName,
16701
						},
16702
						filter: {
16703
							itemDefaults: {
16704
								emptyText: 'Search for...'
16705
							}
16706
						}
16707
					});
16708
				}
16709
			})
16710
		}
16711
		addData = addData + "}";
16712

    
16713
		cols.push({
16714
			text: 'Action',
16715
			width: 100,
16716
			xtype: 'actioncolumn',
16717
			tooltip: 'View Data',
16718
			name: 'Action',
16719
			itemId: 'Action',
16720
			align: 'center',
16721
			iconCls: 'fa-edit',
16722
			renderer: function (value, metadata, record) {
16723
				metadata.tdStyle = 'font-family: FontAwesome'
16724
			},
16725
			handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
16726
				var main_ = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
16727
				this.fireEvent("onEditClick");
16728
			}
16729
		});
16730

    
16731
		Ext.applyIf(me, {
16732

    
16733
			items: [{
16734
					xtype: 'treepanel',
16735
					id: gridName,
16736
					name: gridName,
16737
					height: height,
16738
					width: 'fit',
16739
					autoHeight: true,
16740
					//store: 'gridStore',
16741
					autoLoad: false,
16742
					autoScroll: true,
16743
					useArrows: true,
16744
					animate: false,
16745
					rootVisible: false,
16746
					plugins: [
16747
						Ext.create('Ext.grid.plugin.CellEditing', {
16748
							clicksToEdit: 2
16749
						})
16750
					],
16751
					root: {
16752
						expanded: true,
16753
						nodeType: 'async',
16754
						ext: 'Favorites',
16755
						id: 'null'
16756
					},
16757
					columns: cols,
16758
					//selType: 'rowmodel',
16759
				}
16760
			]
16761

    
16762
		});
16763

    
16764
		me.callParent(arguments);
16765
	}
16766
});
16767
/*Add by Taufan ( Tab List MasterData For ERP )*/
16768
Ext.define('MinovaUtil.MinovaES.MinovaTabListMasterData', {
16769
	extend: 'Ext.tab.Panel',
16770
	alias: ['widget.masterdatatablist'],
16771
	moduleType: undefined,
16772
	tablenameheader: undefined,
16773
	langId: undefined,
16774
	param: undefined,
16775
	layout: 'fit',
16776
	name: 'panelTab',
16777
	id: 'mainTab',
16778
	initComponent: function () {
16779
		var me = this;
16780
		var hasil = null;
16781
		var action = "0";
16782
		var _items = [];
16783
		var act = getParam("action");
16784
		if (act == 'add') {
16785
			action = '0';
16786
		}
16787
		if (act == 'edit') {
16788
			action = '1';
16789
		}
16790
		if (act == 'view') {
16791
			action = '1';
16792
		}
16793
		if (act == 'copy') {
16794
			action = '0';
16795
		}
16796
		Ext.Ajax.request({
16797
			async: false,
16798
			method: 'POST',
16799
			url: '/UserControl/GetStore',
16800
			params: {
16801
				tableName: 'PCMEPMDLIST',
16802
				param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
16803
			},
16804
			success: function (response) {
16805
				var results = Ext.decode(response.responseText);
16806
				hasil = results.data;
16807
			}
16808
		});
16809
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
16810
		if (hasil.length > 0) {
16811
			Ext.each(hasil, function (rec) {
16812
				if (rec.LayoutType == "L004") { // L004=Custom
16813
					var pnl = Ext.create(rec.CustomLayout, {
16814
							title: rec.LabelName,
16815
							tableName: rec.TableName,
16816
							height: 450,
16817
							name: 'panelTab' + rec.TableName,
16818
							tbl: rec.TableName,
16819
							layoutType: rec.LayoutType
16820
						});
16821
					_items.push(pnl)
16822
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
16823
					_items.push({
16824
						xtype: 'panel',
16825
						title: rec.LabelName,
16826
						name: 'panelTab' + rec.TableName,
16827
						tbl: rec.TableName,
16828
						layoutType: rec.LayoutType,
16829
						items: [{
16830
								xtype: 'minovagrid1',
16831
								height: 450,
16832
								tableName: rec.TableName,
16833
								storename: 'store' + rec.TableName,
16834
								pagesize: 25,
16835
								name: 'GRID' + rec.TableName,
16836
								margin: '0 0 10 0',
16837
								autoLoad: false,
16838
								tbar: [{
16839
										xtype: 'button',
16840
										text: 'Action',
16841
										name: 'actionGrid' + rec.TableName,
16842
										menu: [{
16843
												text: 'Add',
16844
												name: 'add' + rec.TableName,
16845
												tbl: rec.TableName,
16846
												style: 'font-family: FontAwesome',
16847
												iconCls: 'fa-plus-circle',
16848
												handler: function () {
16849
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16850
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16851
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16852
													var keyField = getParam("KeyID");
16853
													var keyValue = getParam("KeyValue");
16854
													frmDisplay.reset();
16855
													frmForm.reset();
16856
													var idseq = 0;
16857
													var params = {
16858
														apiController: 'api/Devt',
16859
														methodName: 'GetLastSeqID',
16860
														parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
16861
													};
16862
													MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
16863
														var result = Ext.decode(xhr.responseText);
16864
														var r = Ext.decode(result.data);
16865
														idseq = r.data + 1;
16866
														frmForm.getForm().findField(keyField).setValue(keyValue);
16867
														frmForm.getForm().findField("SeqID").setValue(idseq);
16868
													});
16869
													frmDisplay.setHidden(true);
16870
													frmForm.setHidden(false);
16871
													grdPanel.setHidden(true);
16872
													action = "0";
16873
												}
16874
											}, {
16875
												text: 'Copy',
16876
												name: 'copy' + rec.TableName,
16877
												tbl: rec.TableName,
16878
												iconCls: 'fa-copy',
16879
												style: 'font-family: FontAwesome',
16880
												handler: function () {
16881
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16882
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16883
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16884
													var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
16885
													var keyField = getParam("KeyID");
16886
													if (dtrec) {
16887
														frmDisplay.reset();
16888
														frmForm.reset();
16889
														frmForm.getForm().setValues(dtrec.data);
16890
														frmDisplay.setHidden(true);
16891
														frmForm.setHidden(false);
16892
														grdPanel.setHidden(true);
16893
														action = "0";
16894
														frmForm.getForm().findField(keyField).setValue("");
16895
													}
16896
												}
16897
											}, {
16898
												text: 'Edit',
16899
												name: 'edit' + rec.TableName,
16900
												tbl: rec.TableName,
16901
												iconCls: 'fa-edit',
16902
												style: 'font-family: FontAwesome',
16903
												handler: function () {
16904
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16905
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16906
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16907
													var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
16908
													if (dtrec) {
16909
														frmDisplay.reset();
16910
														frmForm.reset();
16911
														frmForm.getForm().setValues(dtrec.data);
16912
														frmDisplay.setHidden(true);
16913
														frmForm.setHidden(false);
16914
														grdPanel.setHidden(true);
16915
														action = "1";
16916
													}
16917
												}
16918
											}
16919
										]
16920
									}, {
16921
										xtype: 'tbfill'
16922
									}, {
16923
										text: 'Clear Filters',
16924
										tooltip: 'Clear all filters',
16925
										name: 'clearbtn',
16926
										handler: function () {}
16927
									}
16928
								],
16929
								dockedItems: [{
16930
										xtype: 'pagingtoolbar',
16931
										store: 'store' + rec.TableName,
16932
										dock: 'bottom',
16933
										pageSize: me.pagesize,
16934
										displayInfo: true
16935
									}
16936
								],
16937
								listeners: {
16938
									'itemdblclick': function (me, record, item, index, e, eOpts) {
16939
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16940
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16941
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16942
										frmDisplay.reset();
16943
										frmForm.reset();
16944
										frmDisplay.getForm().setValues(record.data);
16945
										frmForm.getForm().setValues(record.data);
16946
										frmDisplay.setHidden(false);
16947
										frmForm.setHidden(true);
16948
										grdPanel.setHidden(true);
16949
										action = "1";
16950
									}
16951
								}
16952
							}, {
16953
								xtype: 'minovaform',
16954
								name: 'DISPLAY' + rec.TableName,
16955
								id: 'DISPLAY' + rec.TableName,
16956
								itemId: 'DISPLAY' + rec.TableName,
16957
								tableName: rec.TableName,
16958
								isDisplay: true,
16959
								hidden: true,
16960
								buttons: [{
16961
										text: 'Edit',
16962
										name: 'editDISPLAY' + rec.TableName,
16963
										iconCls: 'fa-edit',
16964
										style: 'font-family: FontAwesome',
16965
										handler: function () {
16966
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16967
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16968
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16969
											frmDisplay.setHidden(true);
16970
											frmForm.setHidden(false);
16971
											grdPanel.setHidden(true);
16972
										}
16973
									}, {
16974
										text: 'Cancel',
16975
										name: 'cancelDISPLAY' + rec.TableName,
16976
										iconCls: 'fa-reply',
16977
										style: 'font-family: FontAwesome',
16978
										handler: function () {
16979
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16980
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16981
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16982
											frmDisplay.setHidden(true);
16983
											frmForm.setHidden(true);
16984
											grdPanel.setHidden(false);
16985
											grdPanel.getStore().reload();
16986
										}
16987
									}
16988
								]
16989
							}, {
16990
								xtype: 'minovaform',
16991
								name: 'FORM' + rec.TableName,
16992
								id: 'FORM' + rec.TableName,
16993
								itemId: 'FORM' + rec.TableName,
16994
								tableName: rec.TableName,
16995
								isDisplay: false,
16996
								hidden: true,
16997
								buttons: [{
16998
										text: 'Save',
16999
										name: 'saveFORM' + rec.TableName,
17000
										iconCls: 'fa-save',
17001
										style: 'font-family: FontAwesome',
17002
										handler: function () {
17003
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17004
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17005
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17006
											var frm = frmForm.getForm();
17007
											console.log(frmForm);
17008
											if (frm.isValid()) {
17009
												var keyField = getParam("KeyID");
17010
												var table = rec.TableName;
17011
												var data = Ext.encode(frmForm.getValues());
17012
												var token = MinovaUtil.SESSIONS.Token;
17013
												var params = {
17014
													apiController: 'api/Devt',
17015
													methodName: 'SaveTableMaster',
17016
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17017
												};
17018
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17019
													var result = Ext.decode(xhr.responseText);
17020
													var r = Ext.decode(result.data);
17021
													if (r.success) {
17022
														frmDisplay.setHidden(true);
17023
														frmForm.setHidden(true);
17024
														grdPanel.setHidden(false);
17025
														grdPanel.getStore().reload();
17026
														MinovaMessage('Not Null', '000006', '', 'S');
17027
													} else {
17028
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17029
													}
17030
												});
17031
											}
17032
										}
17033
									}, {
17034
										text: 'Delete',
17035
										name: 'deleteFORM' + rec.TableName,
17036
										iconCls: 'fa-trash-o',
17037
										style: 'font-family: FontAwesome ',
17038
										handler: function () {
17039
											alert('Delete Function');
17040
											MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17041
												if (respone == "yes") {
17042
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17043
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17044
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17045
													var frm = frmForm.getForm();
17046
													if (frm.isValid()) {
17047
														var keyField = getParam("KeyID");
17048
														var table = rec.TableName;
17049
														var data = Ext.encode(frmForm.getValues());
17050
														var token = MinovaUtil.SESSIONS.Token;
17051
														action = "2";
17052
														var params = {
17053
															apiController: 'api/Devt',
17054
															methodName: 'SaveTableMaster',
17055
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17056
														};
17057
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17058
															var result = Ext.decode(xhr.responseText);
17059
															var r = Ext.decode(result.data);
17060
															if (r.success) {
17061
																frmDisplay.setHidden(true);
17062
																frmForm.setHidden(true);
17063
																grdPanel.setHidden(false);
17064
																grdPanel.getStore().reload();
17065
																MinovaMessage('Not Null', '000006', '', 'S');
17066
															} else {
17067
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17068
															}
17069
														});
17070
													}
17071
												}
17072
											});
17073
										}
17074
									}, {
17075
										text: 'Cancel',
17076
										name: 'cancelFORM' + rec.TableName,
17077
										iconCls: 'fa-reply',
17078
										style: 'font-family: FontAwesome',
17079
										handler: function () {
17080
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
17081
												if (respone == "yes") {
17082
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17083
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17084
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17085
													frmDisplay.setHidden(true);
17086
													frmForm.setHidden(true);
17087
													grdPanel.setHidden(false);
17088
													grdPanel.getStore().reload();
17089
												}
17090
											});
17091
										}
17092
									}
17093
								]
17094
							}
17095
						]
17096
					});
17097
				} else if (rec.LayoutType == "L005") { // Grid View Only
17098
					_items.push({
17099
						xtype: 'panel',
17100
						title: rec.LabelName,
17101
						name: 'panelTab' + rec.TableName,
17102
						tbl: rec.TableName,
17103
						layoutType: rec.LayoutType,
17104
						items: [{
17105
								xtype: 'minovagrid1',
17106
								height: 450,
17107
								tableName: rec.TableName,
17108
								storename: 'store' + rec.TableName,
17109
								pagesize: 25,
17110
								name: 'GRID' + rec.TableName,
17111
								margin: '0 0 10 0',
17112
								autoLoad: false,
17113
								tbar: [{
17114
										xtype: 'tbfill'
17115
									}, {
17116
										text: 'Clear Filters',
17117
										tooltip: 'Clear all filters',
17118
										name: 'clearbtn',
17119
										handler: function () {}
17120
									}
17121
								],
17122
								dockedItems: [{
17123
										xtype: 'pagingtoolbar',
17124
										store: 'store' + rec.TableName,
17125
										dock: 'bottom',
17126
										pageSize: me.pagesize,
17127
										displayInfo: true
17128
									}
17129
								]
17130
							}
17131
						]
17132
					});
17133
				} else { // L001=Default Form Only
17134
					_items.push({
17135
						xtype: 'panel',
17136
						title: rec.LabelName,
17137
						name: 'panelTab' + rec.TableName,
17138
						tbl: rec.TableName,
17139
						layoutType: rec.LayoutType,
17140
						items: [{
17141
								xtype: 'minovaform',
17142
								name: 'DISPLAY' + rec.TableName,
17143
								id: 'DISPLAY' + rec.TableName,
17144
								itemId: 'DISPLAY' + rec.TableName,
17145
								tableName: rec.TableName,
17146
								isDisplay: true,
17147
								hidden: false,
17148
								buttons: [{
17149
										text: 'Edit',
17150
										name: 'editDISPLAY' + rec.TableName,
17151
										iconCls: 'fa-edit',
17152
										style: 'font-family: FontAwesome',
17153
										handler: function () {
17154
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17155
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17156
											frmDisplay.setHidden(true);
17157
											frmForm.setHidden(false);
17158
											action = "1";
17159
										}
17160
									}, {
17161
										text: 'Cancel',
17162
										name: 'cancelDISPLAY' + rec.TableName,
17163
										iconCls: 'fa-reply',
17164
										style: 'font-family: FontAwesome',
17165
										hidden: true
17166
									}
17167
								]
17168
							}, {
17169
								xtype: 'minovaform',
17170
								name: 'FORM' + rec.TableName,
17171
								id: 'FORM' + rec.TableName,
17172
								itemId: 'FORM' + rec.TableName,
17173
								tableName: rec.TableName,
17174
								isDisplay: false,
17175
								hidden: true,
17176
								buttons: [{
17177
										text: 'Save',
17178
										name: 'saveDISPLAY' + rec.TableName,
17179
										iconCls: 'fa-save',
17180
										style: 'font-family: FontAwesome',
17181
										handler: function () {
17182
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17183
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17184
											var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
17185
											var frm = frmForm.getForm();
17186
											if (frm.isValid()) {
17187
												var keyField = getParam("KeyID");
17188
												var table = rec.TableName;
17189
												var data = Ext.encode(frmForm.getValues());
17190
												var token = MinovaUtil.SESSIONS.Token;
17191
												var params = {
17192
													apiController: 'api/Devt',
17193
													methodName: 'SaveTableMaster',
17194
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17195
												};
17196
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17197
													var result = Ext.decode(xhr.responseText);
17198
													var r = Ext.decode(result.data);
17199
													if (r.success) {
17200
														headerDisplay.mask("Loading...");
17201
														var idNo = r.data;
17202
														frmForm.getForm().findField(keyField).setValue(idNo);
17203
														frmDisplay.getForm().setValues(frmForm.getValues());
17204
														headerDisplay.getForm().setValues(frmForm.getValues());
17205
														frmDisplay.setHidden(false);
17206
														frmForm.setHidden(true);
17207
														MinovaMessage('Not Null', '000006', '', 'S');
17208
														headerDisplay.unmask();
17209
													} else {
17210
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17211
													}
17212
												});
17213
											}
17214
										}
17215
									}, {
17216
										text: 'Delete',
17217
										name: 'deleteDISPLAY' + rec.TableName,
17218
										iconCls: 'fa-trash-o',
17219
										style: 'font-family: FontAwesome',
17220
										handler: function () {
17221
											MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17222
												if (respone == "yes") {
17223
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17224
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17225
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17226
													var frm = frmForm.getForm();
17227
													if (frm.isValid()) {
17228
														var keyField = getParam("KeyID");
17229
														var table = rec.TableName;
17230
														var data = Ext.encode(frmForm.getValues());
17231
														var token = MinovaUtil.SESSIONS.Token;
17232
														action = "2";
17233
														var params = {
17234
															apiController: 'api/Devt',
17235
															methodName: 'SaveTableMaster',
17236
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17237
														};
17238
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17239
															var result = Ext.decode(xhr.responseText);
17240
															var r = Ext.decode(result.data);
17241
															if (r.success) {
17242
																frmDisplay.setHidden(true);
17243
																frmForm.setHidden(true);
17244
																grdPanel.setHidden(false);
17245
																grdPanel.getStore().reload();
17246
																MinovaMessage('Not Null', '000006', '', 'S');
17247
															} else {
17248
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17249
															}
17250
														});
17251
													}
17252
												}
17253
											});
17254
										}
17255
									}, {
17256
										text: 'Cancel',
17257
										name: 'cancelDISPLAY' + rec.TableName,
17258
										iconCls: 'fa-reply',
17259
										style: 'font-family: FontAwesome',
17260
										handler: function () {
17261
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
17262
												if (respone == "yes") {
17263
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17264
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17265
													frmDisplay.setHidden(false);
17266
													frmForm.setHidden(true);
17267
												}
17268
											});
17269
										}
17270
									}
17271
								]
17272
							}
17273
						]
17274
					});
17275
				}
17276
			});
17277
		}
17278
		Ext.applyIf(me, {
17279
			items: _items
17280
		});
17281
		me.callParent(arguments);
17282
	}
17283
});
17284
/*Add by Taufan ( Tab List Doc Transaction For ERP )*/
17285
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTrans', {
17286
	extend: 'Ext.tab.Panel',
17287
	alias: ['widget.doctablist'],
17288
	transType: undefined,
17289
	docType: undefined,
17290
	docNo: undefined,
17291
	langId: undefined,
17292
	param: undefined,
17293
	layout: 'fit',
17294
	name: 'panelTab',
17295
	id: 'mainTab',
17296
	action: undefined,
17297
	initComponent: function () {
17298
		var me = this;
17299
		var documentType = me.docType;
17300
		var transactionType = me.transType;
17301
		var hasil = null;
17302
		var _items = [];
17303
		Ext.Ajax.request({
17304
			async: false,
17305
			method: 'POST',
17306
			url: '/UserControl/GetStore',
17307
			params: {
17308
				tableName: 'PCMBSTRANSLIST',
17309
				param: 'TransType[=]' + me.transType
17310
			},
17311
			success: function (response) {
17312
				var results = Ext.decode(response.responseText);
17313
				hasil = results.data;
17314
			}
17315
		});
17316
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
17317
		if (hasil.length > 0) {
17318
			Ext.each(hasil, function (rec) {
17319
				if (rec.LayoutType == "L004") { // L004=Custom
17320
					var pnl = Ext.create(rec.CustomLayout, {
17321
							title: rec.Title,
17322
							tableName: rec.TableName,
17323
							height: 400,
17324
							name: 'panelTab' + rec.TableName,
17325
							tbl: rec.TableName,
17326
							layoutType: rec.LayoutType
17327
						});
17328
					_items.push(pnl)
17329
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
17330
					_items.push({
17331
						xtype: 'panel',
17332
						title: rec.Title,
17333
						name: 'panelTab' + rec.TableName,
17334
						tbl: rec.TableName,
17335
						layoutType: rec.LayoutType,
17336
						items: [{
17337
								xtype: 'docgrid',
17338
								height: 400,
17339
								tableName: rec.TableName,
17340
								docType: me.docType,
17341
								transType: me.transType,
17342
								storename: 'store' + rec.TableName,
17343
								pagesize: 25,
17344
								name: 'GRID' + rec.TableName,
17345
								margin: '0 0 10 0',
17346
								autoLoad: false,
17347
								tbar: [{
17348
										xtype: 'button',
17349
										text: 'Action',
17350
										name: 'actionGrid' + rec.TableName,
17351
										menu: [{
17352
												text: 'Add',
17353
												name: 'add' + rec.TableName,
17354
												tbl: rec.TableName,
17355
												style: 'font-family: FontAwesome',
17356
												iconCls: 'fa-plus-circle',
17357
												handler: function () {
17358
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17359
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17360
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17361
													frmDisplay.reset();
17362
													frmForm.reset();
17363
													frmDisplay.setHidden(true);
17364
													frmForm.setHidden(false);
17365
													grdPanel.setHidden(true);
17366
													action = "0";
17367
												}
17368
											}, {
17369
												text: 'Delete',
17370
												name: 'delete' + rec.TableName,
17371
												tbl: rec.TableName,
17372
												iconCls: 'fa-trash-o',
17373
												style: 'font-family: FontAwesome',
17374
												handler: function () {
17375
													var me = this;
17376
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
17377
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17378
													Ext.MessageBox.show({
17379
														title: 'Remove tab',
17380
														msg: "This will remove. Do you want to continue?",
17381
														buttons: Ext.MessageBox.YESNO,
17382
														fn: function (choice) {
17383
															console.log(choice);
17384
															if (choice === 'yes') {
17385
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
17386
																if (selection) {
17387
																	store.remove(selection);
17388
																}
17389
															}
17390
														}
17391
													});
17392
												}
17393
											}
17394
										]
17395
									}, {
17396
										xtype: 'tbfill'
17397
									}, {
17398
										text: 'Clear Filters',
17399
										tooltip: 'Clear all filters',
17400
										name: 'clearbtn',
17401
										handler: function () {}
17402
									}
17403
								],
17404
								dockedItems: [{
17405
										xtype: 'pagingtoolbar',
17406
										store: 'store' + rec.TableName,
17407
										dock: 'bottom',
17408
										pageSize: me.pagesize,
17409
										displayInfo: true
17410
									}
17411
								],
17412
								listeners: {
17413
									'itemdblclick': function (me, record, item, index, e, eOpts) {
17414
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17415
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17416
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17417
										frmDisplay.reset();
17418
										frmForm.reset();
17419
										frmDisplay.getForm().setValues(record.data);
17420
										frmForm.getForm().setValues(record.data);
17421
										frmDisplay.setHidden(false);
17422
										frmForm.setHidden(true);
17423
										grdPanel.setHidden(true);
17424
										action = "1";
17425
									}
17426
								}
17427
							}, {
17428
								xtype: 'minovadocform',
17429
								name: 'DISPLAY' + rec.TableName,
17430
								id: 'DISPLAY' + rec.TableName,
17431
								itemId: 'DISPLAY' + rec.TableName,
17432
								tableName: rec.TableName,
17433
								docType: me.docType,
17434
								transType: me.transType,
17435
								isDisplay: true,
17436
								hidden: true,
17437
								buttons: [{
17438
										text: 'Edit',
17439
										name: 'editDISPLAY' + rec.TableName,
17440
										handler: function () {
17441
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17442
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17443
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17444
											frmDisplay.setHidden(true);
17445
											frmForm.setHidden(false);
17446
											grdPanel.setHidden(true);
17447
										}
17448
									}, {
17449
										text: 'Cancel',
17450
										name: 'cancelDISPLAY' + rec.TableName,
17451
										handler: function () {
17452
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17453
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17454
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17455
											frmDisplay.setHidden(true);
17456
											frmForm.setHidden(true);
17457
											grdPanel.setHidden(false);
17458
											grdPanel.getStore().reload();
17459
										}
17460
									}
17461
								]
17462
							}, {
17463
								xtype: 'minovadocform',
17464
								name: 'FORM' + rec.TableName,
17465
								id: 'FORM' + rec.TableName,
17466
								itemId: 'FORM' + rec.TableName,
17467
								tableName: rec.TableName,
17468
								docType: me.docType,
17469
								transType: me.transType,
17470
								isDisplay: false,
17471
								hidden: true,
17472
								buttons: [{
17473
										text: 'Submit',
17474
										name: 'submitFORM' + rec.TableName,
17475
										handler: function () {
17476
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17477
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17478
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17479
											var frm = frmForm.getForm();
17480
											if (frm.isValid()) {
17481
												var table = rec.TableName;
17482
												var data = frmForm.getValues();
17483
												var token = MinovaUtil.SESSIONS.Token;
17484
												var str = grdPanel.getStore();
17485
												var idx = str.getCount();
17486
												str.insert(idx, data);
17487
												frmDisplay.setHidden(true);
17488
												frmForm.setHidden(true);
17489
												grdPanel.setHidden(false);
17490
											}
17491
										}
17492
									}, {
17493
										text: 'Cancel',
17494
										name: 'cancelFORM' + rec.TableName,
17495
										handler: function () {
17496
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
17497
												if (respone == "yes") {
17498
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17499
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17500
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17501
													frmDisplay.setHidden(true);
17502
													frmForm.setHidden(true);
17503
													grdPanel.setHidden(false);
17504
												}
17505
											});
17506
										}
17507
									}
17508
								]
17509
							}
17510
						]
17511
					});
17512
				} else if (rec.LayoutType == "L005") { // Grid View Only
17513
					_items.push({
17514
						xtype: 'panel',
17515
						title: rec.Title,
17516
						name: 'panelTab' + rec.TableName,
17517
						tbl: rec.TableName,
17518
						layoutType: rec.LayoutType,
17519
						items: [{
17520
								xtype: 'docgrid',
17521
								height: 400,
17522
								tableName: rec.TableName,
17523
								docType: me.docType,
17524
								transType: me.transType,
17525
								storename: 'store' + rec.TableName,
17526
								pagesize: 25,
17527
								name: 'GRID' + rec.TableName,
17528
								margin: '0 0 10 0',
17529
								autoLoad: false,
17530
								tbar: [{
17531
										xtype: 'tbfill'
17532
									}, {
17533
										text: 'Clear Filters',
17534
										tooltip: 'Clear all filters',
17535
										name: 'clearbtn',
17536
										handler: function () {}
17537
									}
17538
								],
17539
								dockedItems: [{
17540
										xtype: 'pagingtoolbar',
17541
										store: 'store' + rec.TableName,
17542
										dock: 'bottom',
17543
										pageSize: me.pagesize,
17544
										displayInfo: true
17545
									}
17546
								]
17547
							}
17548
						]
17549
					});
17550
				} else if (rec.LayoutType == "L006") {
17551
					_items.push({
17552
						xtype: 'panel',
17553
						title: rec.Title,
17554
						name: 'panelTab' + rec.TableName,
17555
						tbl: rec.TableName,
17556
						layoutType: rec.LayoutType,
17557
						items: [{
17558
								xtype: 'docgridcelledit',
17559
								name: 'CELLGRID' + rec.TableName,
17560
								tableName: rec.TableName,
17561
								docType: me.docType,
17562
								transType: me.transType,
17563
								docNo: me.docNo,
17564
								height: 400,
17565
								hideButton: false,
17566
								margin: '0 0 10 0'
17567
							}
17568
						]
17569
					});
17570
				} else if (rec.LayoutType == "L007") {
17571
					_items.push({
17572
						xtype: 'panel',
17573
						title: rec.Title,
17574
						name: 'panelTab' + rec.TableName,
17575
						tbl: rec.TableName,
17576
						layoutType: rec.LayoutType,
17577
						items: [{
17578
								xtype: 'docgridcelleditsum',
17579
								name: 'CELLGRID' + rec.TableName,
17580
								tableName: rec.TableName,
17581
								docType: me.docType,
17582
								transType: me.transType,
17583
								docNo: me.docNo,
17584
								height: 400,
17585
								hideButton: false,
17586
								margin: '0 0 10 0'
17587
							}, {
17588
								xtype: 'summarydocform',
17589
								name: 'SUM' + rec.TableName,
17590
								id: 'SUM' + rec.TableName,
17591
								itemId: 'SUM' + rec.TableName,
17592
								tableName: rec.TableName,
17593
								docType: me.docType,
17594
								transType: me.transType,
17595
							}
17596
						]
17597
					});
17598
				} else { // L001=Default Form Only
17599
					_items.push({
17600
						xtype: 'panel',
17601
						title: rec.LabelName,
17602
						name: 'panelTab' + rec.TableName,
17603
						tbl: rec.TableName,
17604
						layoutType: rec.LayoutType,
17605
						items: [{
17606
								xtype: 'minovadocform',
17607
								name: 'DISPLAY' + rec.TableName,
17608
								id: 'DISPLAY' + rec.TableName,
17609
								itemId: 'DISPLAY' + rec.TableName,
17610
								tableName: rec.TableName,
17611
								docType: me.docType,
17612
								transType: me.transType,
17613
								isDisplay: true,
17614
								hidden: false,
17615
								buttons: [{
17616
										text: 'Edit',
17617
										name: 'editDISPLAY' + rec.TableName,
17618
										iconCls: 'fa-edit',
17619
										style: 'font-family: FontAwesome',
17620
										handler: function () {
17621
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17622
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17623
											frmDisplay.setHidden(true);
17624
											frmForm.setHidden(false);
17625
											action = "1";
17626
										}
17627
									}, {
17628
										text: 'Cancel',
17629
										name: 'cancelDISPLAY' + rec.TableName,
17630
										iconCls: 'fa-reply',
17631
										style: 'font-family: FontAwesome',
17632
										hidden: true
17633
									}
17634
								]
17635
							}, {
17636
								xtype: 'minovadocform',
17637
								name: 'FORM' + rec.TableName,
17638
								id: 'FORM' + rec.TableName,
17639
								itemId: 'FORM' + rec.TableName,
17640
								tableName: rec.TableName,
17641
								docType: me.docType,
17642
								transType: me.transType,
17643
								isDisplay: false,
17644
								hidden: true,
17645
								buttons: [{
17646
										text: 'Save',
17647
										name: 'saveDISPLAY' + rec.TableName,
17648
										iconCls: 'fa-save',
17649
										style: 'font-family: FontAwesome',
17650
										handler: function () {
17651
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17652
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17653
											var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
17654
											var frm = frmForm.getForm();
17655
											if (frm.isValid()) {
17656
												var table = rec.TableName;
17657
												var data = Ext.encode(frmForm.getValues());
17658
												var token = MinovaUtil.SESSIONS.Token;
17659
												var params = {
17660
													apiController: 'api/Devt',
17661
													methodName: 'SaveTableMaster',
17662
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17663
												};
17664
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17665
													var result = Ext.decode(xhr.responseText);
17666
													var r = Ext.decode(result.data);
17667
													if (r.success) {
17668
														headerDisplay.mask("Loading...");
17669
														var idNo = r.data;
17670
														frmForm.getForm().findField("DocNo").setValue(idNo);
17671
														frmDisplay.getForm().setValues(frmForm.getValues());
17672
														headerDisplay.getForm().setValues(frmForm.getValues());
17673
														frmDisplay.setHidden(false);
17674
														frmForm.setHidden(true);
17675
														MinovaMessage('Not Null', '000006', '', 'S');
17676
														headerDisplay.unmask();
17677
													} else {
17678
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17679
													}
17680
												});
17681
											}
17682
										}
17683
									}, {
17684
										text: 'Delete',
17685
										name: 'deleteDISPLAY' + rec.TableName,
17686
										iconCls: 'fa-trash-o',
17687
										style: 'font-family: FontAwesome',
17688
										handler: function () {}
17689
									}, {
17690
										text: 'Cancel',
17691
										name: 'cancelDISPLAY' + rec.TableName,
17692
										iconCls: 'fa-reply',
17693
										style: 'font-family: FontAwesome',
17694
										handler: function () {
17695
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
17696
												if (respone == "yes") {
17697
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17698
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17699
													frmDisplay.setHidden(false);
17700
													frmForm.setHidden(true);
17701
												}
17702
											});
17703
										}
17704
									}
17705
								]
17706
							}
17707
						]
17708
					});
17709
				}
17710
			});
17711
		}
17712
		Ext.applyIf(me, {
17713
			items: _items
17714
		});
17715
		me.callParent(arguments);
17716
	}
17717
});
17718
/*Add by Taufan ( Generate Doc Transaction Form For ERP )*/
17719
Ext.define('MinovaUtil.MinovaES.MinovaDocForm', {
17720
	extend: 'Ext.form.Panel',
17721
	alias: ['widget.MinovaDocForm', 'widget.minovadocform', 'widget.docform'],
17722
	formname: this.name,
17723
	tableName: undefined,
17724
	docType: undefined,
17725
	transType: undefined,
17726
	resizable: true,
17727
	border: false,
17728
	autoScroll: true,
17729
	isDisplay: undefined,
17730
	isLookup: undefined,
17731
	layout: 'column',
17732
	defaults: {
17733
		layout: 'form',
17734
		xtype: 'container',
17735
		defaultType: 'textfield',
17736
		style: 'width: 50%',
17737
	},
17738
	initComponent: function () {
17739
		var me = this;
17740
		var col1 = [];
17741
		var col2 = [];
17742
		var LangID = localStorage.LangId;
17743
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
17744
		var formname_ = me.name;
17745
		var nameTable_ = me.tableName;
17746
		Ext.Ajax.request({
17747
			async: false,
17748
			method: 'POST',
17749
			url: '/UserControl/GetStore',
17750
			params: {
17751
				tableName: 'PDSDOCFIELD',
17752
				param: parameter
17753
			},
17754
			success: function (response) {
17755
				var results = Ext.decode(response.responseText);
17756
				hasil = results.data;
17757
			}
17758
		});
17759
		if (hasil.length > 0) {
17760
			Ext.each(hasil, function (rec) {
17761
				var isnull = null;
17762
				if (rec.IsPrimaryKey == '1') {
17763
					isnull = false;
17764
				}
17765
				if (rec.IsRequired == '1') {
17766
					isnull = false;
17767
				} else {
17768
					isnull = true;
17769
				}
17770
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, isnull, me.isDisplay, me.tableName, me.isLookup);
17771
				var descField = undefined;
17772
				if (rec.FormatRef == 'amount') {
17773
					formfield.setRawValue(Ext.util.Format.number(formfield.rawValue, "0,000.00"));
17774
				}
17775
				if (rec.ColumnNo == 1) {
17776
					col1.push(formfield);
17777
					if (descField) {
17778
						col1.push(descField)
17779
					}
17780
				} else {
17781
					col2.push(formfield);
17782
					if (descField) {
17783
						col2.push(descField)
17784
					}
17785
				}
17786

    
17787
				if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
17788
					formfieldKey = new Ext.form.TextField({
17789
							hidden: true,
17790
							name: "Key_" + rec.FieldName,
17791
						});
17792
					col2.push(formfieldKey);
17793
				}
17794
			});
17795
		}
17796
		Ext.applyIf(me, {
17797
			items: [{
17798
					style: 'width: 50%',
17799
					items: col1
17800
				}, {
17801
					style: 'width: 50%',
17802
					items: col2
17803
				}
17804
			]
17805
		});
17806
		this.callParent();
17807
	}
17808
});
17809
/*Add by Taufan ( Generate Doc Transaction Grid For ERP )*/
17810
Ext.define('MinovaUtil.MinovaES.MinovaDocGrid', {
17811
	extend: 'Ext.grid.Panel',
17812
	requires: ['Ext.grid.RowNumberer'],
17813
	alias: 'widget.docgrid',
17814
	alternateClassName: 'Ext.grid.MinovaGrid',
17815
	tableName: undefined,
17816
	docType: undefined,
17817
	transType: undefined,
17818
	isLookup: undefined,
17819
	param: undefined,
17820
	pagesize: undefined,
17821
	storename: undefined,
17822
	layoutType: undefined,
17823
	enableLocking: true,
17824
	autoLoad: undefined,
17825
	multiSelect: undefined,
17826
	getTableName: function () {
17827
		return this.tableName;
17828
	},
17829
	initComponent: function () {
17830
		var me = this;
17831
		var cols_ = [];
17832
		var fieldeditor = {};
17833
		var hasil = null;
17834
		var autoLoad = true;
17835
		var LangID = localStorage.LangId;
17836
		var fielGrid = 'rec.GridView == 1';
17837
		var locking = true;
17838
		var checkSelection = '';
17839
		var widthLock = 250;
17840
		if (me.multiSelect) {
17841
			locking = false;
17842
			checkSelection = 'checkboxmodel';
17843
			widthLock = 40;
17844
		}
17845
		if (me.autoLoad == false) {
17846
			autoLoad = false;
17847
		}
17848
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
17849
		Ext.Ajax.request({
17850
			async: false,
17851
			method: 'POST',
17852
			url: '/UserControl/GetStore',
17853
			params: {
17854
				tableName: 'PDSDOCFIELD',
17855
				param: parameter
17856
			},
17857
			success: function (response) {
17858
				var results = Ext.decode(response.responseText);
17859
				hasil = results.data;
17860
			}
17861
		});
17862
		if (hasil.length > 0) {
17863
			Ext.each(hasil, function (rec) {
17864
				var null_ = null;
17865
				if (rec.IsPrimaryKey == true) {
17866
					null_ = false;
17867
				}
17868
				if (rec.IsRequired == true) {
17869
					null_ = false;
17870
				} else {
17871
					null_ = true;
17872
				}
17873
				if (rec.GridView == 1) {
17874
					switch (rec.FormatRef) {
17875
					case "action":
17876
						cols_.push({
17877
							text: rec.HeaderTitle,
17878
							width: 100,
17879
							xtype: 'actioncolumn',
17880
							tooltip: 'View Data',
17881
							name: rec.FieldName,
17882
							itemId: me.tableName + rec.FieldName,
17883
							align: 'center',
17884
							iconCls: 'fa-edit',
17885
							renderer: function (value, metadata, record) {
17886
								metadata.tdStyle = 'font-family: FontAwesome'
17887
							},
17888
							handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
17889

    
17890
								this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
17891
							}
17892
						});
17893
						break
17894
					case "file":
17895
						cols_.push({
17896
							xtype: 'minovapicturecolumn',
17897
							text: rec.HeaderTitle,
17898
							dataIndex: rec.FieldName,
17899
							width: 100
17900
						});
17901
						break
17902
					case "date":
17903
						cols_.push({
17904
							xtype: 'minovadatecolumn',
17905
							text: rec.HeaderTitle,
17906
							dataIndex: rec.FieldName,
17907
							width: 100,
17908
							filter: {
17909
								type: 'date',
17910
								itemDefaults: {
17911
									emptyText: 'Search for...'
17912
								}
17913
							}
17914
						});
17915
						break
17916
					case "amountencrypt":
17917
						cols_.push({
17918
							xtype: 'minovaamountcolumn',
17919
							text: rec.HeaderTitle,
17920
							dataIndex: rec.FieldName,
17921
							align: 'right',
17922
							width: 100,
17923
							filter: {
17924
								type: 'string',
17925
								itemDefaults: {
17926
									emptyText: 'Search for...'
17927
								}
17928
							}
17929
						});
17930
						break
17931
					case "amount":
17932
						cols_.push({
17933
							xtype: 'minovacurrancycolumn',
17934
							text: rec.HeaderTitle,
17935
							dataIndex: rec.FieldName,
17936
							align: 'right',
17937
							width: 100,
17938
							filter: {
17939
								type: 'number',
17940
								itemDefaults: {
17941
									emptyText: 'Search for...'
17942
								}
17943
							}
17944
						});
17945
						break
17946
					case "datetime":
17947
						cols_.push({
17948
							xtype: 'minovadatetimecolumn',
17949
							text: rec.HeaderTitle,
17950
							dataIndex: rec.FieldName,
17951
							width: 140,
17952
							filter: {
17953
								type: 'string',
17954
								itemDefaults: {
17955
									emptyText: 'Search for...'
17956
								}
17957
							}
17958
						});
17959
						break
17960
					default:
17961
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
17962
							cols_.push({
17963
								text: rec.HeaderTitle,
17964
								dataIndex: rec.FieldName,
17965
								width: 100,
17966
								filter: {
17967
									type: 'string',
17968
									itemDefaults: {
17969
										emptyText: 'Search for...'
17970
									}
17971
								}
17972
							});
17973
						} else if (rec.TableRef != "") {
17974
							if (rec.TableRef != null) {
17975
								var valueField = null;
17976
								var displayValue = null;
17977
								Ext.Ajax.request({
17978
									async: false,
17979
									method: 'POST',
17980
									url: '/UserControl/GetStore',
17981
									params: {
17982
										tableName: 'SDATATABLEFIELD',
17983
										param: 'TableName[equal]' + rec.TableRef
17984
									},
17985
									success: function (response) {
17986
										var results = Ext.decode(response.responseText);
17987
										data_ = results.data;
17988
										if (data_.length > 0) {
17989
											valueField_ = $.grep(data_, function (r) {
17990
													return r.ValueField == '1'
17991
												});
17992
											valueField = valueField_[0].FieldName
17993
												displayValue_ = $.grep(data_, function (r) {
17994
													return r.DisplayValue == '1'
17995
												});
17996
											displayValue = displayValue_[0].FieldName
17997
										} else {
17998
											MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
17999
										}
18000
									}
18001
								});
18002
								var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
18003
								var count_ = 0;
18004
								if (store_) {
18005
									count_ = store_.count();
18006
								}
18007
								if (count_ == 0) {
18008
									Ext.create('Ext.data.Store', {
18009
										storeId: 'store_' + rec.FieldName,
18010
										autoLoad: false,
18011
										proxy: {
18012
											method: 'POST',
18013
											type: 'ajax',
18014
											url: '/UserControl/GetStore',
18015
											extraParams: {
18016
												tableName: rec.TableRef,
18017
												param: rec.ParamCombo
18018
											},
18019
											reader: {
18020
												type: 'json',
18021
												root: 'data',
18022
												totalProperty: 'data[0].TotalCount'
18023
											}
18024
										}
18025
									})
18026
								}
18027
								cols_.push({
18028
									xtype: 'minovacombocolumn',
18029
									text: rec.HeaderTitle,
18030
									dataIndex: rec.FieldName,
18031
									valueField: valueField,
18032
									displayField: displayValue,
18033
									store: 'store_' + rec.FieldName,
18034
									filter: {
18035
										type: 'list',
18036
										itemDefaults: {
18037
											emptyText: 'Search for...'
18038
										}
18039
									}
18040
								});
18041
							}
18042
						} else if (rec.FixedValue != "") {
18043
							cols_.push({
18044
								xtype: 'minovacombocolumnfixvalue',
18045
								text: rec.HeaderTitle,
18046
								dataIndex: rec.FieldName,
18047
								fixedValue: rec.FixedValue,
18048
								filter: {
18049
									type: 'list',
18050
									itemDefaults: {
18051
										emptyText: 'Search for...'
18052
									}
18053
								}
18054
							});
18055
						} else {
18056
							cols_.push({
18057
								text: rec.HeaderTitle,
18058
								dataIndex: rec.FieldName,
18059
								filter: {
18060
									itemDefaults: {
18061
										emptyText: 'Search for...'
18062
									}
18063
								}
18064
							});
18065
						}
18066
						break
18067
					}
18068
				} else {
18069
					cols_.push({
18070
						text: rec.HeaderTitle,
18071
						dataIndex: rec.FieldName,
18072
						hidden: true,
18073
						filter: {
18074
							itemDefaults: {
18075
								emptyText: 'Search for...'
18076
							}
18077
						}
18078
					});
18079
				}
18080

    
18081
			});
18082
		};
18083
		var param_ = me.param;
18084
		if (param_ == undefined) {
18085
			param_ = ''
18086
		}
18087
		var jsStoreGrid = new Ext.data.Store({
18088
				storeId: me.storename,
18089
				autoLoad: autoLoad,
18090
				pageSize: me.pagesize,
18091
				proxy: {
18092
					method: 'POST',
18093
					type: 'ajax',
18094
					url: '/UserControl/GetStorePagingAuth',
18095
					extraParams: {
18096
						tableName: me.tableName,
18097
						param: param_,
18098
						menuId: MinovaUtil.GetMenuID()
18099
					},
18100
					reader: {
18101
						type: 'json',
18102
						root: 'data',
18103
						totalProperty: 'totalRecords'
18104
					}
18105
				},
18106
			});
18107
		Ext.applyIf(me, {
18108
			autoScroll: true,
18109
			enableLocking: locking,
18110
			lockedGridConfig: {
18111
				header: false,
18112
				collapsible: true,
18113
				width: widthLock,
18114
				forceFit: locking,
18115
				listeners: {
18116
					render: function (grid) {
18117
						var pagingToolbar = grid.child('pagingtoolbar');
18118
						if (pagingToolbar) {
18119
							grid.remove(pagingToolbar, true);
18120
						}
18121
					}
18122
				}
18123
			},
18124
			listeners: {
18125
				viewready: function () {
18126
					if (autoLoad == true) {
18127
						this.getStore().loadPage(1);
18128
					}
18129
				},
18130
				beforeedit: function () {
18131
					return false;
18132
				}
18133
			},
18134
			lockedViewConfig: {
18135
				scroll: 'horizontal'
18136
			},
18137

    
18138
			//Add For Auto Size Coloum Mode
18139
			viewConfig: {
18140
				emptyText: 'No Data Display',
18141
				deferEmptyText: false,
18142
				listeners: {
18143
					refresh: function (dataview) {
18144
						Ext.each(dataview.panel.columns, function (column) {
18145
							if (column.autoSizeColumn == false)
18146
								column.autoSizeColumn = true;
18147
							column.autoSize();
18148
						})
18149
					}
18150
				}
18151
			},
18152
			selModel: {},
18153
			selType: checkSelection,
18154
			columns: cols_,
18155
			store: jsStoreGrid,
18156
			plugins: [{
18157
					ptype: 'gridfilters'
18158
				}
18159
			]
18160
		});
18161
		me.callParent(arguments);
18162
	}
18163
});
18164
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid  For ERP ) Malaka*/
18165
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEdit', {
18166
	extend: 'Ext.form.Panel',
18167
	alias: 'widget.docgridcelledit',
18168
	requires: [
18169
		'Ext.grid.plugin.CellEditing',
18170
		'Ext.grid.Panel'
18171
	],
18172
	autoScroll: true,
18173
	anchor: '100%',
18174
	tableName: undefined,	
18175
	docType: undefined,
18176
	transType: undefined,
18177
	docNo: undefined,
18178
	hideButton: undefined,
18179
	multiSelect: undefined,
18180
	initComponent: function () {
18181
		var me = this;
18182
		var isLookup = me.isLookup;
18183
		var hide_ = false;
18184
		var hideUploadDownload = false;
18185
		var hideLoad = true;
18186
		var widthLock = 250;
18187
		var checkSelection = '';
18188
		var tableRefName = '';
18189
		
18190
		Ext.Ajax.request({
18191
			async: false,
18192
			method: 'POST',
18193
			url: '/UserControl/GetStore',
18194
			params: {
18195
				tableName: "PCMBSTRANSLIST",
18196
				param: 'TableName[=]' + me.tableName
18197
			},
18198
			success: function (response) {
18199
				var results = Ext.decode(response.responseText);
18200
				if (results.data[0].UploadDownloadEnable == '0') {
18201
					hideUploadDownload = true;
18202
				} else {
18203
					hideUploadDownload = false;
18204
				}
18205
			}
18206
		});
18207
		
18208
		if (me.tableName == "CMDSRV0002") {
18209
			tableRefName = "PMDSRV0002";
18210
		} else if (me.tableName == "CMDSRV0003") {
18211
			tableRefName = "PMDSRV0003";
18212
		} else if (me.tableName == "CMDSRV0004") {
18213
			tableRefName = "PMDSRV0004";
18214
		}
18215
		
18216
		if (me.tableName == "CMDSRV0002" || me.tableName == "CMDSRV0003" || me.tableName == "CMDSRV0004") {
18217
			hideLoad = false;
18218
		}
18219

    
18220
		if (me.hideButton == true) {
18221
			hide_ = true;
18222
		}
18223
		if (me.multiSelect) {
18224
			locking = false;
18225
			checkSelection = 'checkboxmodel';
18226
			widthLock = 40;
18227
		}
18228
		var tableName = me.tableName;
18229
		var cols = [];
18230
		var fieldStore = [];
18231
		var _url = 'GetAllField';
18232
		var hasil = null;
18233
		var height = me.height;
18234
		var storeID = 'store' + me.tableName;
18235
		var gridName = 'grid' + me.name;
18236
		if (me.storeName) {
18237
			storeID = me.storeName;
18238
		}
18239
		var LangID = MinovaUtil.GetLangID();
18240
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18241
		Ext.Ajax.request({
18242
			async: false,
18243
			method: 'POST',
18244
			url: '/UserControl/GetStore',
18245
			params: {
18246
				tableName: 'PDSDOCFIELD',
18247
				param: parameter
18248
			},
18249
			success: function (response) {
18250
				var results = Ext.decode(response.responseText);
18251
				hasil = results.data;
18252
			}
18253
		});
18254
		cols.push({
18255
			xtype: 'rownumberer'
18256
		});
18257
		var addData = '({';
18258
		if (hasil.length > 0) {
18259
			Ext.each(hasil, function (rec) {
18260
				fieldStore.push(rec.FieldName);
18261
				var defaultValue = rec.DefaultValue;
18262
				if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
18263
					Ext.Ajax.request({
18264
						async: false,
18265
						method: 'POST',
18266
						url: '/UserControl/GetStore',
18267
						params: {
18268
							tableName: 'PCMFUNC',
18269
							param: 'FuncName[equal]' + rec.DefaultValue
18270
						},
18271
						success: function (response) {
18272
							var results = Ext.decode(response.responseText);
18273
							data_ = results.data;
18274
							if (data_.length > 0) {
18275
								defaultValue = eval(data_[0].FunctionCode);
18276
							}
18277
						}
18278
					});
18279
				}
18280
				addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
18281
				var null_ = null;
18282
				var ReadOnly_ = false;
18283
				if (rec.IsPrimaryKey == true) {
18284
					null_ = false;
18285
				}
18286
				if (rec.IsRequired == true) {
18287
					null_ = false;
18288
				} else {
18289
					null_ = true;
18290
				}
18291
				var Hidden_ = false;
18292
				if (rec.ReadOnly == '1') {
18293
					ReadOnly_ = true;
18294
				}
18295
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
18296
					Hidden_ = true;
18297
					null_ = true;
18298
				}
18299
				if (rec.GridView == 1) {
18300
					switch (rec.FormatRef) {
18301
					case "date":
18302
						cols.push({
18303
							xtype: 'minovadatecolumn',
18304
							hidden: Hidden_,
18305
							text: rec.HeaderTitle,
18306
							dataIndex: rec.FieldName,
18307
							filter: {
18308
								itemDefaults: {
18309
									emptyText: 'Search for...'
18310
								}
18311
							},
18312
							editor: {
18313
								allowBlank: null_,
18314
								xtype: 'datefield',
18315
								hideMode: 'visibility',
18316
								readOnly: ReadOnly_,
18317
								id: tableName + rec.FieldName,
18318
								value: defaultValue
18319
							}
18320
						});
18321
						break
18322
					case "amount":
18323
						cols.push({
18324
							//xtype : 'minovacurrancycolumn',
18325
							xtype: 'numbercolumn',
18326
							text: rec.HeaderTitle,
18327
							align: 'right',
18328
							dataIndex: rec.FieldName,
18329
							hidden: Hidden_,
18330
							filter: {
18331
								itemDefaults: {
18332
									emptyText: 'Search for...'
18333
								}
18334
							},
18335
							editor: {
18336
								allowBlank: null_,
18337
								xtype: 'textfield',
18338
								readOnly: ReadOnly_,
18339
								id: tableName + rec.FieldName,
18340
								nameTable: rec.TableName,
18341
								fieldGrid: rec.FieldName,
18342
								fieldStyle: 'text-align:right;',
18343
								vtype: 'validateMinovaNumber',
18344
								value: '0',
18345
								listeners: {
18346
									change: function (val, recs) {
18347
										var fvalue = val.getValue();
18348
										var custumFunc = rec.SelectFunction;
18349
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18350
											Ext.Ajax.request({
18351
												async: false,
18352
												method: 'POST',
18353
												url: '/UserControl/GetStore',
18354
												params: {
18355
													tableName: 'PCMFUNC',
18356
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18357
												},
18358
												success: function (response) {
18359
													var results = Ext.decode(response.responseText);
18360
													var dt = results.data[0];
18361
													if (dt != undefined) {
18362
														custumFunc = dt.FunctionCode;
18363
													}
18364
												}
18365
											});
18366
										}
18367
										if (custumFunc) {
18368
											eval(custumFunc)
18369
										}
18370
									}
18371
								}
18372
							}
18373
						});
18374
						break
18375
					default:
18376
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
18377
							cols.push({
18378
								text: rec.HeaderTitle,
18379
								dataIndex: rec.FieldName,
18380
								width: 100,
18381
								filter: {
18382
									type: 'string',
18383
									itemDefaults: {
18384
										emptyText: 'Search for...'
18385
									}
18386
								}
18387
							});
18388
						} else if (rec.SearchType == '0') {
18389
							var valueField = null;
18390
							var displayValue = null;
18391
							var TableRef = undefined;
18392
							if (rec.TableRef != '') {
18393
								TableRef = rec.TableRef;
18394
								Ext.Ajax.request({
18395
									async: false,
18396
									method: 'POST',
18397
									url: '/UserControl/GetStore',
18398
									params: {
18399
										tableName: 'SDATATABLEFIELD',
18400
										param: 'TableName[equal]' + rec.TableRef
18401
									},
18402
									success: function (response) {
18403
										var results = Ext.decode(response.responseText);
18404
										data_ = results.data;
18405
										if (data_ != undefined) {
18406
											valueField_ = $.grep(data_, function (r) {
18407
													return r.ValueField == '1'
18408
												});
18409
											valueField = valueField_[0].FieldName
18410
												displayValue_ = $.grep(data_, function (r) {
18411
													return r.DisplayValue == '1'
18412
												});
18413
											displayValue = displayValue_[0].FieldName
18414
										}
18415
									}
18416
								});
18417
							}
18418
							Ext.create('Ext.data.Store', {
18419
								storeId: 'store_' + me.tableName + rec.FieldName,
18420
								autoLoad: true,
18421
								proxy: {
18422
									method: 'POST',
18423
									type: 'ajax',
18424
									url: '/UserControl/GetStoreAuth',
18425
									extraParams: {
18426
										tableName: TableRef,
18427
										param: rec.ParamCombo,
18428
										menuId: MinovaUtil.GetMenuID()
18429
									},
18430
									reader: {
18431
										type: 'json',
18432
										root: 'data',
18433
										totalProperty: 'data[0].TotalCount'
18434
									}
18435
								}
18436
							});
18437
							cols.push({
18438
								xtype: 'minovacombocolumn',
18439
								hidden: Hidden_,
18440
								text: rec.HeaderTitle,
18441
								dataIndex: rec.FieldName,
18442
								valueField: valueField,
18443
								displayField: displayValue,
18444
								store: 'store_' + me.tableName + rec.FieldName,
18445
								editor: {
18446
									allowBlank: null_,
18447
									xtype: 'combobox',
18448
									readOnly: ReadOnly_,
18449
									id: tableName + rec.FieldName,
18450
									valueField: valueField,
18451
									displayField: displayValue,
18452
									store: 'store_' + me.tableName + rec.FieldName,
18453
									listeners: {
18454
										change: function (val) {
18455
											var fvalue = val.getValue();
18456
											var custumFunc = rec.SelectFunction;
18457
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18458
												Ext.Ajax.request({
18459
													async: false,
18460
													method: 'POST',
18461
													url: '/UserControl/GetStore',
18462
													params: {
18463
														tableName: 'PCMFUNC',
18464
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18465
													},
18466
													success: function (response) {
18467
														var results = Ext.decode(response.responseText);
18468
														var dt = results.data[0];
18469
														if (dt != undefined) {
18470
															custumFunc = dt.FunctionCode;
18471
														}
18472
													}
18473
												});
18474
											}
18475
											if (custumFunc) {
18476
												eval(custumFunc)
18477
											}
18478
										}
18479
									}
18480
								},
18481
								filter: {
18482
									type: 'list',
18483
									itemDefaults: {
18484
										emptyText: 'Search for...'
18485
									}
18486
								}
18487
							});
18488
						} else if (rec.SearchType == '5') {
18489
							var valueField = null;
18490
							var displayValue = null;
18491
							var AdditionaldisplayValue = null;
18492
							var TableRef = undefined;
18493
							if (rec.TableRef != '') {
18494
								TableRef = rec.TableRef;
18495
								Ext.Ajax.request({
18496
									async: false,
18497
									method: 'POST',
18498
									url: '/UserControl/GetStore',
18499
									params: {
18500
										tableName: 'SDATATABLEFIELD',
18501
										param: 'TableName[equal]' + rec.TableRef
18502
									},
18503
									success: function (response) {
18504
										var results = Ext.decode(response.responseText);
18505
										data_ = results.data;
18506
										if (data_ != undefined) {
18507
											valueField_ = $.grep(data_, function (r) {
18508
													return r.ValueField == '1'
18509
												});
18510
											if (valueField_.length > 0) {
18511
												valueField = valueField_[0].FieldName
18512
											}
18513

    
18514
											displayValue_ = $.grep(data_, function (r) {
18515
													return r.DisplayValue == '1' || r.DisplayValue == '2'
18516
												});
18517
											if (displayValue_.length > 0) {
18518
												displayValue = displayValue_[0].FieldName;
18519
											}
18520
											if (displayValue_.length >= 2) {
18521
												AdditionaldisplayValue = displayValue_[1].FieldName
18522
											}
18523
										}
18524
									}
18525
								});
18526
							}
18527
							Ext.create('Ext.data.Store', {
18528
								storeId: 'store_' + me.tableName + rec.FieldName,
18529
								autoLoad: true,
18530
								proxy: {
18531
									method: 'POST',
18532
									type: 'ajax',
18533
									url: '/UserControl/GetStoreAuth',
18534
									extraParams: {
18535
										tableName: TableRef,
18536
										param: rec.ParamCombo,
18537
										menuId: MinovaUtil.GetMenuID()
18538
									},
18539
									reader: {
18540
										type: 'json',
18541
										root: 'data',
18542
										totalProperty: 'data[0].TotalCount'
18543
									}
18544
								}
18545
							});
18546
							cols.push({
18547
								xtype: 'minovacombocolumn',
18548
								hidden: Hidden_,
18549
								text: rec.HeaderTitle,
18550
								dataIndex: rec.FieldName,
18551
								valueField: valueField,
18552
								displayField: displayValue,
18553
								store: 'store_' + me.tableName + rec.FieldName,
18554
								tpl: Ext.create('Ext.XTemplate',
18555
									'<ul class="x-list-plain"><tpl for=".">',
18556
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
18557
									'</tpl></ul>'),
18558
								displayTpl: Ext.create('Ext.XTemplate',
18559
									'<tpl for=".">',
18560
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
18561
									'</tpl>'),
18562
								editor: {
18563
									allowBlank: null_,
18564
									xtype: 'combobox',
18565
									readOnly: ReadOnly_,
18566
									id: rec.TableName + rec.FieldName,
18567
									nameTable: rec.TableName,
18568
									fieldGrid: rec.FieldName,
18569
									valueField: valueField,
18570
									displayField: displayValue,
18571
									store: 'store_' + me.tableName + rec.FieldName,
18572
									value: rec.DefaultValue,
18573
									tpl: Ext.create('Ext.XTemplate',
18574
										'<ul class="x-list-plain"><tpl for=".">',
18575
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
18576
										'</tpl></ul>'),
18577
									displayTpl: Ext.create('Ext.XTemplate',
18578
										'<tpl for=".">',
18579
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
18580
										'</tpl>')
18581
								},
18582
								renderer: function (value) {
18583
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
18584
									var index = store.find(valueField, value);
18585
									var val = "";
18586
									if (index != -1) {
18587
										var rc = store.getAt(index);
18588
										//val = rc.get(displayValue);
18589
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
18590
									} else {
18591
										val = value;
18592
									}
18593
									return val;
18594
								},
18595
								filter: {
18596
									type: 'list',
18597
									itemDefaults: {
18598
										emptyText: 'Search for...'
18599
									}
18600
								}
18601
							});
18602
						} else if (rec.SearchType == '2') {
18603
							var triger = (rec.TriggerCombo).split('$');
18604
							var targetField_ = triger[0];
18605
							var fieldValue_ = triger[1];
18606
							cols.push({
18607
								text: rec.HeaderTitle,
18608
								hidden: Hidden_,
18609
								dataIndex: rec.FieldName,
18610
								filter: {
18611
									itemDefaults: {
18612
										emptyText: 'Search for...'
18613
									}
18614
								},
18615
								editor: {
18616
									allowBlank: null_,
18617
									xtype: 'minovalookupgrid',
18618
									readOnly: ReadOnly_,
18619
									isGrid: true,
18620
									fieldTarget: targetField_,
18621
									fieldValue: fieldValue_,
18622
									isGrid: true,
18623
									id: tableName + rec.FieldName,
18624
									tableName: rec.TableRef,
18625
									triggerCls: 'x-form-search-trigger',
18626
									vtype: 'alphanum',
18627
									listeners: {
18628
										change: function (val) {
18629
											var custumFunc = rec.SelectFunction;
18630
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18631
												Ext.Ajax.request({
18632
													async: false,
18633
													method: 'POST',
18634
													url: '/UserControl/GetStore',
18635
													params: {
18636
														tableName: 'PCMFUNC',
18637
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18638
													},
18639
													success: function (response) {
18640
														var results = Ext.decode(response.responseText);
18641
														data_ = results.data[0];
18642
														if (data_ != undefined) {
18643
															custumFunc = data_.FunctionCode;
18644
														}
18645
													}
18646
												});
18647
											}
18648
											if (custumFunc) {
18649
												eval(custumFunc)
18650
											}
18651
										}
18652
									}
18653
								}
18654
							});
18655
						} else if (rec.SearchType == '3') {
18656
							cols.push({
18657
								text: rec.HeaderTitle,
18658
								hidden: Hidden_,
18659
								dataIndex: rec.FieldName,
18660
								filter: {
18661
									itemDefaults: {
18662
										emptyText: 'Search for...'
18663
									}
18664
								},
18665
								editor: {
18666
									allowBlank: null_,
18667
									xtype: 'MinovaLookupTree',
18668
									readOnly: ReadOnly_,
18669
									id: tableName + rec.FieldName,
18670
									tableName: rec.TableRef,
18671
									triggerCls: 'x-form-search-trigger',
18672
									vtype: 'alphanum',
18673
									treeSructure: rec.SearchFunction,
18674
									objClassValue: rec.ParamCombo,
18675
									listeners: {
18676
										change: function (val) {
18677
											var custumFunc = rec.SelectFunction;
18678
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18679
												Ext.Ajax.request({
18680
													async: false,
18681
													method: 'POST',
18682
													url: '/UserControl/GetStore',
18683
													params: {
18684
														tableName: 'PCMFUNC',
18685
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18686
													},
18687
													success: function (response) {
18688
														var results = Ext.decode(response.responseText);
18689
														data_ = results.data[0];
18690
														if (data_ != undefined) {
18691
															custumFunc = data_.FunctionCode;
18692
														}
18693
													}
18694
												});
18695
											}
18696
											if (custumFunc) {
18697
												eval(custumFunc)
18698
											}
18699
										}
18700
									}
18701
								}
18702
							});
18703
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
18704
							var triger = (rec.TriggerCombo).split('&');
18705
							var targetField_ = triger[0];
18706
							var fieldValue_ = triger[0];
18707
							cols.push({
18708
								text: rec.HeaderTitle,
18709
								hidden: Hidden_,
18710
								dataIndex: rec.FieldName,
18711
								filter: {
18712
									itemDefaults: {
18713
										emptyText: 'Search for...'
18714
									}
18715
								},
18716
								editor: {
18717
									allowBlank: null_,
18718
									xtype: 'lookupemployee',
18719
									readOnly: ReadOnly_,
18720
									isGrid: true,
18721
									fieldTarget: targetField_,
18722
									fieldValue: fieldValue_,
18723
									isGrid: true,
18724
									id: tableName + rec.FieldName,
18725
									tableName: rec.TableRef,
18726
									triggerCls: 'x-form-search-trigger',
18727
									vtype: 'alphanum',
18728
									listeners: {
18729
										change: function (val) {
18730
											var custumFunc = rec.SelectFunction;
18731
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18732
												Ext.Ajax.request({
18733
													async: false,
18734
													method: 'POST',
18735
													url: '/UserControl/GetStore',
18736
													params: {
18737
														tableName: 'PCMFUNC',
18738
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18739
													},
18740
													success: function (response) {
18741
														var results = Ext.decode(response.responseText);
18742
														data_ = results.data[0];
18743
														if (data_ != undefined) {
18744
															custumFunc = data_.FunctionCode;
18745
														}
18746
													}
18747
												});
18748
											}
18749
											if (custumFunc) {
18750
												eval(custumFunc)
18751
											}
18752
										}
18753
									}
18754
								}
18755
							});
18756
						} else if (rec.SearchType == '4' && isLookup != true) {
18757
							cols.push({
18758
								text: rec.HeaderTitle,
18759
								hidden: Hidden_,
18760
								dataIndex: rec.FieldName,
18761
								filter: {
18762
									itemDefaults: {
18763
										emptyText: 'Search for...'
18764
									}
18765
								},
18766
								editor: {
18767
									allowBlank: null_,
18768
									xtype: 'lookupemployee',
18769
									readOnly: ReadOnly_,
18770
									isGrid: true,
18771
									fieldTarget: targetField_,
18772
									fieldValue: fieldValue_,
18773
									isGrid: true,
18774
									id: tableName + rec.FieldName,
18775
									tableName: rec.TableRef,
18776
									triggerCls: 'x-form-search-trigger',
18777
									vtype: 'alphanum',
18778
									listeners: {
18779
										change: function (val) {
18780
											var custumFunc = rec.SelectFunction;
18781
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18782
												Ext.Ajax.request({
18783
													async: false,
18784
													method: 'POST',
18785
													url: '/UserControl/GetStore',
18786
													params: {
18787
														tableName: 'PCMFUNC',
18788
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18789
													},
18790
													success: function (response) {
18791
														var results = Ext.decode(response.responseText);
18792
														data_ = results.data[0];
18793
														if (data_ != undefined) {
18794
															custumFunc = data_.FunctionCode;
18795
														}
18796
													}
18797
												});
18798
											}
18799
											if (custumFunc) {
18800
												eval(custumFunc)
18801
											}
18802
										}
18803
									}
18804
								}
18805
							});
18806
						} else if (rec.FixedValue != '') {
18807
							cols.push({
18808
								text: rec.HeaderTitle,
18809
								hidden: Hidden_,
18810
								dataIndex: rec.FieldName,
18811
								filter: {
18812
									itemDefaults: {
18813
										emptyText: 'Search for...'
18814
									}
18815
								},
18816
								editor: {
18817
									allowBlank: null_,
18818
									xtype: 'minovafixvalue',
18819
									readOnly: ReadOnly_,
18820
									id: tableName + rec.FieldName,
18821
									nameTable: tableName,
18822
									fieldGrid: rec.FieldName,
18823
									fixedValue: rec.FixedValue,
18824
									valueField: 'code',
18825
									displayField: 'desc',
18826
									value: defaultValue
18827
								},
18828
								renderer: function (value) {
18829
									var val = "";
18830
									var storeData = [];
18831
									var str = rec.FixedValue;
18832
									var hasil = str.split('||');
18833
									hasil.forEach(function (h) {
18834
										store_ = h.split('=')
18835
											storeData.push({
18836
												code: store_[0],
18837
												desc: store_[1]
18838
											});
18839
									});
18840
									var item = storeData.find(x => x.code == value);
18841
									if (item != undefined) {
18842
										val = item.desc;
18843
									}
18844
									return val;
18845
								}
18846
							});
18847
						} else if (rec.FieldDataType == 3) {
18848
							cols.push({
18849
								text: rec.HeaderTitle,
18850
								hidden: Hidden_,
18851
								dataIndex: rec.FieldName,
18852
								filter: {
18853
									itemDefaults: {
18854
										emptyText: 'Search for...'
18855
									}
18856
								},
18857
								editor: {
18858
									allowBlank: null_,
18859
									xtype: 'textfield',
18860
									readOnly: ReadOnly_,
18861
									id: tableName + rec.FieldName,
18862
									nameTable: rec.TableName,
18863
									fieldGrid: rec.FieldName,
18864
									vtype: 'validateDecimal',
18865
									maxLength: rec.Length,
18866
									precision: rec.Prec,
18867
									fieldStyle: 'text-align:right;',
18868
									value: defaultValue,
18869
									listeners: {
18870
										change: function (val) {
18871
											var custumFunc = rec.SelectFunction;
18872
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18873
												Ext.Ajax.request({
18874
													async: false,
18875
													method: 'POST',
18876
													url: '/UserControl/GetStore',
18877
													params: {
18878
														tableName: 'PCMFUNC',
18879
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18880
													},
18881
													success: function (response) {
18882
														var results = Ext.decode(response.responseText);
18883
														data_ = results.data[0];
18884
														if (data_ != undefined) {
18885
															custumFunc = data_.FunctionCode;
18886
														}
18887
													}
18888
												});
18889
											}
18890
											if (custumFunc) {
18891
												eval(custumFunc)
18892
											}
18893
										}
18894
									}
18895
								}
18896
							});
18897
						} else {
18898
							cols.push({
18899
								text: rec.HeaderTitle,
18900
								hidden: Hidden_,
18901
								dataIndex: rec.FieldName,
18902
								filter: {
18903
									itemDefaults: {
18904
										emptyText: 'Search for...'
18905
									}
18906
								},
18907
								editor: {
18908
									allowBlank: null_,
18909
									xtype: 'textfield',
18910
									readOnly: ReadOnly_,
18911
									id: tableName + rec.FieldName,
18912
									value: defaultValue,
18913
									listeners: {
18914
										change: function (val) {
18915
											var custumFunc = rec.SelectFunction;
18916
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18917
												Ext.Ajax.request({
18918
													async: false,
18919
													method: 'POST',
18920
													url: '/UserControl/GetStore',
18921
													params: {
18922
														tableName: 'PCMFUNC',
18923
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18924
													},
18925
													success: function (response) {
18926
														var results = Ext.decode(response.responseText);
18927
														data_ = results.data[0];
18928
														if (data_ != undefined) {
18929
															custumFunc = data_.FunctionCode;
18930
														}
18931
													}
18932
												});
18933
											}
18934
											if (custumFunc) {
18935
												eval(custumFunc)
18936
											}
18937
										}
18938
									}
18939
								}
18940
							});
18941
						}
18942
						break
18943
					}
18944
				} else {
18945
					cols.push({
18946
						text: rec.HeaderTitle,
18947
						hidden: Hidden_,
18948
						dataIndex: rec.FieldName,
18949
						hidden: true,
18950
						editor: {
18951
							allowBlank: true,
18952
							xtype: 'textfield',
18953
							readOnly: ReadOnly_,
18954
							id: tableName + rec.FieldName,
18955
							value: defaultValue
18956
						},
18957
						filter: {
18958
							itemDefaults: {
18959
								emptyText: 'Search for...'
18960
							}
18961
						}
18962
					});
18963
				}
18964
			});
18965
		};
18966
		addData = addData + "})";
18967
		this.cellEditing = new Ext.grid.plugin.CellEditing({
18968
				clicksToEdit: 1
18969
			});
18970
		Ext.applyIf(me, {
18971
			items: [{
18972
					xtype: 'grid',
18973
					autoScroll: true,
18974
					id: gridName,
18975
					name: gridName,
18976
					height: height,
18977
					store: Ext.create('Ext.data.Store', {
18978
						storeId: storeID,
18979
						fields: fieldStore,
18980
						proxy: {
18981
							method: 'POST',
18982
							type: 'ajax',
18983
							url: '',
18984
							reader: {
18985
								type: 'json',
18986
								root: 'data'
18987
							}
18988
						}
18989
					}),
18990
					dockedItems: [{
18991
							xtype: 'toolbar',
18992
							items: [{
18993
									text: 'Add',
18994
									name: 'add' + tableName,
18995
									iconCls: 'fa-plus-circle',
18996
									style: 'font-family: FontAwesome',
18997
									handler: function () {
18998
										var store = Ext.StoreMgr.lookup(storeID);
18999
										var data = eval(addData);
19000
										if (me.transType == "FIN") {
19001
											var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
19002
											var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
19003
											var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
19004
											var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
19005
											var cc = Ext.ComponentQuery.query("[name=CostCenter]")[0].getValue();
19006
											var desc = Ext.ComponentQuery.query("[name=Description]")[0].getValue();
19007
											data["FiscalPeriod"] = fp;
19008
											data["FiscalYear"] = fy;
19009
											data["CompanyID"] = cp;
19010
											data["BusinessUnit"] = bu;
19011
											data["CostCenter"] = cc;
19012
											data["Description"] = desc;
19013
										}
19014
										idx = store.getCount();
19015
										store.insert(idx, data);
19016
									}
19017
								}, {
19018
									text: 'Delete',
19019
									name: 'delete' + tableName,
19020
									iconCls: 'fa-trash-o',
19021
									style: 'font-family: FontAwesome',
19022
									handler: function () {
19023
										var me = this,
19024
										store = Ext.StoreMgr.lookup(storeID);
19025
										var grid = Ext.getCmp(gridName);
19026
										Ext.MessageBox.show({
19027
											title: 'Remove tab',
19028
											msg: "This will remove. Do you want to continue?",
19029
											buttons: Ext.MessageBox.YESNO,
19030
											fn: function (choice) {
19031
												//console.log(choice);
19032
												if (choice === 'yes') {
19033
													var selection = grid.getView().getSelectionModel().getSelection()[0];
19034
													if (selection) {
19035
														store.remove(selection);
19036
													}
19037
												}
19038
											}
19039
										});
19040
									}
19041
								}, {
19042
									text: 'Load',
19043
									hidden: hideLoad,
19044
									name: 'load' + tableName,
19045
									iconCls: 'icon-arrow-down',
19046
									style: 'font-family: FontAwesome',
19047
									handler: function () {
19048
										var getPnl = Ext.ComponentQuery.query('[name=panelTabPTRSALESITEMS]')[0];
19049
										var getTbl = getPnl.query('[name=gridCELLGRIDPTRSALESITEMS]')[0];
19050
										var recC = getTbl.getStore().data.items;
19051
										var obj = [];
19052
										for (var i = 0; i < recC.length; i++) {
19053
											var temp = [];
19054
											temp.push(recC[i]);
19055
											Ext.each(temp, function (rec) {
19056
												var x = Ext.decode(Ext.encode(rec.data));
19057
												obj.push(x);
19058
											});
19059
										}
19060
										store = Ext.StoreMgr.lookup(storeID);
19061
										var afterCheck = store.getNewRecords();
19062
										if (afterCheck.length != '0') {
19063
											store.remove(afterCheck);
19064
										}
19065
										idx = store.getCount();										
19066
										var x = null;
19067
										var y = [];
19068
										var _data = [];
19069
										Ext.each(obj , function (x) {
19070
											Ext.Ajax.request({
19071
												async: false,
19072
												method: 'POST',
19073
												url: '/UserControl/GetStore',
19074
												params: {
19075
													tableName: 'PMDSRV0001',
19076
													param: 'ServiceType[=]' + x.Material
19077
												},
19078
												success: function (response) {
19079
													var results = Ext.decode(response.responseText);
19080
													x = results.data;
19081
												}
19082
											});
19083
											if (x.length != 0){
19084
												y.push(x);
19085
											}	
19086
										});
19087
										Ext.each(y, function (dum) {
19088
											Ext.each(dum, function (yuk) {
19089
												_data.push(yuk);
19090
											});
19091
										});
19092
										var _a = null;
19093
										var _b = [];
19094
										var col1 = [];										
19095
										Ext.each(_data, function (rec) {
19096
											Ext.Ajax.request({
19097
												async: false,
19098
												method: 'POST',
19099
												url: '/UserControl/GetStore',
19100
												params: {
19101
													tableName: tableRefName,
19102
													param: 'ServiceID[=]' + rec.ServiceID
19103
												},
19104
												success: function (response) {
19105
													var results = Ext.decode(response.responseText);
19106
													_a = results.data;	
19107

    
19108
													var i;
19109
													for (i = 0; i < _a.length; i++) {
19110
													
19111
													Object.assign(_a[i], {DocItemID: "",DocNo: ""});
19112
													}													
19113
												}
19114
											});
19115
											if (_a.length != 0){
19116
										_b.push(_a);
19117
										}	
19118
										});
19119
										Ext.each(_b, function (mamam) {
19120
											Ext.each(mamam, function (kuy) {
19121
											col1.push(kuy);
19122
										});
19123
										});
19124
										store.insert(idx, col1);
19125
									}
19126
								}, {
19127
									xtype: 'filefield',
19128
									buttonOnly: true,
19129
									buttonConfig: {
19130
										width: 160,
19131
										text: 'Upload',
19132
										ui: 'default-toolbar',
19133
										iconCls: 'icon-arrow-up',
19134
										style: 'font-family: FontAwesome',
19135
										hidden: hideUploadDownload,
19136
										name: 'upload' + tableName,
19137
										html: "<input id='inputFile' type='file' name='uploaded'/>",
19138
									},
19139
									listeners: {
19140
										change: function (f, value) {
19141
											var newValue = '';
19142
											var afterDot = '';
19143
											var files = event.target.files;
19144
											var fileName = files[0].name;
19145
											var fileType = fileName.substr(fileName.indexOf('.'));
19146
											if (!files || files.length == 0) {
19147
												MinovaMessageError("File Error", "FILOFILE", "");
19148
											} else {
19149
												if (fileType == '.xls' || fileType == '.xlsx') {
19150
													var reader = new FileReader();
19151

    
19152
													//For Browsers other than IE.
19153
													if (reader.readAsBinaryString) {
19154
														reader.onload = function (e) {
19155
															var data = e.target.result;
19156
															//Read the Excel File data.
19157
															var workbook = XLSX.read(data, {
19158
																	type: 'binary'
19159
																});
19160
															//Fetch the name of First Sheet.
19161
															var firstSheet = workbook.SheetNames[0];
19162

    
19163
															//Read all rows from First Sheet into an JSON array.
19164
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
19165
															var store = Ext.StoreMgr.lookup(storeID);
19166
															var data = eval(excelRows);
19167
															var dataLength = data.length;
19168
															idx = store.getCount();
19169
															var seq = idx + 1;
19170
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
19171
															for (var i = 0; i < dataLength; i++) {
19172
																data[i].DocNo = dn;
19173
																data[i].DocItemID = seq;
19174
																if (me.transType == "MTR" || me.transType == "PUR") {
19175
																	data[i].ARAPID = "";
19176
																	data[i].DocItemRef = "";
19177
																}
19178
																if (me.transType == "MTR") {
19179
																	data[i].Storage = "";
19180
																}
19181
																seq = seq + 1;
19182
															}
19183

    
19184
															var fields = store.model.getFields();
19185
															var gridFields = []
19186
															for (var i = 0; i < fields.length; i++) {
19187
																gridFields.push(fields[i].name);
19188
															}
19189

    
19190
															var index = [];
19191
															// build the index
19192
															for (var x in excelRows[0]) {
19193
																index.push(x);
19194
															}
19195
															var excelFields = []
19196
															for (var i = 0; i < index.length; i++) {
19197
																excelFields.push(index[i]);
19198
															}
19199

    
19200
															var template = [];
19201
															for (var i = 0; i < excelFields.length; i++) {
19202
																for (var j = 0; j < gridFields.length; j++) {
19203
																	if (excelFields[i] === gridFields[j]) {
19204
																		template.push(excelFields[i]);
19205
																	}
19206
																}
19207
															}
19208
															if (excelFields.length === template.length) {
19209
																store.insert(idx, data);
19210
															} else {
19211
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
19212
															}
19213
														};
19214
														reader.readAsBinaryString(files[0]);
19215

    
19216
													} else {
19217
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
19218
													}
19219
												} else {
19220
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
19221
												}
19222
											}
19223
										}
19224
									}
19225
								}, {
19226
									text: 'Download',
19227
									hidden: hideUploadDownload,
19228
									name: 'download' + tableName,
19229
									iconCls: 'icon-arrow-down',
19230
									style: 'font-family: FontAwesome',
19231
									handler: function (b, e) {
19232
										b.up('grid').downloadExcelXml();
19233
									}
19234
								}
19235
							]
19236
						}
19237
					],
19238
					columns: cols,
19239
					selModel: {
19240
						type: 'cellmodel'
19241
					},
19242
					plugins: [this.cellEditing],
19243
					//For Auto Size Coloum Mode - Nana
19244
					viewConfig: {
19245
						emptyText: 'No Data Display',
19246
						deferEmptyText: false,
19247
						listeners: {
19248
							refresh: function (dataview) {
19249
								Ext.each(dataview.panel.columns, function (column) {
19250
									if (column.autoSizeColumn == false)
19251
										column.autoSizeColumn = true;
19252
									column.autoSize();
19253
								})
19254
							}
19255
						}
19256
					},
19257
				}
19258
			]
19259
		});
19260
		me.callParent(arguments);
19261
	}
19262
});
19263
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid Sum For ERP ) Malaka*/
19264
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEditSum', {
19265
	extend: 'Ext.form.Panel',
19266
	alias: 'widget.docgridcelleditsum',
19267
	requires: [
19268
		'Ext.grid.plugin.CellEditing',
19269
		'Ext.grid.Panel',
19270
		'Ext.grid.RowNumberer'
19271
	],
19272
	autoScroll: true,
19273
	anchor: '100%',
19274
	tableName: undefined,
19275
	docType: undefined,
19276
	transType: undefined,
19277
	docNo: undefined,
19278
	hideButton: undefined,
19279
	multiSelect: undefined,
19280
	initComponent: function () {
19281
		var me = this;
19282
		var isLookup = me.isLookup;
19283
		var hide_ = false;
19284
		var hideUploadDownload = false;
19285
		var widthLock = 250;
19286
		var checkSelection = '';
19287
		
19288
		Ext.Ajax.request({
19289
			async: false,
19290
			method: 'POST',
19291
			url: '/UserControl/GetStore',
19292
			params: {
19293
				tableName: "PCMBSTRANSLIST",
19294
				param: 'TableName[=]' + me.tableName
19295
			},
19296
			success: function (response) {
19297
				var results = Ext.decode(response.responseText);
19298
				if (results.data[0].UploadDownloadEnable == '0') {
19299
					hideUploadDownload = true;
19300
				} else {
19301
					hideUploadDownload = false;
19302
				}
19303
			}
19304
		});
19305

    
19306
		if (me.hideButton == true) {
19307
			hide_ = true;
19308
		}
19309
		if (me.multiSelect) {
19310
			locking = false;
19311
			checkSelection = 'checkboxmodel';
19312
			widthLock = 40;
19313
		}
19314
		var tableName = me.tableName;
19315
		var cols = [];
19316
		var fieldStore = [];
19317
		var _url = 'GetAllField';
19318
		var hasil = null;
19319
		var height = me.height;
19320
		var storeID = 'store' + me.tableName;
19321
		var gridName = 'grid' + me.name;
19322
		if (me.storeName) {
19323
			storeID = me.storeName;
19324
		}
19325
		var LangID = MinovaUtil.GetLangID();
19326
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
19327
		Ext.Ajax.request({
19328
			async: false,
19329
			method: 'POST',
19330
			url: '/UserControl/GetStore',
19331
			params: {
19332
				tableName: 'PDSDOCFIELD',
19333
				param: parameter
19334
			},
19335
			success: function (response) {
19336
				var results = Ext.decode(response.responseText);
19337
				hasil = results.data;
19338
			}
19339
		});
19340
		cols.push({
19341
			xtype: 'rownumberer'
19342
		});
19343
		var addData = '({';
19344
		if (hasil.length > 0) {
19345
			Ext.each(hasil, function (rec) {
19346
				fieldStore.push(rec.FieldName);
19347
				var defaultValue = rec.DefaultValue;
19348
				if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
19349
					Ext.Ajax.request({
19350
						async: false,
19351
						method: 'POST',
19352
						url: '/UserControl/GetStore',
19353
						params: {
19354
							tableName: 'PCMFUNC',
19355
							param: 'FuncName[equal]' + rec.DefaultValue
19356
						},
19357
						success: function (response) {
19358
							var results = Ext.decode(response.responseText);
19359
							data_ = results.data;
19360
							if (data_.length > 0) {
19361
								defaultValue = eval(data_[0].FunctionCode);
19362
							}
19363
						}
19364
					});
19365
				}
19366
				addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
19367
				var null_ = null;
19368
				var ReadOnly_ = false;
19369
				if (rec.IsPrimaryKey == true) {
19370
					null_ = false;
19371
				}
19372
				if (rec.IsRequired == true) {
19373
					null_ = false;
19374
				} else {
19375
					null_ = true;
19376
				}
19377
				var Hidden_ = false;
19378
				if (rec.ReadOnly == '1') {
19379
					ReadOnly_ = true;
19380
				}
19381
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
19382
					Hidden_ = true;
19383
					null_ = true;
19384
				}
19385
				var isSum = rec.IsSummary;
19386
				if (rec.GridView == 1) {
19387
					switch (rec.FormatRef) {
19388
					case "date":
19389
						cols.push({
19390
							xtype: 'minovadatecolumn',
19391
							hidden: Hidden_,
19392
							text: rec.HeaderTitle,
19393
							dataIndex: rec.FieldName,
19394
							filter: {
19395
								itemDefaults: {
19396
									emptyText: 'Search for...'
19397
								}
19398
							},
19399
							isSummary: isSum,
19400
							editor: {
19401
								allowBlank: null_,
19402
								xtype: 'datefield',
19403
								hideMode: 'visibility',
19404
								readOnly: ReadOnly_,
19405
								id: tableName + rec.FieldName,
19406
								value: defaultValue
19407
							}
19408
						});
19409
						break
19410
					case "amount":
19411
						cols.push({
19412
							xtype: 'numbercolumn',
19413
							text: rec.HeaderTitle,
19414
							align: 'right',
19415
							dataIndex: rec.FieldName,
19416
							isSummary: isSum,
19417
							hidden: Hidden_,
19418
							filter: {
19419
								itemDefaults: {
19420
									emptyText: 'Search for...'
19421
								}
19422
							},
19423
							autoSizeColumn: false,
19424
							width: 140,
19425
							editor: {
19426
								allowBlank: null_,
19427
								xtype: 'textfield',
19428
								readOnly: ReadOnly_,
19429
								id: tableName + rec.FieldName,
19430
								nameTable: rec.TableName,
19431
								fieldGrid: rec.FieldName,
19432
								fieldStyle: 'text-align:right;',
19433
								vtype: 'validateMinovaNumber',
19434
								value: '0',
19435
								listeners: {
19436
									change: function (val, recs) {
19437
										var fvalue = val.getValue();
19438
										var custumFunc = rec.SelectFunction;
19439
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19440
											Ext.Ajax.request({
19441
												async: false,
19442
												method: 'POST',
19443
												url: '/UserControl/GetStore',
19444
												params: {
19445
													tableName: 'PCMFUNC',
19446
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19447
												},
19448
												success: function (response) {
19449
													var results = Ext.decode(response.responseText);
19450
													var dt = results.data[0];
19451
													if (dt != undefined) {
19452
														custumFunc = dt.FunctionCode;
19453
													}
19454
												}
19455
											});
19456
										}
19457
										if (custumFunc) {
19458
											eval(custumFunc)
19459
										}
19460
									}
19461
								}
19462
							}
19463
						});
19464
						break
19465
					default:
19466
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
19467
							cols.push({
19468
								text: rec.HeaderTitle,
19469
								dataIndex: rec.FieldName,
19470
								width: 100,
19471
								isSummary: isSum,
19472
								filter: {
19473
									type: 'string',
19474
									itemDefaults: {
19475
										emptyText: 'Search for...'
19476
									}
19477
								}
19478
							});
19479
						} else if (rec.SearchType == '0') {
19480
							var valueField = null;
19481
							var displayValue = null;
19482
							var TableRef = undefined;
19483
							if (rec.TableRef != '') {
19484
								TableRef = rec.TableRef;
19485
								Ext.Ajax.request({
19486
									async: false,
19487
									method: 'POST',
19488
									url: '/UserControl/GetStore',
19489
									params: {
19490
										tableName: 'SDATATABLEFIELD',
19491
										param: 'TableName[equal]' + rec.TableRef
19492
									},
19493
									success: function (response) {
19494
										var results = Ext.decode(response.responseText);
19495
										data_ = results.data;
19496
										if (data_ != undefined) {
19497
											valueField_ = $.grep(data_, function (r) {
19498
													return r.ValueField == '1'
19499
												});
19500
											valueField = valueField_[0].FieldName
19501
												displayValue_ = $.grep(data_, function (r) {
19502
													return r.DisplayValue == '1'
19503
												});
19504
											displayValue = displayValue_[0].FieldName
19505
										}
19506
									}
19507
								});
19508
							}
19509
							Ext.create('Ext.data.Store', {
19510
								storeId: 'store_' + me.tableName + rec.FieldName,
19511
								autoLoad: true,
19512
								proxy: {
19513
									method: 'POST',
19514
									type: 'ajax',
19515
									url: '/UserControl/GetStoreAuth',
19516
									extraParams: {
19517
										tableName: TableRef,
19518
										param: rec.ParamCombo,
19519
										menuId: MinovaUtil.GetMenuID()
19520
									},
19521
									reader: {
19522
										type: 'json',
19523
										root: 'data',
19524
										totalProperty: 'data[0].TotalCount'
19525
									}
19526
								}
19527
							});
19528
							cols.push({
19529
								xtype: 'minovacombocolumn',
19530
								hidden: Hidden_,
19531
								text: rec.HeaderTitle,
19532
								dataIndex: rec.FieldName,
19533
								valueField: valueField,
19534
								displayField: displayValue,
19535
								store: 'store_' + me.tableName + rec.FieldName,
19536
								isSummary: isSum,
19537
								autoSizeColumn: true,
19538
								width: 200,
19539
								minWidth: 150,
19540
								editor: {
19541
									allowBlank: null_,
19542
									xtype: 'minovacombobox',
19543
									readOnly: ReadOnly_,
19544
									id: tableName + rec.FieldName,
19545
									valueField: valueField,
19546
									displayField: displayValue,
19547
									store: 'store_' + me.tableName + rec.FieldName,
19548
									forceSelection: false,
19549
									lazyRender: true,
19550
									listeners: {
19551
										change: function (val) {
19552
											var fvalue = val.getValue();
19553
											var custumFunc = rec.SelectFunction;
19554
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19555
												Ext.Ajax.request({
19556
													async: false,
19557
													method: 'POST',
19558
													url: '/UserControl/GetStore',
19559
													params: {
19560
														tableName: 'PCMFUNC',
19561
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19562
													},
19563
													success: function (response) {
19564
														var results = Ext.decode(response.responseText);
19565
														var dt = results.data[0];
19566
														if (dt != undefined) {
19567
															custumFunc = dt.FunctionCode;
19568
														}
19569
													}
19570
												});
19571
											}
19572
											if (custumFunc) {
19573
												eval(custumFunc)
19574
											}
19575
										}
19576
									}
19577
								},
19578
								filter: {
19579
									type: 'list',
19580
									itemDefaults: {
19581
										emptyText: 'Search for...'
19582
									}
19583
								}
19584
							});
19585
						} else if (rec.SearchType == '5') {
19586
							var valueField = null;
19587
							var displayValue = null;
19588
							var AdditionaldisplayValue = null;
19589
							var TableRef = undefined;
19590
							if (rec.TableRef != '') {
19591
								TableRef = rec.TableRef;
19592
								Ext.Ajax.request({
19593
									async: false,
19594
									method: 'POST',
19595
									url: '/UserControl/GetStore',
19596
									params: {
19597
										tableName: 'SDATATABLEFIELD',
19598
										param: 'TableName[equal]' + rec.TableRef
19599
									},
19600
									success: function (response) {
19601
										var results = Ext.decode(response.responseText);
19602
										data_ = results.data;
19603
										if (data_ != undefined) {
19604
											valueField_ = $.grep(data_, function (r) {
19605
													return r.ValueField == '1'
19606
												});
19607
											if (valueField_.length > 0) {
19608
												valueField = valueField_[0].FieldName
19609
											}
19610

    
19611
											displayValue_ = $.grep(data_, function (r) {
19612
													return r.DisplayValue == '1' || r.DisplayValue == '2'
19613
												});
19614
											if (displayValue_.length > 0) {
19615
												displayValue = displayValue_[0].FieldName;
19616
											}
19617
											if (displayValue_.length >= 2) {
19618
												AdditionaldisplayValue = displayValue_[1].FieldName
19619
											}
19620
										}
19621
									}
19622
								});
19623
							}
19624
							Ext.create('Ext.data.Store', {
19625
								storeId: 'store_' + me.tableName + rec.FieldName,
19626
								autoLoad: true,
19627
								proxy: {
19628
									method: 'POST',
19629
									type: 'ajax',
19630
									url: '/UserControl/GetStoreAuth',
19631
									extraParams: {
19632
										tableName: TableRef,
19633
										param: rec.ParamCombo,
19634
										menuId: MinovaUtil.GetMenuID()
19635
									},
19636
									reader: {
19637
										type: 'json',
19638
										root: 'data',
19639
										totalProperty: 'data[0].TotalCount'
19640
									}
19641
								}
19642
							});
19643
							cols.push({
19644
								xtype: 'minovacombocolumn',
19645
								hidden: Hidden_,
19646
								text: rec.HeaderTitle,
19647
								dataIndex: rec.FieldName,
19648
								valueField: valueField,
19649
								displayField: displayValue,
19650
								store: 'store_' + me.tableName + rec.FieldName,
19651
								tpl: Ext.create('Ext.XTemplate',
19652
									'<ul class="x-list-plain"><tpl for=".">',
19653
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19654
									'</tpl></ul>'),
19655
								displayTpl: Ext.create('Ext.XTemplate',
19656
									'<tpl for=".">',
19657
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19658
									'</tpl>'),
19659
								editor: {
19660
									allowBlank: null_,
19661
									xtype: 'combobox',
19662
									readOnly: ReadOnly_,
19663
									id: rec.TableName + rec.FieldName,
19664
									nameTable: rec.TableName,
19665
									fieldGrid: rec.FieldName,
19666
									valueField: valueField,
19667
									displayField: displayValue,
19668
									store: 'store_' + me.tableName + rec.FieldName,
19669
									value: rec.DefaultValue,
19670
									tpl: Ext.create('Ext.XTemplate',
19671
										'<ul class="x-list-plain"><tpl for=".">',
19672
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19673
										'</tpl></ul>'),
19674
									displayTpl: Ext.create('Ext.XTemplate',
19675
										'<tpl for=".">',
19676
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19677
										'</tpl>')
19678
								},
19679
								renderer: function (value) {
19680
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
19681
									console.log(store);
19682
									var index = store.find(valueField, value);
19683
									var val = "";
19684
									if (index != -1) {
19685
										var rc = store.getAt(index);
19686
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
19687
									} else {
19688
										val = value;
19689
									}
19690
									return val;
19691
								},
19692
								filter: {
19693
									type: 'list',
19694
									itemDefaults: {
19695
										emptyText: 'Search for...'
19696
									}
19697
								},
19698
								tpl: Ext.create('Ext.XTemplate',
19699
									'<ul class="x-list-plain"><tpl for=".">',
19700
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19701
									'</tpl></ul>'),
19702
								displayTpl: Ext.create('Ext.XTemplate',
19703
									'<tpl for=".">',
19704
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19705
									'</tpl>')
19706
							});
19707
						} else if (rec.SearchType == '2') {
19708
							var triger = (rec.TriggerCombo).split('$');
19709
							var targetField_ = triger[0];
19710
							var fieldValue_ = triger[1];
19711
							cols.push({
19712
								text: rec.HeaderTitle,
19713
								hidden: Hidden_,
19714
								dataIndex: rec.FieldName,
19715
								isSummary: isSum,
19716
								filter: {
19717
									itemDefaults: {
19718
										emptyText: 'Search for...'
19719
									}
19720
								},
19721
								autoSizeColumn: true,
19722
								width: 200,
19723
								editor: {
19724
									allowBlank: null_,
19725
									xtype: 'minovalookupgrid',
19726
									readOnly: ReadOnly_,
19727
									isGrid: true,
19728
									fieldTarget: targetField_,
19729
									fieldValue: fieldValue_,
19730
									isGrid: true,
19731
									id: tableName + rec.FieldName,
19732
									tableName: rec.TableRef,
19733
									triggerCls: 'x-form-search-trigger',
19734
									vtype: 'alphanum',
19735
									listeners: {
19736
										change: function (val) {
19737
											var custumFunc = rec.SelectFunction;
19738
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19739
												Ext.Ajax.request({
19740
													async: false,
19741
													method: 'POST',
19742
													url: '/UserControl/GetStore',
19743
													params: {
19744
														tableName: 'PCMFUNC',
19745
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19746
													},
19747
													success: function (response) {
19748
														var results = Ext.decode(response.responseText);
19749
														var dt = results.data[0];
19750
														if (dt != undefined) {
19751
															custumFunc = dt.FunctionCode;
19752
														}
19753
													}
19754
												});
19755
											}
19756
											if (custumFunc) {
19757
												eval(custumFunc)
19758
											}
19759
										}
19760
									}
19761
								}
19762
							});
19763
						} else if (rec.SearchType == '3') {
19764
							cols.push({
19765
								text: rec.HeaderTitle,
19766
								hidden: Hidden_,
19767
								dataIndex: rec.FieldName,
19768
								isSummary: isSum,
19769
								filter: {
19770
									itemDefaults: {
19771
										emptyText: 'Search for...'
19772
									}
19773
								},
19774
								autoSizeColumn: true,
19775
								width: 200,
19776
								editor: {
19777
									allowBlank: null_,
19778
									xtype: 'MinovaLookupTree',
19779
									readOnly: ReadOnly_,
19780
									id: tableName + rec.FieldName,
19781
									tableName: rec.TableRef,
19782
									triggerCls: 'x-form-search-trigger',
19783
									vtype: 'alphanum',
19784
									treeSructure: rec.SearchFunction,
19785
									objClassValue: rec.ParamCombo,
19786
									listeners: {
19787
										change: function (val) {
19788
											var custumFunc = rec.SelectFunction;
19789
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19790
												Ext.Ajax.request({
19791
													async: false,
19792
													method: 'POST',
19793
													url: '/UserControl/GetStore',
19794
													params: {
19795
														tableName: 'PCMFUNC',
19796
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19797
													},
19798
													success: function (response) {
19799
														var results = Ext.decode(response.responseText);
19800
														var dt = results.data[0];
19801
														if (dt != undefined) {
19802
															custumFunc = dt.FunctionCode;
19803
														}
19804
													}
19805
												});
19806
											}
19807
											if (custumFunc) {
19808
												eval(custumFunc)
19809
											}
19810
										}
19811
									}
19812
								}
19813
							});
19814
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
19815
							var triger = (rec.TriggerCombo).split('&');
19816
							var targetField_ = triger[0];
19817
							var fieldValue_ = triger[0];
19818
							cols.push({
19819
								text: rec.HeaderTitle,
19820
								hidden: Hidden_,
19821
								dataIndex: rec.FieldName,
19822
								isSummary: isSum,
19823
								filter: {
19824
									itemDefaults: {
19825
										emptyText: 'Search for...'
19826
									}
19827
								},
19828
								autoSizeColumn: true,
19829
								width: 200,
19830
								editor: {
19831
									allowBlank: null_,
19832
									xtype: 'lookupemployee',
19833
									readOnly: ReadOnly_,
19834
									isGrid: true,
19835
									fieldTarget: targetField_,
19836
									fieldValue: fieldValue_,
19837
									isGrid: true,
19838
									id: tableName + rec.FieldName,
19839
									tableName: rec.TableRef,
19840
									triggerCls: 'x-form-search-trigger',
19841
									vtype: 'alphanum',
19842
									listeners: {
19843
										change: function (val) {
19844
											var custumFunc = rec.SelectFunction;
19845
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19846
												Ext.Ajax.request({
19847
													async: false,
19848
													method: 'POST',
19849
													url: '/UserControl/GetStore',
19850
													params: {
19851
														tableName: 'PCMFUNC',
19852
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19853
													},
19854
													success: function (response) {
19855
														var results = Ext.decode(response.responseText);
19856
														var dt = results.data[0];
19857
														if (dt != undefined) {
19858
															custumFunc = dt.FunctionCode;
19859
														}
19860
													}
19861
												});
19862
											}
19863
											if (custumFunc) {
19864
												eval(custumFunc)
19865
											}
19866
										}
19867
									}
19868
								}
19869
							});
19870
						} else if (rec.SearchType == '4' && isLookup != true) {
19871
							cols.push({
19872
								text: rec.HeaderTitle,
19873
								hidden: Hidden_,
19874
								dataIndex: rec.FieldName,
19875
								isSummary: isSum,
19876
								filter: {
19877
									itemDefaults: {
19878
										emptyText: 'Search for...'
19879
									}
19880
								},
19881
								autoSizeColumn: true,
19882
								width: 200,
19883
								editor: {
19884
									allowBlank: null_,
19885
									xtype: 'lookupemployee',
19886
									readOnly: ReadOnly_,
19887
									isGrid: true,
19888
									fieldTarget: targetField_,
19889
									fieldValue: fieldValue_,
19890
									isGrid: true,
19891
									id: tableName + rec.FieldName,
19892
									tableName: rec.TableRef,
19893
									triggerCls: 'x-form-search-trigger',
19894
									vtype: 'alphanum',
19895
									listeners: {
19896
										change: function (val) {
19897
											var custumFunc = rec.SelectFunction;
19898
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19899
												Ext.Ajax.request({
19900
													async: false,
19901
													method: 'POST',
19902
													url: '/UserControl/GetStore',
19903
													params: {
19904
														tableName: 'PCMFUNC',
19905
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19906
													},
19907
													success: function (response) {
19908
														var results = Ext.decode(response.responseText);
19909
														var dt = results.data[0];
19910
														if (dt != undefined) {
19911
															custumFunc = dt.FunctionCode;
19912
														}
19913
													}
19914
												});
19915
											}
19916
											if (custumFunc) {
19917
												eval(custumFunc)
19918
											}
19919
										}
19920
									}
19921
								}
19922
							});
19923
						} else if (rec.FixedValue != '') {
19924
							cols.push({
19925
								text: rec.HeaderTitle,
19926
								hidden: Hidden_,
19927
								dataIndex: rec.FieldName,
19928
								isSummary: isSum,
19929
								filter: {
19930
									itemDefaults: {
19931
										emptyText: 'Search for...'
19932
									}
19933
								},
19934
								autoSizeColumn: true,
19935
								width: 200,
19936
								editor: {
19937
									allowBlank: null_,
19938
									xtype: 'minovafixvalue',
19939
									readOnly: ReadOnly_,
19940
									forceSelection: false,
19941
									id: tableName + rec.FieldName,
19942
									nameTable: tableName,
19943
									fieldGrid: rec.FieldName,
19944
									fixedValue: rec.FixedValue,
19945
									valueField: 'code',
19946
									displayField: 'desc',
19947
									value: defaultValue,
19948
									/*Add by Midi 12 Juni 2019*/
19949
									listeners: {
19950
										change: function (val) {
19951
											var custumFunc = rec.SelectFunction;
19952
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19953
												Ext.Ajax.request({
19954
													async: false,
19955
													method: 'POST',
19956
													url: '/UserControl/GetStore',
19957
													params: {
19958
														tableName: 'PCMFUNC',
19959
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19960
													},
19961
													success: function (response) {
19962
														var results = Ext.decode(response.responseText);
19963
														var dt = results.data[0];
19964
														if (dt != undefined) {
19965
															custumFunc = dt.FunctionCode;
19966
														}
19967
													}
19968
												});
19969
											}
19970
											if (custumFunc) {
19971
												eval(custumFunc)
19972
											}
19973
										}
19974
									}
19975
									//
19976
								},
19977
								renderer: function (value) {
19978
									var val = "";
19979
									var storeData = [];
19980
									var str = rec.FixedValue;
19981
									var hasil = str.split('||');
19982
									hasil.forEach(function (h) {
19983
										store_ = h.split('=')
19984
											storeData.push({
19985
												code: store_[0],
19986
												desc: store_[1]
19987
											});
19988
									});
19989
									var item = storeData.find(x => x.code == value);
19990
									if (item != undefined) {
19991
										val = item.desc;
19992
									}
19993
									return val;
19994
								}
19995
							});
19996
						} else if (rec.FieldDataType == 3) {
19997
							cols.push({
19998
								text: rec.HeaderTitle,
19999
								hidden: Hidden_,
20000
								dataIndex: rec.FieldName,
20001
								isSummary: isSum,
20002
								filter: {
20003
									itemDefaults: {
20004
										emptyText: 'Search for...'
20005
									}
20006
								},
20007
								autoSizeColumn: true,
20008
								width: 200,
20009
								editor: {
20010
									allowBlank: null_,
20011
									xtype: 'textfield',
20012
									readOnly: ReadOnly_,
20013
									id: tableName + rec.FieldName,
20014
									nameTable: rec.TableName,
20015
									fieldGrid: rec.FieldName,
20016
									vtype: 'validateDecimal',
20017
									maxLength: rec.Length,
20018
									precision: rec.Prec,
20019
									fieldStyle: 'text-align:right;',
20020
									value: defaultValue,
20021
									listeners: {
20022
										change: function (val) {
20023
											var custumFunc = rec.SelectFunction;
20024
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20025
												Ext.Ajax.request({
20026
													async: false,
20027
													method: 'POST',
20028
													url: '/UserControl/GetStore',
20029
													params: {
20030
														tableName: 'PCMFUNC',
20031
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20032
													},
20033
													success: function (response) {
20034
														var results = Ext.decode(response.responseText);
20035
														var dt = results.data[0];
20036
														if (dt != undefined) {
20037
															custumFunc = dt.FunctionCode;
20038
														}
20039
													}
20040
												});
20041
											}
20042
											if (custumFunc) {
20043
												eval(custumFunc)
20044
											}
20045
										}
20046
									}
20047
								}
20048
							});
20049
						} else {
20050
							cols.push({
20051
								text: rec.HeaderTitle,
20052
								hidden: Hidden_,
20053
								dataIndex: rec.FieldName,
20054
								isSummary: isSum,
20055
								filter: {
20056
									itemDefaults: {
20057
										emptyText: 'Search for...'
20058
									}
20059
								},
20060
								autoSizeColumn: true,
20061
								width: 200,
20062
								editor: {
20063
									allowBlank: null_,
20064
									xtype: 'textfield',
20065
									readOnly: ReadOnly_,
20066
									id: tableName + rec.FieldName,
20067
									value: defaultValue,
20068
									listeners: {
20069
										change: function (val) {
20070
											var custumFunc = rec.SelectFunction;
20071
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20072
												Ext.Ajax.request({
20073
													async: false,
20074
													method: 'POST',
20075
													url: '/UserControl/GetStore',
20076
													params: {
20077
														tableName: 'PCMFUNC',
20078
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20079
													},
20080
													success: function (response) {
20081
														var results = Ext.decode(response.responseText);
20082
														var dt = results.data[0];
20083
														if (dt != undefined) {
20084
															custumFunc = dt.FunctionCode;
20085
														}
20086
													}
20087
												});
20088
											}
20089
											if (custumFunc) {
20090
												eval(custumFunc)
20091
											}
20092
										}
20093
									}
20094
								}
20095
							});
20096
						}
20097
						break
20098
					}
20099
				} else {
20100
					cols.push({
20101
						text: rec.HeaderTitle,
20102
						hidden: Hidden_,
20103
						dataIndex: rec.FieldName,
20104
						isSummary: isSum,
20105
						hidden: true,
20106
						editor: {
20107
							allowBlank: true,
20108
							xtype: 'textfield',
20109
							readOnly: ReadOnly_,
20110
							id: tableName + rec.FieldName,
20111
							value: defaultValue
20112
						},
20113
						filter: {
20114
							itemDefaults: {
20115
								emptyText: 'Search for...'
20116
							}
20117
						}
20118
					});
20119
				}
20120
			});
20121
		};
20122
		addData = addData + "})";
20123
		Ext.applyIf(me, {
20124
			items: [{
20125
					xtype: 'grid',
20126
					autoScroll: true,
20127
					id: gridName,
20128
					name: gridName,
20129
					height: height,
20130
					store: Ext.create('Ext.data.Store', {
20131
						storeId: storeID,
20132
						fields: fieldStore,
20133
						proxy: {
20134
							method: 'POST',
20135
							type: 'ajax',
20136
							url: '',
20137
							reader: {
20138
								type: 'json',
20139
								root: 'data'
20140
							}
20141
						}
20142
					}),
20143
					dockedItems: [{
20144
							xtype: 'toolbar',
20145
							items: [{
20146
									text: 'Add',
20147
									hidden: hide_,
20148
									name: 'add' + tableName,
20149
									iconCls: 'fa-plus-circle',
20150
									style: 'font-family: FontAwesome',
20151
									handler: function () {
20152
										var store = Ext.StoreMgr.lookup(storeID);
20153
										var data = eval(addData);
20154
										if (me.transType == "FIN") {
20155
											var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
20156
											var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
20157
											var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
20158
											var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
20159
											var cc = Ext.ComponentQuery.query("[name=CostCenter]")[0].getValue();
20160
											var desc = Ext.ComponentQuery.query("[name=Description]")[0].getValue();
20161
											data["FiscalPeriod"] = fp;
20162
											data["FiscalYear"] = fy;
20163
											data["CompanyID"] = cp;
20164
											data["BusinessUnit"] = bu;
20165
											data["CostCenter"] = cc;
20166
											data["Description"] = desc;
20167
										}
20168
										/*idx = store.getCount();
20169
										store.insert(idx, data);*/
20170
										idx = store.getCount();
20171
										if(parseFloat(idx) <= 39) //// Tri 20211008
20172
										{
20173
											store.insert(idx, data);
20174
											//alert('nwh');
20175
											
20176
										}
20177
										else if (parseFloat(idx) > 39)
20178
										{
20179
											var tb = Ext.ComponentQuery.query('[name=panelTab]')[0];
20180
											var activeTab = tb.activeTab;
20181
											var tbl = activeTab.tbl;
20182
											var btnadd = Ext.ComponentQuery.query('[name=add' + tbl + ']')[0].setDisabled(true);
20183
											//alert('Can not insert data, because row data has reached the maximum');
20184
											alert('Anda sudah melebihi batas maksimal penginputan');
20185
										}
20186
									}
20187
								}, {
20188
									text: 'Delete',
20189
									hidden: hide_,
20190
									name: 'delete' + tableName,
20191
									iconCls: 'fa-trash-o',
20192
									style: 'font-family: FontAwesome',
20193
									handler: function () {
20194
										var me = this,
20195
										store = Ext.StoreMgr.lookup(storeID)
20196
											var grid = Ext.getCmp(gridName);
20197
										Ext.MessageBox.show({
20198
											title: 'Remove tab',
20199
											msg: "This will remove. Do you want to continue?",
20200
											buttons: Ext.MessageBox.YESNO,
20201
											fn: function (choice) {
20202
												if (choice === 'yes') {
20203
													var selection = grid.getView().getSelectionModel().getSelection()[0];
20204
													if (selection) {
20205
														store.remove(selection);
20206
													}
20207
												}
20208
											}
20209
										});
20210
									}
20211
								}, {
20212
									xtype: 'filefield',
20213
									buttonOnly: true,
20214
									buttonConfig: {
20215
										width: 160,
20216
										text: 'Upload',
20217
										ui: 'default-toolbar',
20218
										iconCls: 'icon-arrow-up',
20219
										style: 'font-family: FontAwesome',
20220
										hidden: hideUploadDownload,
20221
										name: 'upload' + tableName,
20222
										html: "<input id='inputFile' type='file' name='uploaded'/>",
20223
									},
20224
									listeners: {
20225
										change: function (f, value) {
20226
											var store = Ext.StoreMgr.lookup(storeID);
20227
											var newValue = '';
20228
											var afterDot = '';
20229
											var files = event.target.files;
20230
											var fileName = files[0].name;
20231
											var fileType = fileName.substr(fileName.indexOf('.'));
20232
											if (!files || files.length == 0) {
20233
												MinovaMessageError("File Error", "FILOFILE", "");
20234
											} else {
20235
												if (fileType == '.xls' || fileType == '.xlsx') {
20236
													var reader = new FileReader();
20237

    
20238
													//For Browsers other than IE.
20239
													if (reader.readAsBinaryString) {
20240
														reader.onload = function (e) {
20241
															var data = e.target.result;
20242
															//Read the Excel File data.
20243
															var workbook = XLSX.read(data, {
20244
																	type: 'binary'
20245
																});
20246
															//Fetch the name of First Sheet.
20247
															var firstSheet = workbook.SheetNames[0];
20248

    
20249
															//Read all rows from First Sheet into an JSON array.
20250
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
20251
															var data = eval(excelRows);
20252
															var dataLength = data.length;
20253
															idx = store.getCount();
20254
															var seq = idx + 1;
20255
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
20256
															for (var i = 0; i < dataLength; i++) {
20257
																data[i]["DocNo"] = dn;
20258
																data[i]["DocItemID"] = seq;
20259
																if (me.transType == "MTR" || me.transType == "PUR") {
20260
																	data[i].ARAPID = "";
20261
																	data[i].DocItemRef = "";
20262
																}
20263
																if (me.transType == "MTR") {
20264
																	data[i].Storage = "";
20265
																}
20266
																seq = seq + 1;
20267
															}
20268

    
20269
															var fields = store.model.getFields();
20270
															var gridFields = []
20271
															for (var i = 0; i < fields.length; i++) {
20272
																gridFields.push(fields[i].name);
20273
															}
20274

    
20275
															var index = [];
20276
															// build the index
20277
															for (var x in excelRows[0]) {
20278
																index.push(x);
20279
															}
20280
															var excelFields = []
20281
															for (var i = 0; i < index.length; i++) {
20282
																excelFields.push(index[i]);
20283
															}
20284

    
20285
															var template = [];
20286
															for (var i = 0; i < excelFields.length; i++) {
20287
																for (var j = 0; j < gridFields.length; j++) {
20288
																	if (excelFields[i] === gridFields[j]) {
20289
																		template.push(excelFields[i]);
20290
																	}
20291
																}
20292
															}
20293
															if (excelFields.length === template.length) {
20294
																store.insert(idx, data);
20295
															} else {
20296
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
20297
															}
20298
														};
20299
														reader.readAsBinaryString(files[0]);
20300

    
20301
													} else {
20302
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
20303
													}
20304
												} else {
20305
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
20306
												}
20307
											}
20308
										}
20309
									}
20310
								}, {
20311
									text: 'Download',
20312
									hidden: hideUploadDownload,
20313
									name: 'download' + tableName,
20314
									iconCls: 'icon-arrow-down',
20315
									style: 'font-family: FontAwesome',
20316
									handler: function (b, e) {
20317
										b.up('grid').downloadExcelXml();
20318
									}
20319
								}
20320
							]
20321
						}
20322
					],
20323
					columns: cols,
20324
					selType: 'cellmodel',
20325
					plugins: [
20326
						Ext.create('Ext.grid.plugin.CellEditing', {
20327
							clicksToEdit: 1
20328
						})
20329
					],
20330
					//Add For Auto Size Coloum Mode - Nana
20331
					viewConfig: {
20332
						emptyText: 'No Data Display',
20333
						deferEmptyText: false,
20334
						listeners: {
20335
							refresh: function (dataview) {
20336
								Ext.each(dataview.panel.columns, function (column) {
20337
									if (column.autoSizeColumn == true)
20338
									column.autoSize();
20339
								})
20340
							}
20341
						}
20342
					},
20343
					listeners: {
20344
						'edit': function (editor, e, eOpts) {
20345
							/*Update By Midi 13 Juni 2019*/
20346
							var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20347
							var sumForm = sumPanel.getForm();
20348
							var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20349
							var sumFields = sumForm.getFields();
20350
							for (var i = 0; i < sumFields.length; i++) {
20351
								var fField = sumFields.items[i].name;
20352
								var fldValue = 0;
20353
								Ext.each(grid.store.getRange(), function (r) {
20354
									var fValue = r.data[fField];
20355
									fldValue = fldValue + parseFloat(fValue);
20356
								});
20357
								
20358
								fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20359
								sumForm.findField(fField).setValue(fldValue);
20360
							}							
20361
							// var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20362
							// var fField = e.field;
20363
							// if (e.column.isSummary == '1') {
20364
								// var fldValue = 0;
20365
								// Ext.each(grid.store.getRange(), function (r) {
20366
									// var fValue = r.data[fField];
20367
									// fldValue = fldValue + parseFloat(fValue);
20368
								// });
20369
								// var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20370
								// var sumForm = sumPanel.getForm();
20371
								// fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20372
								// sumForm.findField(fField).setValue(fldValue);
20373
							// }
20374
						},
20375
						/*Add By Midi For Store Combobox With Param In Grid */
20376
						'beforeedit': function (editor, e, eOpts) {
20377
							if (e.colIdx == 2 && tableName == 'PTRPURCHITEM') {
20378
								var store = Ext.StoreMgr.lookup('store_' + tableName + 'Material');
20379
								var itemType = e.record.get('ItemType');
20380
								store.clearFilter();
20381
								store.filter('MaterialType', itemType);
20382
							}
20383
							// if (e.colIdx == 1 && tableName == 'PTRFINANCEITEM') {
20384
								// var store = Ext.StoreMgr.lookup('store_' + tableName + 'GLAccountID');
20385
								// var itemType = e.record.get('CompanyID');
20386
								// store.clearFilter();
20387
								// store.filter('CompanyID', itemType);
20388
							// }
20389
						}
20390
					}
20391
				}
20392
			]
20393
		});
20394
		me.callParent(arguments);
20395
	}
20396
});
20397
Ext.define('MinovaUtil.MinovaES.LookupDoc', {
20398
	extend: 'Ext.window.Window',
20399
	alias: 'widget.lookupdocument',
20400
	requires: [],
20401
	height: '87%',
20402
	width: '81%',
20403
	minWidth: '50%',
20404
	maxWidth: '100%',
20405
	bodyPadding: 0,
20406
	formname: undefined,
20407
	name: 'LookupDocumentTrans',
20408
	test: undefined,
20409
	vtype: 'validateMinovaXss',
20410
	targetField: undefined,
20411
	valueField: undefined,
20412
	tableName: undefined,
20413
	LookupFunction: undefined,
20414
	isGrid: undefined,
20415
	listeners: {
20416
		afterrender: function (f) {
20417
			f.setTitle('Lookup - Document');
20418
		}
20419
	},
20420
	initComponent: function () {
20421
		var me = this;
20422
		var targetField_ = me.targetField;
20423
		var valueField_ = me.valueField;
20424
		var form = me.test;
20425
		var tableName_ = me.tableName;
20426
		var isGrid = me.isGrid_;
20427
		var LookupFunction = me.LookupFunction;
20428
		param_ = null;
20429
		var filterParam_ = me.filterParam;
20430
		var fieldLabel_ = 'Document No';
20431
		Ext.applyIf(me, {
20432
			items: [{
20433
					items: [{
20434
							xtype: 'tabpanel',
20435
							items: [{
20436
									xtype: 'form',
20437
									title: 'Quick Search',
20438
									height: '70%',
20439
									items: [{
20440
											xtype: 'form',
20441
											name: 'frmSearch',
20442
											width: '100%',
20443
											height: 'auto',
20444
											dockedItems: [{
20445
													xtype: 'toolbar',
20446
													dock: 'top',
20447
													layout: 'vbox',
20448
													bodyPadding: 10,
20449
													border: 0,
20450
													items: [{
20451
															xtype: 'fieldset',
20452
															layout: 'hbox',
20453
															width: '100%',
20454
															border: 0,
20455
															padding: 0,
20456
															items: [{
20457
																	xtype: 'textfield',
20458
																	name: 'DocSearch',
20459
																	fieldLabel: fieldLabel_,
20460
																	width: 470,
20461
																	labelWidth: 185,
20462
																	enableKeyEvents: true,
20463
																	filterParam: filterParam_,
20464
																	listeners: {
20465
																		specialkey: function (f, e) {
20466
																			if (e.getKey() == e.ENTER) {
20467
																				var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
20468
																				var docNo = doc.getValue();
20469
																				var store = Ext.data.StoreManager.lookup('storeQC');
20470
																				param_ = 'DocNo[like]' + docNo
20471
																					if (this.filterParam) {
20472
																						param_ = param_ + ',' + this.filterParam_
20473
																					}
20474
																					store.proxy.extraParams = {
20475
																					tableName: tableName_,
20476
																					param: param_,
20477
																					menuId: MinovaUtil.GetMenuID()
20478
																				};
20479
																				store.removeAll();
20480
																				store.reload();
20481
																				store.loadPage(1);
20482
																			}
20483
																		}
20484
																	}
20485
																}, {
20486
																	xtype: 'tbspacer',
20487
																	width: 5
20488
																}, {
20489
																	xtype: 'button',
20490
																	name: 'Search',
20491
																	text: 'Search',
20492
																	filterParam: filterParam_,
20493
																	handler: function () {
20494
																		var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
20495
																		var docNo = doc.getValue();
20496
																		var store = Ext.data.StoreManager.lookup('storeQC');
20497
																		param_ = 'DocNo[like]' + docNo
20498
																			if (this.filterParam) {
20499
																				param_ = param_ + ',' + this.filterParam
20500
																			}
20501
																			store.proxy.extraParams = {
20502
																			tableName: tableName_,
20503
																			param: param_,
20504
																			menuId: MinovaUtil.GetMenuID()
20505
																		};
20506
																		store.removeAll();
20507
																		store.reload();
20508
																		store.loadPage(1);
20509
																	}
20510
																}
20511
															]
20512
														}
20513
													]
20514
												}
20515
											]
20516
										}, {
20517
											items: [{
20518
													xtype: "minovagrid1",
20519
													name: "GridDocNo",
20520
													storename: 'storeQC',
20521
													tableName: tableName_,
20522
													param: this.filterParam,
20523
													isLookup: true,
20524
													pagesize: 25,
20525
													height: 398,
20526
													LookupFunction: LookupFunction,
20527
													valueField: valueField_,
20528
													targetField: targetField_,
20529
													isGrid: true,
20530
													listeners: {
20531
														beforeedit: function () {
20532
															return false;
20533
														},
20534
														itemdblclick: function () {
20535
															var grid = Ext.ComponentQuery.query('[name=GridDocNo]')[0];
20536
															var selection = grid.getView().getSelectionModel().getSelection()[0];
20537
															var documentno = selection.data.DocNo;
20538
															LookupFunction = this.LookupFunction;
20539
															eval(LookupFunction);
20540
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
20541
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
20542
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
20543
														}
20544
													},
20545
												}, {
20546
													xtype: 'pagingtoolbar',
20547
													store: 'storeQC',
20548
													dock: 'bottom',
20549
													displayInfo: true
20550
												}
20551
											]
20552
										}
20553
									]
20554
								}, {
20555
									title: 'Advance Search',
20556
									items: [{
20557
											xtype: 'form',
20558
											name: 'formlookup',
20559
											items: [{
20560
													xtype: 'minovaform',
20561
													name: 'frmlookup',
20562
													tableName: tableName_,
20563
													param: filterParam_,
20564
													isLookup: true,
20565
													buttons: [{
20566
															text: 'Search',
20567
															filterParam: filterParam_,
20568
															listeners: {
20569
																click: function () {
20570
																	var store = Ext.data.StoreManager.lookup('storeadvance');
20571
																	var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
20572
																	grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
20573
																	var values_ = form.getValues();
20574
																	var fields_ = form.getFields().items;
20575
																	var param_ = '';
20576
																	for (var i = 0; i < fields_.length; i++) {
20577
																		var val_ = form.getFields().items[i].getValue();
20578
																		var xtype_ = form.getFields().items[i].xtype;
20579
																		var oprator_ = '[like]';
20580
																		if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
20581
																			oprator_ = '[Equal]';
20582
																		}
20583
																		if (xtype_ == 'datefield') {
20584
																			if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
20585
																				oprator_ = '[LessThanEqual]';
20586
																			} else {
20587
																				oprator_ = '[GreaterThanEqual]';
20588
																			}
20589
																		}
20590
																		if (val_ != 'undefined' && val_ != "" && val_ != null) {
20591
																			param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
20592
																		}
20593
																	}
20594
																	if (this.filterParam) {
20595
																		param_ = param_ + ',' + this.filterParam
20596
																	}
20597
																	store.proxy.extraParams = {
20598
																		tableName: grid.tableName,
20599
																		param: param_,
20600
																		menuId: MinovaUtil.GetMenuID()
20601
																	};
20602
																	store.removeAll();
20603
																	store.reload();
20604
																	store.loadPage(1);
20605
																}
20606
															}
20607
														}
20608
													]
20609
												}, {
20610
													xtype: 'minovagrid1',
20611
													name: 'gridlookup',
20612
													minHeight: 312,
20613
													height: 290,
20614
													tableName: tableName_,
20615
													param: this.filterParam,
20616
													isLookup: true,
20617
													storename: 'storeadvance',
20618
													pagesize: 25,
20619
													valueField: valueField_,
20620
													targetField: targetField_,
20621
													hidebutton: 0,
20622
													isGrid: true,
20623
													listeners: {
20624
														beforeedit: function () {
20625
															return false;
20626
														},
20627
														itemdblclick: function () {
20628
															var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
20629
															var selection = grid.getView().getSelectionModel().getSelection()[0];
20630
															var documentno = selection.data.DocNo;
20631
															LookupFunction = this.LookupFunction;
20632
															eval(LookupFunction);
20633
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
20634
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
20635
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
20636
														}
20637
													},
20638
													dockedItems: [{
20639
															xtype: 'pagingtoolbar',
20640
															store: 'storeadvance',
20641
															dock: 'bottom',
20642
															displayInfo: true
20643
														}
20644
													]
20645
												}
20646
											]
20647
										}
20648
									]
20649
								}
20650
							]
20651
						}
20652
					]
20653
				}
20654
			]
20655
		});
20656
		me.callParent(arguments);
20657
	}
20658
});
20659
Ext.define('MinovaUtil.MinovaES.MinovaSummaryDocForm', {
20660
	extend: 'Ext.form.Panel',
20661
	alias: ['widget.summarydocform'],
20662
	formname: this.name,
20663
	tableName: undefined,
20664
	docType: undefined,
20665
	transType: undefined,
20666
	resizable: true,
20667
	border: false,
20668
	autoScroll: true,
20669
	layout: 'column',
20670
	defaults: {
20671
		layout: 'form',
20672
		xtype: 'container',
20673
		defaultType: 'textfield',
20674
		style: 'width: 50%',
20675
	},
20676
	initComponent: function () {
20677
		var me = this;
20678
		var col1 = [];
20679
		var col2 = [];
20680
		var LangID = localStorage.LangId;
20681
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "',IsSummary=1";
20682
		var formname_ = me.name;
20683
		var nameTable_ = me.tableName;
20684
		Ext.Ajax.request({
20685
			async: false,
20686
			method: 'POST',
20687
			url: '/UserControl/GetStore',
20688
			params: {
20689
				tableName: 'PDSDOCFIELD',
20690
				param: parameter
20691
			},
20692
			success: function (response) {
20693
				var results = Ext.decode(response.responseText);
20694
				hasil = results.data;
20695
			}
20696
		});
20697
		if (hasil.length > 0) {
20698
			Ext.each(hasil, function (rec) {
20699
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, false, true, me.tableName, false);
20700
				var descField = undefined;
20701
				if (rec.ColumnNo == 1) {
20702
					col1.push(formfield);
20703
					if (descField) {
20704
						col1.push(descField)
20705
					}
20706
				} else {
20707
					col2.push(formfield);
20708
					if (descField) {
20709
						col2.push(descField)
20710
					}
20711
				}
20712
			});
20713
		}
20714
		Ext.applyIf(me, {
20715
			items: [{
20716
					style: 'width: 50%',
20717
					items: col1
20718
				}, {
20719
					style: 'width: 50%',
20720
					items: col2
20721
				}
20722
			]
20723
		});
20724
		this.callParent();
20725
	}
20726
});
20727
Ext.define('MinovaUtil.MinovaES.LookupDocRef', {
20728
	extend: 'Ext.window.Window',
20729
	alias: 'widget.lookupdocumentref',
20730
	requires: [],
20731
	height: '87%',
20732
	width: '81%',
20733
	minWidth: '50%',
20734
	maxWidth: '100%',
20735
	bodyPadding: 0,
20736
	formname: undefined,
20737
	name: 'LookupDocRef',
20738
	test: undefined,
20739
	vtype: 'validateMinovaXss',
20740
	targetField: undefined,
20741
	valueField: undefined,
20742
	tableName: 'PDSDOCREF',
20743
	transType: undefined,
20744
	docType: undefined,
20745
	LookupFunction: undefined,
20746
	datarecord: undefined,
20747
	isGrid: undefined,
20748
	filterParam: undefined,
20749
	listeners: {
20750
		afterrender: function (f) {
20751
			f.setTitle('Lookup - Document');
20752
		}
20753
	},
20754
	initComponent: function () {
20755
		var me = this;
20756
		var targetField_ = me.targetField;
20757
		var valueField_ = me.valueField;
20758
		var form = me.test;
20759
		var tableName_ = me.tableName;
20760
		var isGrid = me.isGrid_;
20761
		var LookupFunction = me.LookupFunction;
20762
		param_ = null;
20763
		var filterParam_ = me.filterParam;
20764
		var compselect = "";
20765
		var buselect = "";
20766
		Ext.applyIf(me, {
20767
			items: [{
20768
					xtype: 'form',
20769
					name: 'formlookup',
20770
					items: [{
20771
							xtype: 'minovaform',
20772
							name: 'frmlookup',
20773
							tableName: tableName_,
20774
							param: filterParam_,
20775
							isLookup: true,
20776
							buttons: [{
20777
									text: 'Search',
20778
									filterParam: filterParam_,
20779
									listeners: {
20780
										click: function () {
20781
											var store = Ext.data.StoreManager.lookup('storeadvance');
20782
											var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
20783
											grid = Ext.ComponentQuery.query('[name=gridlookupdocref]')[0];
20784
											var values_ = form.getValues();
20785
											var fields_ = form.getFields().items;
20786
											var param_ = '';
20787
											for (var i = 0; i < fields_.length; i++) {
20788
												var val_ = form.getFields().items[i].getValue();
20789
												var xtype_ = form.getFields().items[i].xtype;
20790
												var oprator_ = '[like]';
20791
												if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
20792
													oprator_ = '[Equal]';
20793
												}
20794
												if (xtype_ == 'datefield') {
20795
													if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
20796
														oprator_ = '[LessThanEqual]';
20797
													} else {
20798
														oprator_ = '[GreaterThanEqual]';
20799
													}
20800
												}
20801
												if (val_ != 'undefined' && val_ != "" && val_ != null) {
20802
													param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
20803
												}
20804
											}
20805
											if (filterParam_) {
20806
												param_ = param_ + ',' + filterParam_
20807
											}
20808
											store.proxy.extraParams = {
20809
												tableName: grid.tableName,
20810
												param: param_,
20811
												menuId: MinovaUtil.GetMenuID()
20812
											};
20813
											store.removeAll();
20814
											store.reload();
20815
											store.loadPage(1);
20816
										}
20817
									}
20818
								}
20819
							]
20820
						}, {
20821
							xtype: 'minovagrid1',
20822
							name: 'gridlookupdocref',
20823
							minHeight: 312,
20824
							height: 290,
20825
							tableName: tableName_,
20826
							param: this.filterParam,
20827
							isLookup: true,
20828
							storename: 'storeadvance',
20829
							pagesize: 25,
20830
							valueField: valueField_,
20831
							targetField: targetField_,
20832
							//multiSelect: true,
20833
							hidebutton: 0,
20834
							isGrid: true,
20835
							listeners: {
20836
								beforeedit: function () {
20837
									return false;
20838
								},
20839
								itemdblclick: function () {},
20840
								select: function (t, record, index, eOpts) {
20841
									if (compselect !== "") {
20842
										if (compselect !== record.data.CompanyID) {
20843
											MinovaMessageError("", "FILO06", "");
20844
											return;
20845
										}
20846
									}
20847
									// if (buselect !== "") {
20848
										// if (buselect !== record.data.BusinessUnit) {
20849
											// MinovaMessageError("", "FILO07", "");
20850
											// return;
20851
										// }
20852
									// }
20853
									compselect = record.data.CompanyID;
20854
									buselect = record.data.BusinessUnit;
20855
								}
20856
							},
20857
							// dockedItems: [{
20858
									// xtype: 'pagingtoolbar',
20859
									// store: 'storeadvance',
20860
									// dock: 'bottom',
20861
									// displayInfo: true
20862
								// }, {
20863
									// xtype: 'button',
20864
									// name: 'select',
20865
									// text: 'Select',
20866
									// dock: 'bottom'
20867
								// }
20868
							// ]
20869
						}
20870
					]
20871
				}
20872
			]
20873
		});
20874
		me.callParent(arguments);
20875
	}
20876
});
20877
var Base64 = (function () {
20878
	// Private property
20879
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
20880

    
20881
	// Private method for UTF-8 encoding
20882

    
20883
	function utf8Encode(string) {
20884
		string = string.replace(/\r\n/g, "\n");
20885
		var utftext = "";
20886
		for (var n = 0; n < string.length; n++) {
20887
			var c = string.charCodeAt(n);
20888
			if (c < 128) {
20889
				utftext += String.fromCharCode(c);
20890
			} else if ((c > 127) && (c < 2048)) {
20891
				utftext += String.fromCharCode((c >> 6) | 192);
20892
				utftext += String.fromCharCode((c & 63) | 128);
20893
			} else {
20894
				utftext += String.fromCharCode((c >> 12) | 224);
20895
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
20896
				utftext += String.fromCharCode((c & 63) | 128);
20897
			}
20898
		}
20899
		return utftext;
20900
	}
20901

    
20902
	// Public method for encoding
20903
	return {
20904
		encode: (typeof btoa == 'function') ? function (input) {
20905
			return btoa(utf8Encode(input));
20906
		}
20907
		 : function (input) {
20908
			var output = "";
20909
			var chr1,
20910
			chr2,
20911
			chr3,
20912
			enc1,
20913
			enc2,
20914
			enc3,
20915
			enc4;
20916
			var i = 0;
20917
			input = utf8Encode(input);
20918
			while (i < input.length) {
20919
				chr1 = input.charCodeAt(i++);
20920
				chr2 = input.charCodeAt(i++);
20921
				chr3 = input.charCodeAt(i++);
20922
				enc1 = chr1 >> 2;
20923
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
20924
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
20925
				enc4 = chr3 & 63;
20926
				if (isNaN(chr2)) {
20927
					enc3 = enc4 = 64;
20928
				} else if (isNaN(chr3)) {
20929
					enc4 = 64;
20930
				}
20931
				output = output +
20932
					keyStr.charAt(enc1) + keyStr.charAt(enc2) +
20933
					keyStr.charAt(enc3) + keyStr.charAt(enc4);
20934
			}
20935
			return output;
20936
		}
20937
	};
20938
})();
20939
Ext.define('MyApp.view.override.Grid', {
20940
	override: 'Ext.grid.GridPanel',
20941
	requires: 'Ext.form.action.StandardSubmit',
20942

    
20943
	/*
20944
	Kick off process
20945
	 */
20946

    
20947
	downloadExcelXml: function (includeHidden, name) {
20948

    
20949
		if (!name)
20950
			title = this.name;
20951

    
20952
		var vExportContent = this.getExcelXml(includeHidden, title);
20953

    
20954
		var location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
20955

    
20956
		/*
20957
		dynamically create and anchor tag to force download with suggested filename
20958
		note: download attribute is Google Chrome specific
20959
		 */
20960

    
20961
		if (Ext.isChrome) {
20962
			var gridEl = this.getEl();
20963

    
20964
			var el = Ext.DomHelper.append(gridEl, {
20965
					tag: "a",
20966
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
20967
					href: location
20968
				});
20969

    
20970
			el.click();
20971

    
20972
			Ext.fly(el).destroy();
20973

    
20974
		} else {
20975

    
20976
			var form = this.down('form#uploadForm');
20977
			if (form) {
20978
				form.destroy();
20979
			}
20980
			form = this.add({
20981
					xtype: 'form',
20982
					itemId: 'uploadForm',
20983
					hidden: true,
20984
					standardSubmit: true,
20985
					url: 'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&filename=' + escape(title + ".xls"),
20986
					items: [{
20987
							xtype: 'hiddenfield',
20988
							name: 'data',
20989
							value: vExportContent
20990
						}
20991
					]
20992
				});
20993

    
20994
			form.getForm().submit();
20995

    
20996
		}
20997
	},
20998

    
20999
	/*
21000

    
21001
	Welcome to XML Hell
21002
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
21003
	for more details
21004

    
21005
	 */
21006
	getExcelXml: function (includeHidden, title) {
21007

    
21008
		var theTitle = title || this.title;
21009

    
21010
		var worksheet = this.createWorksheet(includeHidden, theTitle);
21011
		var totalWidth = this.columnManager.columns.length;
21012

    
21013
		return ''.concat(
21014
			'<?xml version="1.0"?>',
21015
			'<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">',
21016
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
21017
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
21018
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
21019
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
21020
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
21021
			'<ProtectStructure>False</ProtectStructure>',
21022
			'<ProtectWindows>False</ProtectWindows>',
21023
			'</ExcelWorkbook>',
21024

    
21025
			'<Styles>',
21026

    
21027
			'<Style ss:ID="Default" ss:Name="Normal">',
21028
			'<Alignment ss:Vertical="Bottom"/>',
21029
			'<Borders/>',
21030
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
21031
			'<Interior/>',
21032
			'<NumberFormat/>',
21033
			'<Protection/>',
21034
			'</Style>',
21035

    
21036
			'<Style ss:ID="title">',
21037
			'<Borders />',
21038
			'<Font ss:Bold="1" ss:Size="18" />',
21039
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
21040
			'<NumberFormat ss:Format="@" />',
21041
			'</Style>',
21042

    
21043
			'<Style ss:ID="headercell">',
21044
			'<Font ss:Bold="1" ss:Size="10" />',
21045
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
21046
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
21047
			'</Style>',
21048

    
21049
			'<Style ss:ID="even">',
21050
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
21051
			'</Style>',
21052

    
21053
			'<Style ss:ID="evendate" ss:Parent="even">',
21054
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21055
			'</Style>',
21056

    
21057
			'<Style ss:ID="evenint" ss:Parent="even">',
21058
			'<Numberformat ss:Format="0" />',
21059
			'</Style>',
21060

    
21061
			'<Style ss:ID="evenfloat" ss:Parent="even">',
21062
			'<Numberformat ss:Format="0.00" />',
21063
			'</Style>',
21064

    
21065
			'<Style ss:ID="odd">',
21066
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
21067
			'</Style>',
21068

    
21069
			'<Style ss:ID="groupSeparator">',
21070
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
21071
			'</Style>',
21072

    
21073
			'<Style ss:ID="odddate" ss:Parent="odd">',
21074
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21075
			'</Style>',
21076

    
21077
			'<Style ss:ID="oddint" ss:Parent="odd">',
21078
			'<NumberFormat Format="0" />',
21079
			'</Style>',
21080

    
21081
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
21082
			'<NumberFormat Format="0.00" />',
21083
			'</Style>',
21084

    
21085
			'</Styles>',
21086
			worksheet.xml,
21087
			'</Workbook>');
21088
	},
21089

    
21090
	/*
21091

    
21092
	Support function to return field info from store based on fieldname
21093

    
21094
	 */
21095

    
21096
	getModelField: function (fieldName) {
21097

    
21098
		var fields = this.store.model.getFields();
21099
		for (var i = 0; i < fields.length; i++) {
21100
			if (fields[i].name === fieldName) {
21101
				return fields[i];
21102
			}
21103
		}
21104
	},
21105

    
21106
	/*
21107

    
21108
	Convert store into Excel Worksheet
21109

    
21110
	 */
21111
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
21112

    
21113
		var cm = this.columnManager.columns;
21114
		var colCount = cm.length;
21115
		var rowTpl = '<Row ss:AutoFitHeight="0"><Cell ss:StyleID="groupSeparator" ss:MergeAcross="{0}"><Data ss:Type="String"><html:b>{1}</html:b></Data></Cell></Row>';
21116
		var visibleCols = 0;
21117

    
21118
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
21119

    
21120
		for (var j = 0; j < colCount; j++) {
21121
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21122
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
21123
				visibleCols++;
21124
			}
21125
		}
21126

    
21127
		// rowXml += "</Row>";
21128

    
21129
		return Ext.String.format(rowTpl, visibleCols - 1, value);
21130
	},
21131

    
21132
	createWorksheet: function (includeHidden, theTitle) {
21133
		// Calculate cell data types and extra class names which affect formatting
21134
		var cellType = [];
21135
		var cellTypeClass = [];
21136
		var cm = this.columnManager.columns;
21137

    
21138
		var totalWidthInPixels = 0;
21139
		var colXml = '';
21140
		var headerXml = '';
21141
		var visibleColumnCountReduction = 0;
21142
		var colCount = cm.length;
21143
		for (var i = 0; i < colCount; i++) {
21144
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
21145
				var w = cm[i].getEl().getWidth();
21146
				totalWidthInPixels += w;
21147

    
21148
				if (cm[i].text === "") {
21149
					cellType.push("None");
21150
					cellTypeClass.push("");
21151
					++visibleColumnCountReduction;
21152
				} else {
21153
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21154
					headerXml += '<Cell ss:StyleID="headercell">' +
21155
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21156
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21157

    
21158
					var fld = this.getModelField(cm[i].dataIndex);
21159

    
21160
					console.log(fld);
21161
					switch (fld.type.type) {
21162
					case "int":
21163
						cellType.push("Number");
21164
						cellTypeClass.push("int");
21165
						break;
21166
					case "float":
21167
						cellType.push("Number");
21168
						cellTypeClass.push("float");
21169
						break;
21170

    
21171
					case "bool":
21172

    
21173
					case "boolean":
21174
						cellType.push("String");
21175
						cellTypeClass.push("");
21176
						break;
21177
					case "date":
21178
						cellType.push("DateTime");
21179
						cellTypeClass.push("date");
21180
						break;
21181
					default:
21182
						cellType.push("String");
21183
						cellTypeClass.push("");
21184
						break;
21185
					}
21186
				}
21187
			}
21188
		}
21189
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21190

    
21191
		var result = {
21192
			height: 9000,
21193
			width: Math.floor(totalWidthInPixels * 30) + 50
21194
		};
21195

    
21196
		// Generate worksheet header details.
21197

    
21198
		// determine number of rows
21199
		var numGridRows = this.store.getCount() + 2;
21200
		if (!Ext.isEmpty(this.store.groupField)) {
21201
			numGridRows = numGridRows + this.store.getGroups().length;
21202
		}
21203

    
21204
		// create header for worksheet
21205
		var t = ''.concat(
21206
				'<Worksheet ss:Name="' + theTitle + '">',
21207

    
21208
				'<Names>',
21209
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
21210
				'</NamedRange></Names>',
21211

    
21212
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
21213
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
21214
				colXml,
21215
				'<Row ss:AutoFitHeight="1">',
21216
				headerXml +
21217
				'</Row>');
21218

    
21219
		// Generate the data rows from the data in the Store
21220
		var groupVal = "";
21221
		var groupField = "";
21222

    
21223
		for (var i = 0, it = this.store.data.items, l = it.length; i < l; i++) {
21224

    
21225
			if (!Ext.isEmpty(groupField)) {
21226
				if (groupVal != this.store.getAt(i).get(groupField)) {
21227
					groupVal = this.store.getAt(i).get(groupField);
21228
					t += this.generateEmptyGroupRow(groupField, groupVal, cellType, includeHidden);
21229
				}
21230
			}
21231
			t += '<Row>';
21232
			var cellClass = (i & 1) ? 'odd' : 'even';
21233
			r = it[i].data;
21234
			var k = 0;
21235
			for (var j = 0; j < colCount; j++) {
21236
				if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21237
					var v = r[cm[j].dataIndex];
21238
					if (cellType[k] !== "None") {
21239
						t += '<Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"><Data ss:Type="' + cellType[k] + '">';
21240
						if (cellType[k] == 'DateTime') {
21241
							t += Ext.Date.format(v, 'Y-m-d');
21242
						} else {
21243
							t += v;
21244
						}
21245
						t += '</Data></Cell>';
21246
					}
21247
					k++;
21248
				}
21249
			}
21250
			t += '</Row>';
21251
		}
21252

    
21253
		result.xml = t.concat(
21254
				'</Table>',
21255
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
21256
				'<PageLayoutZoom>0</PageLayoutZoom>',
21257
				'<Selected/>',
21258
				'<Panes>',
21259
				'<Pane>',
21260
				'<Number>3</Number>',
21261
				'<ActiveRow>2</ActiveRow>',
21262
				'</Pane>',
21263
				'</Panes>',
21264
				'<ProtectObjects>False</ProtectObjects>',
21265
				'<ProtectScenarios>False</ProtectScenarios>',
21266
				'</WorksheetOptions>',
21267
				'</Worksheet>');
21268
		return result;
21269
	}
21270
});
21271

    
21272
/*Add Midi For Grid Mass Posting Filo*/
21273
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
21274
    extend: 'Ext.form.Panel',
21275
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
21276
    requires: [
21277
		'Ext.grid.plugin.CellEditing',
21278
		'Ext.grid.RowNumberer',
21279
		'Ext.grid.Panel',
21280
    ],
21281

    
21282
    //renderTo: 'panel-extjs',
21283
    anchor: '100%',
21284
    tableName: undefined,
21285
    hideButton: undefined,
21286
    multiSelect: undefined,
21287
    initComponent: function () {
21288
        var me = this;
21289
        var isLookup = me.isLookup;
21290
        var hide_ = false;
21291
        var widthLock = 250;
21292
        var checkSelection = '';
21293

    
21294
        if (me.hideButton == true) {
21295
            hide_ = true;
21296
        }
21297
        if (me.multiSelect) {
21298
            locking = false;
21299
            checkSelection = 'checkboxmodel';
21300
            widthLock = 40;
21301
        }
21302
        var tableName = me.tableName;
21303
        var cols = [];
21304
        var fieldStore = [];
21305
        var _url = 'GetAllField';
21306
        var hasil = null;
21307
        var height = me.height;
21308
        var storeID = 'store' + me.tableName;
21309
        var gridName = 'grid' + me.name;
21310
        if (me.storeName) {
21311
            storeID = me.storeName;
21312
        }
21313
        var LangID = MinovaUtil.GetLangID();
21314
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
21315
        Ext.Ajax.request({
21316
            async: false,
21317
            method: 'POST',
21318
            url: '/UserControl/GetStore',
21319
            params: {
21320
                tableName: 'PDSBS0007',
21321
                param: parameter
21322
            },
21323
            success: function (response) {
21324
                var results = Ext.decode(response.responseText);
21325
                hasil = results.data;
21326
            }
21327
        });
21328
        cols.push({
21329
            xtype: 'rownumberer'
21330
        });
21331
        var addData = 'var data={';
21332
        if (hasil.length > 0) {
21333
            Ext.each(hasil, function (rec) {
21334
                fieldStore.push(rec.FieldName);
21335
                if (rec.FieldName != 'Sequence') {
21336
                    addData = addData + rec.FieldName + ":" + "'',";
21337
                }
21338

    
21339
                var null_ = null;
21340
                var ReadOnly_ = false;
21341
                if (rec.IsPrimaryKey == true) {
21342
                    null_ = false;
21343
                }
21344
                if (rec.IsRequired == true) {
21345
                    null_ = false;
21346
                } else {
21347
                    null_ = true;
21348
                }
21349
                if (rec.ReadOnly == '1') {
21350
                    ReadOnly_ = true;
21351
                }
21352
                var Hidden_ = false;
21353
                if (rec.ReadOnly == '1') {
21354
                    ReadOnly_ = true;
21355
                }
21356

    
21357
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
21358
                    Hidden_ = true;
21359
                    null_ = true;
21360
                }
21361

    
21362
                if (rec.GridView == 1) {
21363
                    switch (rec.FormatRef) {
21364
                        case "date":
21365
                            cols.push({
21366
                                xtype: 'minovadatecolumn',
21367
                                hidden: Hidden_,
21368
                                text: rec.HeaderTitle,
21369
                                dataIndex: rec.FieldName,
21370
                                filter: {
21371
                                    itemDefaults: {
21372
                                        emptyText: 'Search for...',
21373

    
21374
                                    }
21375
                                },
21376
                                editor: {
21377
                                    allowBlank: null_,
21378
                                    xtype: 'datefield',
21379
                                    hideMode: 'visibility',
21380
                                    readOnly: ReadOnly_,
21381
                                    id: tableName + rec.FieldName,
21382
                                    fieldGrid: rec.FieldName,
21383
                                    nameTable: rec.TableName,
21384
                                }
21385
                            });
21386
                            break
21387
                        case "amount":
21388
                            cols.push({
21389
                                xtype: 'minovacurrancycolumn',
21390
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
21391
                                text: rec.HeaderTitle,
21392
                                align: 'right',
21393
                                dataIndex: rec.FieldName,
21394
                                hidden: Hidden_,
21395
                                filter: {
21396
                                    itemDefaults: {
21397
                                        emptyText: 'Search for...'
21398
                                    }
21399
                                },
21400
                                editor: {
21401
                                    allowBlank: null_,
21402
                                    xtype: 'minovacurrencyfield',
21403
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
21404
                                    //vtype: 'validateDecimal',
21405
                                    readOnly: ReadOnly_,
21406
                                    id: tableName + rec.FieldName,
21407
                                    nameTable: rec.TableName,
21408
                                    fieldGrid: rec.FieldName,
21409
                                    fieldStyle: 'text-align:right;',
21410
                                    value: '0',
21411

    
21412
                                }
21413
                            });
21414
                            break
21415
                        case "time":
21416
                            var DefaultValue = rec.DefaultValue;
21417
                            if (DefaultValue == '') {
21418
                                defaultValue = '00:00';
21419
                            }
21420
                            cols.push({
21421
                                //xtype: 'minovatimecolumn',
21422
                                xtype: 'timefield',
21423
                                format: 'H:i',
21424
                                submitFormat: 'Hi',
21425
                                text: rec.HeaderTitle,
21426
                                dataIndex: rec.FieldName,
21427
                                hidden: Hidden_,
21428
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
21429
                                filter: {
21430
                                    itemDefaults: {
21431
                                        emptyText: 'Search for...'
21432
                                    }
21433
                                },
21434
                                editor: {
21435
                                    allowBlank: null_,
21436
                                    xtype: 'timefield',
21437
                                    readOnly: ReadOnly_,
21438
                                    id: tableName + rec.FieldName,
21439
                                    format: 'H:i',
21440
                                    submitFormat: 'Hi',
21441
                                    increment: 5,
21442
                                    value: DefaultValue,
21443
                                    anchor: '100%',
21444
                                    listeners: {}
21445
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
21446
                                }
21447
                            });
21448
                            break
21449
                            //case "datetime":
21450
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
21451
                            //        cols.push({
21452
                            //            xtype: 'minovadatetimecolumn',
21453
                            //            text: rec.HeaderTitle,
21454
                            //            dataIndex: rec.FieldName,
21455
                            //            filter: {
21456
                            //                itemDefaults: {
21457
                            //                    emptyText: 'Search for...'
21458
                            //                }
21459
                            //            },
21460
                            //            editor: {
21461
                            //                allowBlank: null_,
21462
                            //                xtype: 'textfield',
21463
                            //            }
21464
                            //        });
21465
                            //    }
21466
                            //    break
21467
                        default:
21468
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
21469
                                cols.push({
21470
                                    text: rec.HeaderTitle,
21471
                                    dataIndex: rec.FieldName,
21472
                                    width: 100,
21473
                                    filter: {
21474
                                        type: 'string',
21475
                                        itemDefaults: {
21476
                                            emptyText: 'Search for...'
21477
                                        }
21478
                                    }
21479
                                });
21480
                            } else if (rec.SearchType == '0') {
21481
                                var valueField = null;
21482
                                var displayValue = null;
21483
                                var TableRef = undefined;
21484
                                if (rec.TableRef != '') {
21485
                                    TableRef = rec.TableRef;
21486

    
21487
                                    Ext.Ajax.request({
21488
                                        async: false,
21489
                                        method: 'POST',
21490
                                        url: '/UserControl/GetStore',
21491
                                        params: {
21492
                                            tableName: 'SDATATABLEFIELD',
21493
                                            param: 'TableName[equal]' + rec.TableRef
21494
                                        },
21495
                                        success: function (response) {
21496
                                            var results = Ext.decode(response.responseText);
21497
                                            data_ = results.data;
21498
                                            if (data_ != undefined) {
21499
                                                valueField_ = $.grep(data_, function (r) {
21500
                                                    return r.ValueField == '1'
21501
                                                });
21502
                                                valueField = valueField_[0].FieldName
21503
                                                displayValue_ = $.grep(data_, function (r) {
21504
                                                    return r.DisplayValue == '1'
21505
                                                });
21506
                                                displayValue = displayValue_[0].FieldName
21507
                                            }
21508
                                        }
21509
                                    });
21510

    
21511
                                    //create Store
21512
                                    Ext.create('Ext.data.Store', {
21513
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21514
                                        autoLoad: true,
21515
                                        proxy: {
21516
                                            method: 'POST',
21517
                                            type: 'ajax',
21518
                                            url: '/UserControl/GetStoreAuth',
21519
                                            extraParams: {
21520
                                                tableName: TableRef,
21521
                                                param: rec.ParamCombo,
21522
                                                menuId: MinovaUtil.GetMenuID()
21523
                                            },
21524
                                            reader: {
21525
                                                type: 'json',
21526
                                                root: 'data',
21527
                                                totalProperty: 'data[0].TotalCount'
21528
                                            }
21529
                                        }
21530
                                    });
21531
                                } else if (rec.FixedValue != '') {
21532
                                    var storeData = [];
21533
                                    var str = rec.FixedValue;
21534
                                    var hasil = str.split('||');
21535
                                    hasil.forEach(function (h) {
21536
                                        store_ = h.split('=')
21537
                                        storeData.push({
21538
                                            code: store_[0],
21539
                                            desc: store_[1],
21540

    
21541
                                        });
21542
                                    });
21543

    
21544
                                    valueField = 'code';
21545
                                    displayValue = 'desc';
21546

    
21547
                                    Ext.create('Ext.data.Store', {
21548
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21549
                                        autoLoad: true,
21550
                                        data: storeData
21551
                                    })
21552
                                }
21553

    
21554
                                cols.push({
21555
                                    xtype: 'minovacombocolumn',
21556
                                    hidden: Hidden_,
21557
                                    text: rec.HeaderTitle,
21558
                                    dataIndex: rec.FieldName,
21559
                                    valueField: valueField,
21560
                                    displayField: displayValue,
21561
                                    store: 'store_' + me.tableName + rec.FieldName,
21562
                                    editor: {
21563
                                        allowBlank: null_,
21564
                                        xtype: 'combobox',
21565
                                        readOnly: ReadOnly_,
21566
                                        id: tableName + rec.FieldName,
21567
                                        nameTable: rec.TableName,
21568
                                        fieldGrid: rec.FieldName,
21569
                                        valueField: valueField,
21570
                                        displayField: displayValue,
21571
                                        vtype: 'validateCombobox',
21572
                                        store: 'store_' + me.tableName + rec.FieldName,
21573
                                    },
21574
                                    filter: {
21575
                                        type: 'list',
21576
                                        itemDefaults: {
21577
                                            emptyText: 'Search for...'
21578
                                        }
21579
                                    }
21580
                                });
21581

    
21582
                            } else if (rec.SearchType == '5') {							
21583
                                var valueField = null;
21584
                                var displayValue = null;
21585
                                var AdditionaldisplayValue = null;
21586
                                var TableRef = undefined;
21587
                                if (rec.TableRef != '') {
21588
                                    TableRef = rec.TableRef;
21589
                                    Ext.Ajax.request({
21590
                                        async: false,
21591
                                        method: 'POST',
21592
                                        url: '/UserControl/GetStore',
21593
                                        params: {
21594
                                            tableName: 'SDATATABLEFIELD',
21595
                                            param: 'TableName[equal]' + rec.TableRef
21596
                                        },
21597
                                        success: function (response) {
21598
                                            var results = Ext.decode(response.responseText);
21599
                                            data_ = results.data;
21600
                                            if (data_ != undefined) {
21601
                                                valueField_ = $.grep(data_, function (r) {
21602
                                                    return r.ValueField == '1'
21603
                                                });
21604
                                                if (valueField_.length > 0) {
21605
                                                    valueField = valueField_[0].FieldName
21606
                                                }
21607

    
21608
                                                displayValue_ = $.grep(data_, function (r) {
21609
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
21610
                                                });
21611
                                                if (displayValue_.length > 0) {
21612
                                                    displayValue = displayValue_[0].FieldName;
21613
                                                }
21614
                                                if (displayValue_.length >= 2) {
21615
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
21616
                                                }
21617
                                            }
21618
                                        }
21619
                                    });
21620
                                }
21621
                                Ext.create('Ext.data.Store', {
21622
                                    storeId: 'store_' + me.tableName + rec.FieldName,
21623
                                    autoLoad: true,
21624
                                    proxy: {
21625
                                        method: 'POST',
21626
                                        type: 'ajax',
21627
                                        url: '/UserControl/GetStoreAuth',
21628
                                        extraParams: {
21629
                                            tableName: TableRef,
21630
                                            param: rec.ParamCombo,
21631
                                            menuId: MinovaUtil.GetMenuID()
21632
                                        },
21633
                                        reader: {
21634
                                            type: 'json',
21635
                                            root: 'data',
21636
                                            totalProperty: 'data[0].TotalCount'
21637
                                        }
21638
                                    }
21639
                                });
21640
                                cols.push({
21641
                                    xtype : 'minovacombocolumn',
21642
                                    hidden: Hidden_,
21643
                                    text: rec.HeaderTitle,
21644
                                    dataIndex: rec.FieldName,
21645
                                    valueField : valueField,
21646
                                    displayField : displayValue,
21647
                                    store : 'store_' + me.tableName + rec.FieldName,
21648
                                    tpl: Ext.create('Ext.XTemplate',
21649
                                            '<ul class="x-list-plain"><tpl for=".">',
21650
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
21651
                                            '</tpl></ul>'),
21652
                                    displayTpl: Ext.create('Ext.XTemplate',
21653
                                        '<tpl for=".">',
21654
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
21655
                                        '</tpl>'),
21656
                                    editor: {
21657
                                        allowBlank: null_,
21658
                                        xtype: 'combobox',
21659
                                        readOnly: ReadOnly_,
21660
                                        id: rec.TableName + rec.FieldName,
21661
                                        nameTable: rec.TableName,
21662
                                        fieldGrid: rec.FieldName,
21663
                                        valueField: valueField,
21664
                                        displayField: displayValue,
21665
                                        store: 'store_' + me.tableName + rec.FieldName,
21666
                                        value: rec.DefaultValue,
21667
                                        tpl: Ext.create('Ext.XTemplate',
21668
                                            '<ul class="x-list-plain"><tpl for=".">',
21669
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
21670
                                            '</tpl></ul>'),
21671
                                        displayTpl: Ext.create('Ext.XTemplate',
21672
                                            '<tpl for=".">',
21673
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
21674
                                            '</tpl>')
21675
                                    },
21676
                                    renderer: function (value) {
21677
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
21678
                                        var index = store.find(valueField, value);
21679
                                        var val = "";
21680
                                        if (index != -1) {
21681
                                            var rc = store.getAt(index);
21682
                                            //val = rc.get(displayValue);
21683
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
21684
                                        } else {
21685
                                            val = value;
21686
                                        }
21687
                                        return val;
21688
                                    },
21689
                                    filter: {
21690
                                        type: 'list',
21691
                                        itemDefaults: {
21692
                                            emptyText: 'Search for...'
21693
                                        }
21694
                                    }
21695
                                });
21696
                            } else if (rec.SearchType == '2') {
21697
                                var triger = (rec.TriggerCombo).split('$');
21698
                                var targetField_ = triger[0];
21699
                                var fieldValue_ = triger[1];
21700
                                cols.push({
21701
                                    text: rec.HeaderTitle,
21702
                                    hidden: Hidden_,
21703
                                    dataIndex: rec.FieldName,
21704
                                    filter: {
21705
                                        itemDefaults: {
21706
                                            emptyText: 'Search for...'
21707
                                        }
21708
                                    },
21709
                                    editor: {
21710
                                        allowBlank: null_,
21711
                                        xtype: 'minovalookupgrid',
21712
                                        readOnly: ReadOnly_,
21713
                                        isGrid: true,
21714
                                        fieldTarget: targetField_,
21715
                                        fieldValue: fieldValue_,
21716
                                        isGrid: true,
21717
                                        id: tableName + rec.FieldName,
21718
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21719
                                        triggerCls: 'x-form-search-trigger',
21720
                                        vtype: 'alphanum', // disable space
21721
                                        nameTable: rec.TableName,
21722
                                        fieldGrid: rec.FieldName,
21723
                                        LookupFunction: rec.LookupFunction,
21724
                                        listeners: {
21725
                                            change: function (val) {
21726
                                                var custumFunc = rec.SelectFunction;
21727
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21728
                                                    Ext.Ajax.request({
21729
                                                        async: false,
21730
                                                        method: 'POST',
21731
                                                        url: '/UserControl/GetStore',
21732
                                                        params: {
21733
                                                            tableName: 'PCMFUNC',
21734
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21735
                                                        },
21736
                                                        success: function (response) {
21737
                                                            var results = Ext.decode(response.responseText);
21738
                                                            data_ = results.data[0];
21739
                                                            if (data_ != undefined) {
21740
                                                                custumFunc = data_.FunctionCode;
21741
                                                            }
21742
                                                        }
21743
                                                    });
21744
                                                }
21745
                                                if (custumFunc) {
21746
                                                    eval(custumFunc)
21747
                                                }
21748
                                            }
21749
                                        }
21750
                                    }
21751
                                });
21752
                            } else if (rec.SearchType == '3') {
21753
                                cols.push({
21754
                                    text: rec.HeaderTitle,
21755
                                    hidden: Hidden_,
21756
                                    dataIndex: rec.FieldName,
21757
                                    filter: {
21758
                                        itemDefaults: {
21759
                                            emptyText: 'Search for...'
21760
                                        }
21761
                                    },
21762
                                    editor: {
21763
                                        allowBlank: null_,
21764
                                        // xtype: 'minovalookuptreePopup',
21765
                                        xtype: 'MinovaLookupTree',
21766
                                        readOnly: ReadOnly_,
21767
                                        id: tableName + rec.FieldName,
21768
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21769
                                        triggerCls: 'x-form-search-trigger',
21770
                                        vtype: 'alphanum', // disable space
21771
                                        treeSructure: rec.SearchFunction, //'O-O-P',
21772
                                        objClassValue: rec.ParamCombo, //'O',
21773
                                        nameTable: rec.TableName,
21774
                                        fieldGrid: rec.FieldName,
21775
                                        listeners: {
21776
                                            change: function (val) {
21777
                                                var custumFunc = rec.SelectFunction;
21778
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21779
                                                    Ext.Ajax.request({
21780
                                                        async: false,
21781
                                                        method: 'POST',
21782
                                                        url: '/UserControl/GetStore',
21783
                                                        params: {
21784
                                                            tableName: 'PCMFUNC',
21785
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21786
                                                        },
21787
                                                        success: function (response) {
21788
                                                            var results = Ext.decode(response.responseText);
21789
                                                            data_ = results.data[0];
21790
                                                            if (data_ != undefined) {
21791
                                                                custumFunc = data_.FunctionCode;
21792
                                                            }
21793
                                                        }
21794
                                                    });
21795
                                                }
21796
                                                if (custumFunc) {
21797
                                                    eval(custumFunc)
21798
                                                }
21799
                                            }
21800
                                        }
21801
                                    }
21802
                                });
21803
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
21804
                                var triger = (rec.TriggerCombo).split('&');
21805
                                var targetField_ = triger[0];
21806
                                var fieldValue_ = triger[0];
21807
                                cols.push({
21808
                                    text: rec.HeaderTitle,
21809
                                    hidden: Hidden_,
21810
                                    dataIndex: rec.FieldName,
21811
                                    filter: {
21812
                                        itemDefaults: {
21813
                                            emptyText: 'Search for...'
21814
                                        }
21815
                                    },
21816
                                    editor: {
21817
                                        allowBlank: null_,
21818
                                        xtype: 'lookupemployee',
21819
                                        readOnly: ReadOnly_,
21820
                                        isGrid: true,
21821
                                        fieldTarget: targetField_,
21822
                                        fieldValue: fieldValue_,
21823
                                        isGrid: true,
21824
                                        id: tableName + rec.FieldName,
21825
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21826
                                        triggerCls: 'x-form-search-trigger',
21827
                                        vtype: 'alphanum', // disable space
21828
                                        nameTable: rec.TableName,
21829
                                        fieldGrid: rec.FieldName,
21830
                                        listeners: {
21831
                                            change: function (val) {
21832
                                                var custumFunc = rec.SelectFunction;
21833
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21834
                                                    Ext.Ajax.request({
21835
                                                        async: false,
21836
                                                        method: 'POST',
21837
                                                        url: '/UserControl/GetStore',
21838
                                                        params: {
21839
                                                            tableName: 'PCMFUNC',
21840
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21841
                                                        },
21842
                                                        success: function (response) {
21843
                                                            var results = Ext.decode(response.responseText);
21844
                                                            data_ = results.data[0];
21845
                                                            if (data_ != undefined) {
21846
                                                                custumFunc = data_.FunctionCode;
21847
                                                            }
21848
                                                        }
21849
                                                    });
21850
                                                }
21851
                                                if (custumFunc) {
21852
                                                    eval(custumFunc)
21853
                                                }
21854
                                            }
21855
                                        }
21856
                                    }
21857
                                });
21858
                            } else if (rec.SearchType == '4' && isLookup != true) {
21859
                                cols.push({
21860

    
21861
                                    text: rec.HeaderTitle,
21862
                                    hidden: Hidden_,
21863
                                    dataIndex: rec.FieldName,
21864
                                    filter: {
21865
                                        itemDefaults: {
21866
                                            emptyText: 'Search for...'
21867
                                        }
21868
                                    },
21869
                                    editor: {
21870
                                        allowBlank: null_,
21871
                                        xtype: 'lookupemployee',
21872
                                        readOnly: ReadOnly_,
21873
                                        isGrid: true,
21874
                                        fieldTarget: targetField_,
21875
                                        fieldValue: fieldValue_,
21876
                                        isGrid: true,
21877
                                        id: tableName + rec.FieldName,
21878
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21879
                                        triggerCls: 'x-form-search-trigger',
21880
                                        vtype: 'alphanum', // disable space
21881
                                        nameTable: rec.TableName,
21882
                                        fieldGrid: rec.FieldName,
21883
                                        listeners: {
21884
                                            change: function (val) {
21885
                                                var custumFunc = rec.SelectFunction;
21886
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21887
                                                    Ext.Ajax.request({
21888
                                                        async: false,
21889
                                                        method: 'POST',
21890
                                                        url: '/UserControl/GetStore',
21891
                                                        params: {
21892
                                                            tableName: 'PCMFUNC',
21893
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21894
                                                        },
21895
                                                        success: function (response) {
21896
                                                            var results = Ext.decode(response.responseText);
21897
                                                            data_ = results.data[0];
21898
                                                            if (data_ != undefined) {
21899
                                                                custumFunc = data_.FunctionCode;
21900
                                                            }
21901
                                                        }
21902
                                                    });
21903
                                                }
21904
                                                if (custumFunc) {
21905
                                                    eval(custumFunc)
21906
                                                }
21907
                                            }
21908
                                        }
21909
                                    }
21910
                                });
21911
                            } else {
21912
                                if (rec.FieldDataType == 3) { //add by taufan
21913
                                    cols.push({
21914
                                        text: rec.HeaderTitle,
21915
                                        hidden: Hidden_,
21916
                                        dataIndex: rec.FieldName,
21917
                                        filter: {
21918
                                            itemDefaults: {
21919
                                                emptyText: 'Search for...'
21920
                                            }
21921
                                        },
21922
                                        editor: {
21923
                                            allowBlank: null_,
21924
                                            xtype: 'textfield',
21925
                                            readOnly: ReadOnly_,
21926
                                            id: tableName + rec.FieldName,
21927
                                            nameTable: rec.TableName,
21928
                                            fieldGrid: rec.FieldName,
21929
                                            vtype: 'validateDecimal',
21930
                                            maxLength: rec.Length,
21931
                                            precision: rec.Prec,
21932
                                            fieldStyle: 'text-align:right;',
21933
                                            listeners: {
21934
                                                change: function (val) {
21935
                                                    var custumFunc = null;
21936
                                                    Ext.Ajax.request({
21937
                                                        async: false,
21938
                                                        method: 'POST',
21939
                                                        url: '/UserControl/GetStore',
21940
                                                        params: {
21941
                                                            tableName: 'SDATATABLEFIELD',
21942
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21943
                                                        },
21944
                                                        success: function (response) {
21945
                                                            var results = Ext.decode(response.responseText);
21946
                                                            data_ = results.data[0];
21947
                                                            if (data_ != undefined) {
21948
                                                                custumFunc = data_.SelectFunction;
21949
                                                                //console.log(data_)
21950
                                                            }
21951
                                                        }
21952
                                                    });
21953

    
21954
                                                    if (custumFunc) {
21955
                                                        eval(custumFunc)
21956
                                                    }
21957
                                                }
21958
                                            }
21959
                                        }
21960
                                    });
21961
                                } else {
21962
                                    cols.push({
21963
                                        text: rec.HeaderTitle,
21964
                                        hidden: Hidden_,
21965
                                        dataIndex: rec.FieldName,
21966
                                        filter: {
21967
                                            itemDefaults: {
21968
                                                emptyText: 'Search for...'
21969
                                            }
21970
                                        },
21971
                                        editor: {
21972
                                            allowBlank: null_,
21973
                                            xtype: 'textfield',
21974
                                            readOnly: ReadOnly_,
21975
                                            id: tableName + rec.FieldName,
21976
                                            nameTable: rec.TableName,
21977
                                            fieldGrid: rec.FieldName,
21978
                                            listeners: {
21979
                                                change: function (val) {
21980
                                                    var custumFunc = null;
21981
                                                    Ext.Ajax.request({
21982
                                                        async: false,
21983
                                                        method: 'POST',
21984
                                                        url: '/UserControl/GetStore',
21985
                                                        params: {
21986
                                                            tableName: 'SDATATABLEFIELD',
21987
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21988
                                                        },
21989
                                                        success: function (response) {
21990
                                                            var results = Ext.decode(response.responseText);
21991
                                                            data_ = results.data[0];
21992
                                                            if (data_ != undefined) {
21993
                                                                custumFunc = data_.SelectFunction;
21994
                                                                //console.log(data_)
21995
                                                            }
21996
                                                        }
21997
                                                    });
21998

    
21999
                                                    if (custumFunc) {
22000
                                                        eval(custumFunc)
22001
                                                    }
22002
                                                }
22003
                                            }
22004
                                        }
22005
                                    });
22006
                                }
22007
                            }
22008

    
22009
                            break
22010

    
22011
                    }
22012
                } else {
22013
                    cols.push({
22014
                        text: rec.HeaderTitle,
22015
                        hidden: Hidden_,
22016
                        dataIndex: rec.FieldName,
22017
                        hidden: true,
22018
                        editor: {
22019
                            allowBlank: true,
22020
                            xtype: 'textfield',
22021
                            readOnly: ReadOnly_,
22022
                            id: tableName + rec.FieldName,
22023
                            nameTable: rec.TableName,
22024
                            fieldGrid: rec.FieldName,
22025
                        },
22026
                        filter: {
22027
                            itemDefaults: {
22028
                                emptyText: 'Search for...'
22029
                            }
22030
                        }
22031
                    });
22032
                }
22033
            });
22034

    
22035
        };
22036
        addData = addData + "}";
22037
        Ext.applyIf(me, {
22038
            items: [{
22039
                xtype: 'grid',
22040
                id: gridName,
22041
                name: gridName,
22042
                height: height,
22043
                viewConfig: {
22044
                    emptyText: 'No Data Display',
22045
                    deferEmptyText: false,
22046
                    //Add Nana For Autosize Column Mode
22047
                    listeners: {
22048
                        refresh: function (dataview) {
22049
                            Ext.each(dataview.panel.columns, function (column) {
22050
                                //if (column.autoSizeColumn == false)
22051
                                //	column.autoSizeColumn = true;
22052
                                column.autoSize();
22053
                                //dataview.store.reload();
22054
                            })
22055
                        }
22056
                    },
22057
                    render: function (comp) {
22058
                        comp.getStore().reload();
22059
                        console.log(comp);
22060
                    }
22061
                },
22062
                //store: 'gridStore',
22063
                store: Ext.create('Ext.data.Store', {
22064
                    storeId: storeID,
22065
                    fields: fieldStore,
22066
                    proxy: {
22067
                        method: 'POST',
22068
                        type: 'ajax',
22069
                        url: '',
22070
                        reader: {
22071
                            type: 'json',
22072
                            root: 'data'
22073
                        }
22074
                    }
22075
                }),
22076
                dockedItems: [{
22077
                    xtype: 'toolbar',
22078
                    items: [{
22079
                        text: 'Add',
22080
                        hidden: hide_,
22081
                        name: tableName + 'Add',
22082
                        iconCls: 'fa-plus-circle',
22083
                        style: 'font-family: FontAwesome',
22084
                        handler: function () {
22085
                            var store = Ext.StoreMgr.lookup(storeID)
22086
                            idx = store.getCount();
22087
                            var action = getParam('action');
22088
                            var data = '';
22089
                            var Sequence = 0;
22090
                            if (idx == 0) {
22091
                                Sequence = 1;
22092
                            } else {
22093
                                Sequence = 1 + idx;
22094
                            }
22095
                            //data = {
22096
                            //    Sequence: Sequence
22097
                            //};
22098

    
22099
                            var seq = 'Sequence';
22100
                            var SequenceValue = Sequence;
22101
                            eval(addData);
22102
                            data[seq] = SequenceValue;
22103

    
22104
                            store.insert(idx, data);
22105
                        }
22106

    
22107
                    }, {
22108
                        text: 'Delete',
22109
                        hidden: hide_,
22110
                        name: tableName + 'DeleteText',
22111
                        iconCls: 'fa-trash-o',
22112
                        style: 'font-family: FontAwesome',
22113
                        //disabled: true
22114
                        handler: function () {
22115
                            var me = this,
22116
                            store = Ext.StoreMgr.lookup(storeID)
22117

    
22118
                            var grid = Ext.getCmp(gridName);
22119

    
22120
                            Ext.MessageBox.show({
22121
                                title: 'Remove tab',
22122
                                msg: "This will remove. Do you want to continue?",
22123
                                buttons: Ext.MessageBox.YESNO,
22124
                                fn: function (choice) {
22125
                                    console.log(choice);
22126
                                    if (choice === 'yes') {
22127
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
22128
                                        if (selection) {
22129
                                            store.remove(selection);
22130
                                        }
22131
                                    }
22132
                                    //delete panel.pendingClose;
22133
                                }
22134
                            });
22135
                        }
22136

    
22137
                    }
22138
                    ]
22139
                }
22140
                ],
22141
                columns: cols,
22142
                selType: checkSelection,
22143
                //selType: 'rowmodel',
22144
                plugins: {
22145
                    ptype: 'rowediting',
22146
                    pluginId: 'rowEditing',
22147
                    clicksToEdit: 1,
22148
                    listeners: {
22149
                        //edit: 'onGridEditorEdit'
22150
                    }
22151
                }
22152
            }, ]
22153

    
22154
        });
22155

    
22156
        me.callParent(arguments);
22157
    }
22158
});
22159

    
22160
/*Add by Midi ( Tab List Mass Posting ERP DocType AR)*/
22161
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTransAR', {
22162
	extend: 'Ext.tab.Panel',
22163
	alias: ['widget.doctablistAR'],
22164
	transType: undefined,
22165
	docType: undefined,
22166
	docNo: undefined,
22167
	langId: undefined,
22168
	param: undefined,
22169
	layout: 'fit',
22170
	name: 'panelTabAR',
22171
	id: 'mainTabAR',
22172
	action: undefined,
22173
	initComponent: function () {
22174
		var me = this;
22175
		var documentType = me.docType;
22176
		var transactionType = me.transType;
22177
		var hasil = null;
22178
		var _items = [];
22179
		Ext.Ajax.request({
22180
			async: false,
22181
			method: 'POST',
22182
			url: '/UserControl/GetStore',
22183
			params: {
22184
				tableName: 'PCMBSTRANSLIST',
22185
				param: 'TransType[=]' + me.transType
22186
			},
22187
			success: function (response) {
22188
				var results = Ext.decode(response.responseText);
22189
				hasil = results.data;
22190
			}
22191
		});
22192
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22193
		if (hasil.length > 0) {
22194
			Ext.each(hasil, function (rec) {
22195
				if (rec.LayoutType == "L004") { // L004=Custom
22196
					var pnl = Ext.create(rec.CustomLayout, {
22197
							title: rec.Title,
22198
							tableName: rec.TableName,
22199
							height: 400,
22200
							name: 'panelTab' + rec.TableName,
22201
							tbl: rec.TableName,
22202
							layoutType: rec.LayoutType
22203
						});
22204
					_items.push(pnl)
22205
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
22206
					_items.push({
22207
						xtype: 'panel',
22208
						title: rec.Title,
22209
						name: 'panelTab' + rec.TableName,
22210
						tbl: rec.TableName,
22211
						layoutType: rec.LayoutType,
22212
						items: [{
22213
								xtype: 'docgrid',
22214
								height: 400,
22215
								tableName: rec.TableName,
22216
								docType: me.docType,
22217
								transType: me.transType,
22218
								storename: 'store' + rec.TableName,
22219
								pagesize: 25,
22220
								name: 'GRID' + rec.TableName,
22221
								margin: '0 0 10 0',
22222
								autoLoad: false,
22223
								tbar: [{
22224
										xtype: 'button',
22225
										text: 'Action',
22226
										name: 'actionGrid' + rec.TableName,
22227
										menu: [{
22228
												text: 'Add',
22229
												name: 'add' + rec.TableName,
22230
												tbl: rec.TableName,
22231
												style: 'font-family: FontAwesome',
22232
												iconCls: 'fa-plus-circle',
22233
												handler: function () {
22234
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22235
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22236
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22237
													frmDisplay.reset();
22238
													frmForm.reset();
22239
													frmDisplay.setHidden(true);
22240
													frmForm.setHidden(false);
22241
													grdPanel.setHidden(true);
22242
													action = "0";
22243
												}
22244
											}, {
22245
												text: 'Delete',
22246
												name: 'delete' + rec.TableName,
22247
												tbl: rec.TableName,
22248
												iconCls: 'fa-trash-o',
22249
												style: 'font-family: FontAwesome',
22250
												handler: function () {
22251
													var me = this;
22252
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
22253
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22254
													Ext.MessageBox.show({
22255
														title: 'Remove tab',
22256
														msg: "This will remove. Do you want to continue?",
22257
														buttons: Ext.MessageBox.YESNO,
22258
														fn: function (choice) {
22259
															console.log(choice);
22260
															if (choice === 'yes') {
22261
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
22262
																if (selection) {
22263
																	store.remove(selection);
22264
																}
22265
															}
22266
														}
22267
													});
22268
												}
22269
											}
22270
										]
22271
									}, {
22272
										xtype: 'tbfill'
22273
									}, {
22274
										text: 'Clear Filters',
22275
										tooltip: 'Clear all filters',
22276
										name: 'clearbtn',
22277
										handler: function () {}
22278
									}
22279
								],
22280
								dockedItems: [{
22281
										xtype: 'pagingtoolbar',
22282
										store: 'store' + rec.TableName,
22283
										dock: 'bottom',
22284
										pageSize: me.pagesize,
22285
										displayInfo: true
22286
									}
22287
								],
22288
								listeners: {
22289
									'itemdblclick': function (me, record, item, index, e, eOpts) {
22290
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22291
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22292
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22293
										frmDisplay.reset();
22294
										frmForm.reset();
22295
										frmDisplay.getForm().setValues(record.data);
22296
										frmForm.getForm().setValues(record.data);
22297
										frmDisplay.setHidden(false);
22298
										frmForm.setHidden(true);
22299
										grdPanel.setHidden(true);
22300
										action = "1";
22301
									}
22302
								}
22303
							}, {
22304
								xtype: 'minovadocform',
22305
								name: 'DISPLAY' + rec.TableName,
22306
								id: 'DISPLAY' + rec.TableName,
22307
								itemId: 'DISPLAY' + rec.TableName,
22308
								tableName: rec.TableName,
22309
								docType: me.docType,
22310
								transType: me.transType,
22311
								isDisplay: true,
22312
								hidden: true,
22313
								buttons: [{
22314
										text: 'Edit',
22315
										name: 'editDISPLAY' + rec.TableName,
22316
										handler: function () {
22317
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22318
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22319
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22320
											frmDisplay.setHidden(true);
22321
											frmForm.setHidden(false);
22322
											grdPanel.setHidden(true);
22323
										}
22324
									}, {
22325
										text: 'Cancel',
22326
										name: 'cancelDISPLAY' + rec.TableName,
22327
										handler: function () {
22328
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22329
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22330
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22331
											frmDisplay.setHidden(true);
22332
											frmForm.setHidden(true);
22333
											grdPanel.setHidden(false);
22334
											grdPanel.getStore().reload();
22335
										}
22336
									}
22337
								]
22338
							}, {
22339
								xtype: 'minovadocform',
22340
								name: 'FORM' + rec.TableName,
22341
								id: 'FORM' + rec.TableName,
22342
								itemId: 'FORM' + rec.TableName,
22343
								tableName: rec.TableName,
22344
								docType: me.docType,
22345
								transType: me.transType,
22346
								isDisplay: false,
22347
								hidden: true,
22348
								buttons: [{
22349
										text: 'Submit',
22350
										name: 'submitFORM' + rec.TableName,
22351
										handler: function () {
22352
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22353
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22354
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22355
											var frm = frmForm.getForm();
22356
											if (frm.isValid()) {
22357
												var table = rec.TableName;
22358
												var data = frmForm.getValues();
22359
												var token = MinovaUtil.SESSIONS.Token;
22360
												var str = grdPanel.getStore();
22361
												var idx = str.getCount();
22362
												str.insert(idx, data);
22363
												frmDisplay.setHidden(true);
22364
												frmForm.setHidden(true);
22365
												grdPanel.setHidden(false);
22366
											}
22367
										}
22368
									}, {
22369
										text: 'Cancel',
22370
										name: 'cancelFORM' + rec.TableName,
22371
										handler: function () {
22372
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22373
												if (respone == "yes") {
22374
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22375
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22376
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22377
													frmDisplay.setHidden(true);
22378
													frmForm.setHidden(true);
22379
													grdPanel.setHidden(false);
22380
												}
22381
											});
22382
										}
22383
									}
22384
								]
22385
							}
22386
						]
22387
					});
22388
				} else if (rec.LayoutType == "L005") { // Grid View Only
22389
					_items.push({
22390
						xtype: 'panel',
22391
						title: rec.Title,
22392
						name: 'panelTab' + rec.TableName,
22393
						tbl: rec.TableName,
22394
						layoutType: rec.LayoutType,
22395
						items: [{
22396
								xtype: 'docgrid',
22397
								height: 400,
22398
								tableName: rec.TableName,
22399
								docType: me.docType,
22400
								transType: me.transType,
22401
								storename: 'store' + rec.TableName,
22402
								pagesize: 25,
22403
								name: 'GRID' + rec.TableName,
22404
								margin: '0 0 10 0',
22405
								autoLoad: false,
22406
								tbar: [{
22407
										xtype: 'tbfill'
22408
									}, {
22409
										text: 'Clear Filters',
22410
										tooltip: 'Clear all filters',
22411
										name: 'clearbtn',
22412
										handler: function () {}
22413
									}
22414
								],
22415
								dockedItems: [{
22416
										xtype: 'pagingtoolbar',
22417
										store: 'store' + rec.TableName,
22418
										dock: 'bottom',
22419
										pageSize: me.pagesize,
22420
										displayInfo: true
22421
									}
22422
								]
22423
							}
22424
						]
22425
					});
22426
				} else if (rec.LayoutType == "L006") {
22427
					_items.push({
22428
						xtype: 'panel',
22429
						title: rec.Title,
22430
						name: 'panelTab' + rec.TableName,
22431
						tbl: rec.TableName,
22432
						layoutType: rec.LayoutType,
22433
						items: [{
22434
								xtype: 'docgridcelledit',
22435
								name: 'CELLGRID' + rec.TableName,
22436
								tableName: rec.TableName,
22437
								docType: me.docType,
22438
								transType: me.transType,
22439
								docNo: me.docNo,
22440
								height: 400,
22441
								hideButton: false,
22442
								margin: '0 0 10 0'
22443
							}
22444
						]
22445
					});
22446
				} else if (rec.LayoutType == "L007") {
22447
					_items.push({
22448
						xtype: 'panel',
22449
						title: rec.Title,
22450
						name: 'panelTab' + rec.TableName,
22451
						tbl: rec.TableName,
22452
						layoutType: rec.LayoutType,
22453
						items: [{
22454
								xtype: 'docgridcelleditsum',
22455
								name: 'CELLGRID' + rec.TableName,
22456
								tableName: rec.TableName,
22457
								docType: me.docType,
22458
								transType: me.transType,
22459
								docNo: me.docNo,
22460
								height: 400,
22461
								hideButton: false,
22462
								margin: '0 0 10 0'
22463
							}, {
22464
								xtype: 'summarydocform',
22465
								name: 'SUM' + rec.TableName,
22466
								id: 'SUM' + rec.TableName,
22467
								itemId: 'SUM' + rec.TableName,
22468
								tableName: rec.TableName,
22469
								docType: me.docType,
22470
								transType: me.transType,
22471
							}
22472
						]
22473
					});
22474
				} else { // L001=Default Form Only
22475
					_items.push({
22476
						xtype: 'panel',
22477
						title: rec.LabelName,
22478
						name: 'panelTab' + rec.TableName,
22479
						tbl: rec.TableName,
22480
						layoutType: rec.LayoutType,
22481
						items: [{
22482
								xtype: 'minovadocform',
22483
								name: 'DISPLAY' + rec.TableName,
22484
								id: 'DISPLAY' + rec.TableName,
22485
								itemId: 'DISPLAY' + rec.TableName,
22486
								tableName: rec.TableName,
22487
								docType: me.docType,
22488
								transType: me.transType,
22489
								isDisplay: true,
22490
								hidden: false,
22491
								buttons: [{
22492
										text: 'Edit',
22493
										name: 'editDISPLAY' + rec.TableName,
22494
										iconCls: 'fa-edit',
22495
										style: 'font-family: FontAwesome',
22496
										handler: function () {
22497
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22498
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22499
											frmDisplay.setHidden(true);
22500
											frmForm.setHidden(false);
22501
											action = "1";
22502
										}
22503
									}, {
22504
										text: 'Cancel',
22505
										name: 'cancelDISPLAY' + rec.TableName,
22506
										iconCls: 'fa-reply',
22507
										style: 'font-family: FontAwesome',
22508
										hidden: true
22509
									}
22510
								]
22511
							}, {
22512
								xtype: 'minovadocform',
22513
								name: 'FORM' + rec.TableName,
22514
								id: 'FORM' + rec.TableName,
22515
								itemId: 'FORM' + rec.TableName,
22516
								tableName: rec.TableName,
22517
								docType: me.docType,
22518
								transType: me.transType,
22519
								isDisplay: false,
22520
								hidden: true,
22521
								buttons: [{
22522
										text: 'Save',
22523
										name: 'saveDISPLAY' + rec.TableName,
22524
										iconCls: 'fa-save',
22525
										style: 'font-family: FontAwesome',
22526
										handler: function () {
22527
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22528
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22529
											var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
22530
											var frm = frmForm.getForm();
22531
											if (frm.isValid()) {
22532
												var table = rec.TableName;
22533
												var data = Ext.encode(frmForm.getValues());
22534
												var token = MinovaUtil.SESSIONS.Token;
22535
												var params = {
22536
													apiController: 'api/Devt',
22537
													methodName: 'SaveTableMaster',
22538
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
22539
												};
22540
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
22541
													var result = Ext.decode(xhr.responseText);
22542
													var r = Ext.decode(result.data);
22543
													if (r.success) {
22544
														headerDisplay.mask("Loading...");
22545
														var idNo = r.data;
22546
														frmForm.getForm().findField("DocNo").setValue(idNo);
22547
														frmDisplay.getForm().setValues(frmForm.getValues());
22548
														headerDisplay.getForm().setValues(frmForm.getValues());
22549
														frmDisplay.setHidden(false);
22550
														frmForm.setHidden(true);
22551
														MinovaMessage('Not Null', '000006', '', 'S');
22552
														headerDisplay.unmask();
22553
													} else {
22554
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
22555
													}
22556
												});
22557
											}
22558
										}
22559
									}, {
22560
										text: 'Delete',
22561
										name: 'deleteDISPLAY' + rec.TableName,
22562
										iconCls: 'fa-trash-o',
22563
										style: 'font-family: FontAwesome',
22564
										handler: function () {}
22565
									}, {
22566
										text: 'Cancel',
22567
										name: 'cancelDISPLAY' + rec.TableName,
22568
										iconCls: 'fa-reply',
22569
										style: 'font-family: FontAwesome',
22570
										handler: function () {
22571
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22572
												if (respone == "yes") {
22573
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22574
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22575
													frmDisplay.setHidden(false);
22576
													frmForm.setHidden(true);
22577
												}
22578
											});
22579
										}
22580
									}
22581
								]
22582
							}
22583
						]
22584
					});
22585
				}
22586
			});
22587
		}
22588
		Ext.applyIf(me, {
22589
			items: _items
22590
		});
22591
		me.callParent(arguments);
22592
	}
22593
});
22594

    
22595
/*Add by Midi ( Tab List Mass Posting ERP DocType AP )*/
22596
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTransAP', {
22597
	extend: 'Ext.tab.Panel',
22598
	alias: ['widget.doctablistAP'],
22599
	transType: undefined,
22600
	docType: undefined,
22601
	docNo: undefined,
22602
	langId: undefined,
22603
	param: undefined,
22604
	layout: 'fit',
22605
	name: 'panelTabAP',
22606
	id: 'mainTabAP',
22607
	action: undefined,
22608
	initComponent: function () {
22609
		var me = this;
22610
		var documentType = me.docType;
22611
		var transactionType = me.transType;
22612
		var hasil = null;
22613
		var _items = [];
22614
		Ext.Ajax.request({
22615
			async: false,
22616
			method: 'POST',
22617
			url: '/UserControl/GetStore',
22618
			params: {
22619
				tableName: 'PCMBSTRANSLIST',
22620
				param: 'TransType[=]' + me.transType
22621
			},
22622
			success: function (response) {
22623
				var results = Ext.decode(response.responseText);
22624
				hasil = results.data;
22625
			}
22626
		});
22627
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22628
		if (hasil.length > 0) {
22629
			Ext.each(hasil, function (rec) {
22630
				if (rec.LayoutType == "L004") { // L004=Custom
22631
					var pnl = Ext.create(rec.CustomLayout, {
22632
							title: rec.Title,
22633
							tableName: rec.TableName,
22634
							height: 400,
22635
							name: 'panelTab' + rec.TableName,
22636
							tbl: rec.TableName,
22637
							layoutType: rec.LayoutType
22638
						});
22639
					_items.push(pnl)
22640
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
22641
					_items.push({
22642
						xtype: 'panel',
22643
						title: rec.Title,
22644
						name: 'panelTab' + rec.TableName,
22645
						tbl: rec.TableName,
22646
						layoutType: rec.LayoutType,
22647
						items: [{
22648
								xtype: 'docgrid',
22649
								height: 400,
22650
								tableName: rec.TableName,
22651
								docType: me.docType,
22652
								transType: me.transType,
22653
								storename: 'store' + rec.TableName,
22654
								pagesize: 25,
22655
								name: 'GRID' + rec.TableName,
22656
								margin: '0 0 10 0',
22657
								autoLoad: false,
22658
								tbar: [{
22659
										xtype: 'button',
22660
										text: 'Action',
22661
										name: 'actionGrid' + rec.TableName,
22662
										menu: [{
22663
												text: 'Add',
22664
												name: 'add' + rec.TableName,
22665
												tbl: rec.TableName,
22666
												style: 'font-family: FontAwesome',
22667
												iconCls: 'fa-plus-circle',
22668
												handler: function () {
22669
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22670
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22671
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22672
													frmDisplay.reset();
22673
													frmForm.reset();
22674
													frmDisplay.setHidden(true);
22675
													frmForm.setHidden(false);
22676
													grdPanel.setHidden(true);
22677
													action = "0";
22678
												}
22679
											}, {
22680
												text: 'Delete',
22681
												name: 'delete' + rec.TableName,
22682
												tbl: rec.TableName,
22683
												iconCls: 'fa-trash-o',
22684
												style: 'font-family: FontAwesome',
22685
												handler: function () {
22686
													var me = this;
22687
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
22688
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22689
													Ext.MessageBox.show({
22690
														title: 'Remove tab',
22691
														msg: "This will remove. Do you want to continue?",
22692
														buttons: Ext.MessageBox.YESNO,
22693
														fn: function (choice) {
22694
															console.log(choice);
22695
															if (choice === 'yes') {
22696
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
22697
																if (selection) {
22698
																	store.remove(selection);
22699
																}
22700
															}
22701
														}
22702
													});
22703
												}
22704
											}
22705
										]
22706
									}, {
22707
										xtype: 'tbfill'
22708
									}, {
22709
										text: 'Clear Filters',
22710
										tooltip: 'Clear all filters',
22711
										name: 'clearbtn',
22712
										handler: function () {}
22713
									}
22714
								],
22715
								dockedItems: [{
22716
										xtype: 'pagingtoolbar',
22717
										store: 'store' + rec.TableName,
22718
										dock: 'bottom',
22719
										pageSize: me.pagesize,
22720
										displayInfo: true
22721
									}
22722
								],
22723
								listeners: {
22724
									'itemdblclick': function (me, record, item, index, e, eOpts) {
22725
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22726
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22727
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22728
										frmDisplay.reset();
22729
										frmForm.reset();
22730
										frmDisplay.getForm().setValues(record.data);
22731
										frmForm.getForm().setValues(record.data);
22732
										frmDisplay.setHidden(false);
22733
										frmForm.setHidden(true);
22734
										grdPanel.setHidden(true);
22735
										action = "1";
22736
									}
22737
								}
22738
							}, {
22739
								xtype: 'minovadocform',
22740
								name: 'DISPLAY' + rec.TableName,
22741
								id: 'DISPLAY' + rec.TableName,
22742
								itemId: 'DISPLAY' + rec.TableName,
22743
								tableName: rec.TableName,
22744
								docType: me.docType,
22745
								transType: me.transType,
22746
								isDisplay: true,
22747
								hidden: true,
22748
								buttons: [{
22749
										text: 'Edit',
22750
										name: 'editDISPLAY' + rec.TableName,
22751
										handler: function () {
22752
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22753
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22754
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22755
											frmDisplay.setHidden(true);
22756
											frmForm.setHidden(false);
22757
											grdPanel.setHidden(true);
22758
										}
22759
									}, {
22760
										text: 'Cancel',
22761
										name: 'cancelDISPLAY' + rec.TableName,
22762
										handler: function () {
22763
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22764
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22765
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22766
											frmDisplay.setHidden(true);
22767
											frmForm.setHidden(true);
22768
											grdPanel.setHidden(false);
22769
											grdPanel.getStore().reload();
22770
										}
22771
									}
22772
								]
22773
							}, {
22774
								xtype: 'minovadocform',
22775
								name: 'FORM' + rec.TableName,
22776
								id: 'FORM' + rec.TableName,
22777
								itemId: 'FORM' + rec.TableName,
22778
								tableName: rec.TableName,
22779
								docType: me.docType,
22780
								transType: me.transType,
22781
								isDisplay: false,
22782
								hidden: true,
22783
								buttons: [{
22784
										text: 'Submit',
22785
										name: 'submitFORM' + rec.TableName,
22786
										handler: function () {
22787
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22788
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22789
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22790
											var frm = frmForm.getForm();
22791
											if (frm.isValid()) {
22792
												var table = rec.TableName;
22793
												var data = frmForm.getValues();
22794
												var token = MinovaUtil.SESSIONS.Token;
22795
												var str = grdPanel.getStore();
22796
												var idx = str.getCount();
22797
												str.insert(idx, data);
22798
												frmDisplay.setHidden(true);
22799
												frmForm.setHidden(true);
22800
												grdPanel.setHidden(false);
22801
											}
22802
										}
22803
									}, {
22804
										text: 'Cancel',
22805
										name: 'cancelFORM' + rec.TableName,
22806
										handler: function () {
22807
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22808
												if (respone == "yes") {
22809
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22810
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22811
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22812
													frmDisplay.setHidden(true);
22813
													frmForm.setHidden(true);
22814
													grdPanel.setHidden(false);
22815
												}
22816
											});
22817
										}
22818
									}
22819
								]
22820
							}
22821
						]
22822
					});
22823
				} else if (rec.LayoutType == "L005") { // Grid View Only
22824
					_items.push({
22825
						xtype: 'panel',
22826
						title: rec.Title,
22827
						name: 'panelTab' + rec.TableName,
22828
						tbl: rec.TableName,
22829
						layoutType: rec.LayoutType,
22830
						items: [{
22831
								xtype: 'docgrid',
22832
								height: 400,
22833
								tableName: rec.TableName,
22834
								docType: me.docType,
22835
								transType: me.transType,
22836
								storename: 'store' + rec.TableName,
22837
								pagesize: 25,
22838
								name: 'GRID' + rec.TableName,
22839
								margin: '0 0 10 0',
22840
								autoLoad: false,
22841
								tbar: [{
22842
										xtype: 'tbfill'
22843
									}, {
22844
										text: 'Clear Filters',
22845
										tooltip: 'Clear all filters',
22846
										name: 'clearbtn',
22847
										handler: function () {}
22848
									}
22849
								],
22850
								dockedItems: [{
22851
										xtype: 'pagingtoolbar',
22852
										store: 'store' + rec.TableName,
22853
										dock: 'bottom',
22854
										pageSize: me.pagesize,
22855
										displayInfo: true
22856
									}
22857
								]
22858
							}
22859
						]
22860
					});
22861
				} else if (rec.LayoutType == "L006") {
22862
					_items.push({
22863
						xtype: 'panel',
22864
						title: rec.Title,
22865
						name: 'panelTab' + rec.TableName,
22866
						tbl: rec.TableName,
22867
						layoutType: rec.LayoutType,
22868
						items: [{
22869
								xtype: 'docgridcelledit',
22870
								name: 'CELLGRID' + rec.TableName,
22871
								tableName: rec.TableName,
22872
								docType: me.docType,
22873
								transType: me.transType,
22874
								docNo: me.docNo,
22875
								height: 400,
22876
								hideButton: false,
22877
								margin: '0 0 10 0'
22878
							}
22879
						]
22880
					});
22881
				} else if (rec.LayoutType == "L007") {
22882
					_items.push({
22883
						xtype: 'panel',
22884
						title: rec.Title,
22885
						name: 'panelTab' + rec.TableName,
22886
						tbl: rec.TableName,
22887
						layoutType: rec.LayoutType,
22888
						items: [{
22889
								xtype: 'docgridcelleditsum',
22890
								name: 'CELLGRID' + rec.TableName,
22891
								tableName: rec.TableName,
22892
								docType: me.docType,
22893
								transType: me.transType,
22894
								docNo: me.docNo,
22895
								height: 400,
22896
								hideButton: false,
22897
								margin: '0 0 10 0'
22898
							}, {
22899
								xtype: 'summarydocform',
22900
								name: 'SUM' + rec.TableName,
22901
								id: 'SUM' + rec.TableName,
22902
								itemId: 'SUM' + rec.TableName,
22903
								tableName: rec.TableName,
22904
								docType: me.docType,
22905
								transType: me.transType,
22906
							}
22907
						]
22908
					});
22909
				} else { // L001=Default Form Only
22910
					_items.push({
22911
						xtype: 'panel',
22912
						title: rec.LabelName,
22913
						name: 'panelTab' + rec.TableName,
22914
						tbl: rec.TableName,
22915
						layoutType: rec.LayoutType,
22916
						items: [{
22917
								xtype: 'minovadocform',
22918
								name: 'DISPLAY' + rec.TableName,
22919
								id: 'DISPLAY' + rec.TableName,
22920
								itemId: 'DISPLAY' + rec.TableName,
22921
								tableName: rec.TableName,
22922
								docType: me.docType,
22923
								transType: me.transType,
22924
								isDisplay: true,
22925
								hidden: false,
22926
								buttons: [{
22927
										text: 'Edit',
22928
										name: 'editDISPLAY' + rec.TableName,
22929
										iconCls: 'fa-edit',
22930
										style: 'font-family: FontAwesome',
22931
										handler: function () {
22932
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22933
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22934
											frmDisplay.setHidden(true);
22935
											frmForm.setHidden(false);
22936
											action = "1";
22937
										}
22938
									}, {
22939
										text: 'Cancel',
22940
										name: 'cancelDISPLAY' + rec.TableName,
22941
										iconCls: 'fa-reply',
22942
										style: 'font-family: FontAwesome',
22943
										hidden: true
22944
									}
22945
								]
22946
							}, {
22947
								xtype: 'minovadocform',
22948
								name: 'FORM' + rec.TableName,
22949
								id: 'FORM' + rec.TableName,
22950
								itemId: 'FORM' + rec.TableName,
22951
								tableName: rec.TableName,
22952
								docType: me.docType,
22953
								transType: me.transType,
22954
								isDisplay: false,
22955
								hidden: true,
22956
								buttons: [{
22957
										text: 'Save',
22958
										name: 'saveDISPLAY' + rec.TableName,
22959
										iconCls: 'fa-save',
22960
										style: 'font-family: FontAwesome',
22961
										handler: function () {
22962
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22963
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22964
											var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
22965
											var frm = frmForm.getForm();
22966
											if (frm.isValid()) {
22967
												var table = rec.TableName;
22968
												var data = Ext.encode(frmForm.getValues());
22969
												var token = MinovaUtil.SESSIONS.Token;
22970
												var params = {
22971
													apiController: 'api/Devt',
22972
													methodName: 'SaveTableMaster',
22973
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
22974
												};
22975
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
22976
													var result = Ext.decode(xhr.responseText);
22977
													var r = Ext.decode(result.data);
22978
													if (r.success) {
22979
														headerDisplay.mask("Loading...");
22980
														var idNo = r.data;
22981
														frmForm.getForm().findField("DocNo").setValue(idNo);
22982
														frmDisplay.getForm().setValues(frmForm.getValues());
22983
														headerDisplay.getForm().setValues(frmForm.getValues());
22984
														frmDisplay.setHidden(false);
22985
														frmForm.setHidden(true);
22986
														MinovaMessage('Not Null', '000006', '', 'S');
22987
														headerDisplay.unmask();
22988
													} else {
22989
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
22990
													}
22991
												});
22992
											}
22993
										}
22994
									}, {
22995
										text: 'Delete',
22996
										name: 'deleteDISPLAY' + rec.TableName,
22997
										iconCls: 'fa-trash-o',
22998
										style: 'font-family: FontAwesome',
22999
										handler: function () {}
23000
									}, {
23001
										text: 'Cancel',
23002
										name: 'cancelDISPLAY' + rec.TableName,
23003
										iconCls: 'fa-reply',
23004
										style: 'font-family: FontAwesome',
23005
										handler: function () {
23006
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
23007
												if (respone == "yes") {
23008
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23009
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23010
													frmDisplay.setHidden(false);
23011
													frmForm.setHidden(true);
23012
												}
23013
											});
23014
										}
23015
									}
23016
								]
23017
							}
23018
						]
23019
					});
23020
				}
23021
			});
23022
		}
23023
		Ext.applyIf(me, {
23024
			items: _items
23025
		});
23026
		me.callParent(arguments);
23027
	}
23028
});
(2-2/3)