Project

General

Profile

Feature #2597 » MinovaXtype.js

Tri Rizqiaty, 02/20/2024 10:09 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
				typeselect:'undefined',
881
                //modal: true,
882
                listeners: {					
883
                    'beforeshow': function (g) {
884
						if(tableName == 'PDSEMP0002') //add by Tri nwh 20230202 untuk appraisalid PMS
885
						{ 
886
						}else if(tableName == 'PDSWFCUSTITEMID'){
887
							var activeform =''
888
							if(Ext.ComponentQuery.query('[name=addwbs]')[0]!= undefined){
889
								activeform =Ext.ComponentQuery.query('[name=addwbs]')[0];
890
							}
891
							if(Ext.ComponentQuery.query('[name=addwbsbelow]')[0]!= undefined){
892
								activeform =Ext.ComponentQuery.query('[name=addwbsbelow]')[0];
893
							}
894
							if(Ext.ComponentQuery.query('[name=editwbs]')[0]!= undefined){
895
								activeform =Ext.ComponentQuery.query('[name=editwbs]')[0];
896
							}
897
							
898
							var itemid = activeform.getForm().findField('ItemType').getValue();
899
							if(itemid=='0'){
900
								this.typeselect='0';
901
							}
902
							else if(itemid=='1'){
903
								this.typeselect='1';
904
							}
905
							else if(itemid=='2'){
906
								this.typeselect='2';
907
							}else{}
908
						}else
909
						{
910
							pnl.mask('Loading...');
911
							setTimeout(function () {
912
								pnl.unmask();
913
							}, 100);
914
						}
915
                    }
916
                },
917
                items: [{
918
                    xtype: 'minovaform',
919
                    bodyBorder: false,
920
                    MaxHeigth: '100',
921
                    cls: 'borderLookup',
922
                    border: false,
923
                    MaxHeigth: '30',
924
                    scroll: true,
925
                    isLookup: true,
926
                    name: "formLookupFilter",
927
                    tableName: this.tableName,
928
					tableselection:undefined,
929
                    buttons: [{
930
                        text: 'Search',
931
                        //iconCls : 'fa-edit',
932
                        //style : 'font-family: FontAwesome',
933
                        handler: function () {
934

    
935
                            var store = Ext.data.StoreManager.lookup('lookupStore');
936
                            var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
937
                            grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
938
                            var values_ = form.getValues();
939
                            var fields_ = form.getFields().items;
940
                            var param_ = '';
941
                            for (var i = 0; i < fields_.length; i++) {
942
                                var val_ = form.getFields().items[i].getValue();
943
                                var xtype_ = form.getFields().items[i].xtype;
944
                                var oprator_ = '[like]';
945
                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
946
                                    oprator_ = '[Equal]';
947
                                }
948
                                if (xtype_ == 'datefield') {
949
                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
950
                                        oprator_ = '[LessThanEqual]';
951
                                    } else {
952
                                        oprator_ = '[GreaterThanEqual]';
953
                                    }
954
                                }
955
                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
956
                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
957
                                }
958
                            }
959

    
960
                            if (SearchFunction_ != undefined && SearchFunction_ != "") {
961
                                eval(SearchFunction_);
962
                            } else {
963
								if(grid.tableName=='PDSWFCUSTITEMID'){
964
									
965
									var columns = Ext.ComponentQuery.query('[name=gridLookup]')[0].getView().headerCt.getGridColumns();
966
									var typeselect = Ext.ComponentQuery.query('[name=lookupMain]')[0].typeselect;
967
									var mytablename='';
968
									if(typeselect=='0'){
969
										mytablename='PMDMAT0001';
970
										Ext.each(columns, function (col) {           
971
											if ( col.text== "Code") {
972
												col.text="Material ID";
973
											}  
974
											if ( col.text== "Desc") {
975
												col.text="Description";
976
											} 		
977
											if ( col.dataIndex== "Code") {
978
												col.dataIndex="MaterialID";
979
											}  
980
											if ( col.dataIndex== "Desc") {
981
												col.dataIndex="Description";
982
											} 											
983
										});										
984
									}
985
									if(typeselect=='1'){
986
										mytablename='PMDSRV0001';
987
										Ext.each(columns, function (col) {           
988
											if ( col.text== "Code") {
989
												col.text="Service ID";
990
											}  
991
											if ( col.text== "Desc") {
992
												col.text="Description";
993
											} 
994
											if ( col.dataIndex== "Code") {
995
												col.dataIndex="ServiceID";
996
											}  
997
											if ( col.dataIndex== "Desc") {
998
												col.dataIndex="Description";
999
											} 													
1000
										});											
1001
									}
1002
									if (typeselect=='2'){
1003
										mytablename='PMDAST0001';
1004
										Ext.each(columns, function (col) {           
1005
											if ( col.text== "Code") {
1006
												col.text="Asset Code";
1007
											}  
1008
											if ( col.text== "Asset Name") {
1009
												col.text="Description";
1010
											} 
1011
											if ( col.dataIndex== "Code") {
1012
												col.dataIndex="AssetCode";
1013
											}  
1014
											if ( col.dataIndex== "Desc") {
1015
												col.dataIndex="AssetName";
1016
											} 											
1017
										});											
1018
									}									
1019
									
1020
									store.proxy.extraParams = {
1021
										tableName: mytablename,
1022
										param: param_,
1023
										menuId: MinovaUtil.GetMenuID()
1024
									};											
1025
								}else{									
1026
									store.proxy.extraParams = {
1027
										tableName: grid.tableName,
1028
										param: param_,
1029
										menuId: MinovaUtil.GetMenuID()
1030
									};									
1031
								}
1032

    
1033
                            }
1034
                            store.removeAll();
1035
                            store.reload();
1036
                            store.loadPage(1);
1037
                        }
1038

    
1039
                    }
1040
                    ],
1041
                }, {
1042
                    xtype: 'minovagrid2',
1043
                    isLookup: true,
1044
                    autoLoad: false,
1045
                    minHeight: 240,
1046
                    height: 340,
1047
                    tableName: this.tableName,
1048
                    param: '',
1049
                    //name: 'gridForm' + this.tableName,
1050
                    name: 'gridLookup',
1051
                    hidebutton: 0,
1052
                    pagesize: 25,
1053
                    storename: 'lookupStore',
1054
                    fieldGrid: fieldGrid_,
1055
                    listeners: {
1056
                        itemdblclick: function (g) {
1057
                            var LookupFunction = LookupFunction_;
1058

    
1059
                            var me = this;
1060
                            var selection = this.getView().getSelectionModel().getSelection()[0];
1061
                            var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
1062
                            var name_ = 'form[name=' + formtarget_ + ']';
1063
                            if (pnlMain) {
1064
                                name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
1065
                            }
1066

    
1067
                            var formM = Ext.ComponentQuery.query(name_)[0];
1068
                            var form_ = null;
1069
                            if (!formM) {
1070
                                form_ = Ext.ComponentQuery.query('[name=MinovaGridFormEdit]')[0].getForm();
1071
                            } else {
1072
                                form_ = formM.getForm();
1073
                            }
1074
                            var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
1075
                            var targetField = mainLookup.fieldTarget;
1076
                            if (mainLookup.isGrid) {
1077
                                var b = Ext.ComponentQuery.query('[fieldGrid=' + me.fieldGrid + ']')[0];
1078
                                if (b) {
1079
                                    b.setValue(eval('selection.data.' + me.fieldGrid));
1080
                                }
1081
                                if (targetField) {
1082
                                    targetField = targetField.split('$')
1083
                                    var dt = targetField[0].split(',');
1084
                                    var fieldValue = targetField[1].split(',');
1085
                                    if (fieldValue.length > 0) {
1086
                                        for (i in dt) {
1087
                                            field_ = dt[i];
1088
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1089
                                        }
1090
                                    } else {
1091
                                        for (i in dt) {
1092
                                            field_ = dt[i];
1093
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1094
                                        }
1095
                                    }
1096

    
1097
                                }
1098
                            } else { // untuk form
1099
                                if (targetField) {
1100
                                    var dt = targetField.split(',');
1101
                                    var fieldValue = mainLookup.fieldValue.split(',');
1102
                                    if (fieldValue.length > 0) {
1103
                                        for (i in dt) {
1104
                                            field_ = dt[i];
1105
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1106
                                        }
1107
                                    } else {
1108
                                        for (i in dt) {
1109
                                            field_ = dt[i];
1110
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1111
                                        }
1112
                                    }
1113
                                } else {
1114
					
1115
                                    form_.setValues(selection.data);
1116
									if(me.tableName=='PDSWFCUSTITEMID'){
1117
										var activeform =''
1118
										if(Ext.ComponentQuery.query('[name=addwbs]')[0]!= undefined){
1119
											activeform =Ext.ComponentQuery.query('[name=addwbs]')[0];
1120
										}
1121
										if(Ext.ComponentQuery.query('[name=addwbsbelow]')[0]!= undefined){
1122
											activeform =Ext.ComponentQuery.query('[name=addwbsbelow]')[0];
1123
										}
1124
										if(Ext.ComponentQuery.query('[name=editwbs]')[0]!= undefined){
1125
											activeform =Ext.ComponentQuery.query('[name=editwbs]')[0];
1126
										}									
1127
										var itemid = activeform.getForm().findField('ItemType').getValue();	
1128
										
1129
										if(itemid=='0'){
1130
											form_.findField('DocItemID').setValue(selection.data.MaterialID);
1131
										}
1132
										else if(itemid=='1'){
1133
											form_.findField('DocItemID').setValue(selection.data.ServiceID);
1134
										}
1135
										else if(itemid=='2'){
1136
											form_.findField('DocItemID').setValue(selection.data.AssetCode);
1137
										}else{}	
1138
									}
1139
                                }
1140
                            }
1141
                            eval(LookupFunction);
1142
                            mainLookup.destroy();
1143
                        },
1144
                        beforeedit: function (grid) {
1145
                            return false;
1146
                        }
1147
                    },
1148
                    dockedItems: [{
1149
                        xtype: 'pagingtoolbar',
1150
                        store: 'lookupStore',
1151
                        dock: 'bottom',
1152
                        pageSize: 25,
1153
                        displayInfo: true
1154
                    }
1155
                    ]
1156

    
1157
                }, ]
1158
            }).show();
1159
        }
1160
        //Ext.create('Ext.window.Window', {
1161
        //    title: 'Lookup - ' + this.fieldLabel,
1162
        //    height: 530,
1163
        //    width: 500,
1164
        //    fieldTarget: fieldTarget_,
1165
        //    fieldValue: fieldValue_,
1166
        //    isGrid: isGrid_,
1167
        //    name: 'lookupMain',
1168
        //    //modal: true,
1169
        //    listeners: {
1170
        //        'beforeshow': function (g) {
1171
        //            pnl.mask('Loading...');
1172
        //            setTimeout(function () {
1173
        //                pnl.unmask();
1174
        //            }, 100);
1175
        //        }
1176
        //    },
1177
        //    items: [{
1178
        //        xtype: 'minovaform',
1179
        //        bodyBorder: false,
1180
        //        MaxHeigth: '100',
1181
        //        cls: 'borderLookup',
1182
        //        border: false,
1183
        //        MaxHeigth: '30',
1184
        //        scroll: true,
1185
        //        isLookup: true,
1186
        //        name: "formLookupFilter",
1187
        //        tableName: this.tableName,
1188
        //        buttons: [{
1189
        //            text: 'Search',
1190
        //            //iconCls : 'fa-edit',
1191
        //            //style : 'font-family: FontAwesome',
1192
        //            handler: function () {
1193
        //                var store = Ext.data.StoreManager.lookup('lookupStore');
1194
        //                var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
1195
        //                grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
1196
        //                var values_ = form.getValues();
1197
        //                var fields_ = form.getFields().items;
1198
        //                var param_ = '';
1199
        //                for (var i = 0; i < fields_.length; i++) {
1200
        //                    var val_ = form.getFields().items[i].getValue();
1201
        //                    var xtype_ = form.getFields().items[i].xtype;
1202
        //                    var oprator_ = '[like]';
1203
        //                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1204
        //                        oprator_ = '[Equal]';
1205
        //                    }
1206
        //                    if (xtype_ == 'datefield') {
1207
        //                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1208
        //                            oprator_ = '[LessThanEqual]';
1209
        //                        } else {
1210
        //                            oprator_ = '[GreaterThanEqual]';
1211
        //                        }
1212
        //                    }
1213
        //                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
1214
        //                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1215
        //                    }
1216
        //                }
1217
        //                store.proxy.extraParams = {
1218
        //                    tableName: grid.tableName,
1219
        //                    param: param_
1220
        //                };
1221
        //                store.removeAll();
1222
        //                store.reload();
1223
        //                store.loadPage(1);
1224
        //            }
1225

    
1226
        //        }
1227
        //        ],
1228
        //    }, {
1229
        //        xtype: 'minovagrid1',
1230
        //        isLookup: true,
1231
        //        autoLoad: false,
1232
        //        minHeight: 280,
1233
        //        height: 380,
1234
        //        tableName: this.tableName,
1235
        //        param: '',
1236
        //        //name: 'gridForm' + this.tableName,
1237
        //        name: 'gridLookup',
1238
        //        hidebutton: 0,
1239
        //        pagesize: 25,
1240
        //        storename: 'lookupStore',
1241
        //        listeners: {
1242
        //            itemdblclick: function (g) {
1243
        //                var me = this;
1244
        //                var selection = this.getView().getSelectionModel().getSelection()[0];
1245
        //                var name_ = 'form[name=' + formtarget_ + ']';
1246
        //                var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
1247
        //                var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
1248
        //                var targetField = mainLookup.fieldTarget;
1249
        //                if (mainLookup.isGrid) {
1250
        //                    if (targetField) {
1251
        //                        targetField = targetField.split('$')
1252
        //                        var dt = targetField[0].split(',');
1253
        //                        var fieldValue = targetField[1].split(',');
1254
        //                        if (fieldValue.length > 0) {
1255
        //                            for (i in dt) {
1256
        //                                field_ = dt[i];
1257
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1258
        //                            }
1259
        //                        } else {
1260
        //                            for (i in dt) {
1261
        //                                field_ = dt[i];
1262
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1263
        //                            }
1264
        //                        }
1265

    
1266

    
1267
        //                    }
1268
        //                }
1269
        //                else {// untuk form
1270
        //                    if (targetField) {
1271
        //                        var dt = targetField.split(',');
1272
        //                        var fieldValue = mainLookup.fieldValue.split(',');
1273
        //                        if (fieldValue.length > 0) {
1274
        //                            for (i in dt) {
1275
        //                                field_ = dt[i];
1276
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1277
        //                            }
1278
        //                        } else {
1279
        //                            for (i in dt) {
1280
        //                                field_ = dt[i];
1281
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1282
        //                            }
1283
        //                        }
1284
        //                    }
1285
        //                    else {
1286
        //                        form_.setValues(selection.data);
1287
        //                    }
1288
        //                }
1289

    
1290
        //                mainLookup.destroy();
1291
        //            },
1292
        //            beforeedit: function (grid) {
1293
        //                return false;
1294
        //            }
1295
        //        },
1296
        //        dockedItems: [{
1297
        //            xtype: 'pagingtoolbar',
1298
        //            store: 'lookupStore',
1299
        //            dock: 'bottom',
1300
        //            pageSize: 25,
1301
        //            displayInfo: true
1302
        //        }
1303
        //        ]
1304

    
1305
        //    }, ]
1306
        //}).show();
1307

    
1308
    },
1309
});
1310
Ext.define('MinovaUtil.MinovaES.MinovaComboDisplay', {
1311
    extend: 'Ext.form.field.Display',
1312
    alias: ['widget.minovacombodisplay'],
1313
    initComponent: function () {
1314
        this.callParent(arguments);
1315
    },
1316

    
1317
    defaultRenderer: function (value) {
1318
        if (typeof(this.store) !== 'object') {
1319
            this.store = Ext.data.StoreManager.lookup(this.store);
1320
        }
1321
        var idx = this.store.findExact(this.valueField, value);
1322
        if (this.store.getAt(idx)) {
1323
            var result = this.store.getAt(idx).get(this.displayField);
1324
            value = result ? result : value;
1325
        }
1326
        this.setRawValue(value);
1327

    
1328
    }
1329
});
1330
Ext.define('MinovaUtil.MinovaES.DisplayDate', {
1331
    extend: 'Ext.form.field.Display',
1332
    alias: ['widget.minovadisplaydate'],
1333
    undefinedText: '&#160;',
1334
    setValue: function (v) {
1335
        var value = v;
1336
        if (value === undefined) {
1337
            return this.undefinedText;
1338
        }
1339
        if (value === null) {
1340
            return this.setRawValue(null);
1341
        }
1342
        var d = value.substring(6, 8);
1343
        var m = value.substring(4, 6);
1344
        var y = value.substring(0, 4);
1345

    
1346
        var hasil = d + '/' + m + '/' + y;
1347
        //this.setRawValue(hasil);
1348
        this.setValue(hasil);
1349
    },
1350
    getRawValue: function () {
1351
        return this.getValue();
1352
    },
1353
    getValue: function () {
1354
        var value = this.rawValue;
1355
        var hasil = null;
1356
        if (value != undefined) {
1357
            var d = value.substring(0, 2);
1358
            var m = value.substring(3, 5);
1359
            var y = value.substring(6, 10);
1360

    
1361
            hasil = y + m + d;
1362
        }
1363
        return hasil;
1364
    }
1365
});
1366
Ext.define('MinovaUtil.MinovaES.DisplaySysDateTime', {
1367
    extend: 'Ext.form.field.Display',
1368
    alias: ['widget.minovadisplaysysdatetime'],
1369
    undefinedText: '&#160;',
1370
    //hamid
1371
    listeners: {
1372
        change: function (f) {
1373
            var field = f.getValue()
1374
            var value = field;
1375
            if (value === "" || value === undefined) {
1376
                return this.setRawValue("");
1377
            } else {
1378
                var d = value.substring(6, 8);
1379
                var m = value.substring(4, 6);
1380
                var y = value.substring(0, 4);
1381
                var h = value.substring(8, 10);
1382
                var mt = value.substring(10, 12);
1383
                var s = value.substring(12, 14);
1384
                var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
1385

    
1386
            }
1387

    
1388
            f.setRawValue(hasil)
1389
        },
1390
    },
1391
    //end
1392

    
1393
});
1394
Ext.define('MinovaUtil.MinovaES.MinovaButton', {
1395
    extend: 'Ext.button.Button',
1396
    alias: ['widget.minovabutton', 'widget.MinovaButton'],
1397
    nextid: undefined,
1398
    parid: undefined,
1399
    page: undefined,
1400
    start: undefined,
1401
    limit: 1,
1402
    setStart: function (value) {
1403
        var me = this;
1404
        me.start = value;
1405
        return me;
1406
    },
1407
    getStart: function () {
1408
        return this.start;
1409
    },
1410
    setNextid: function (value) {
1411
        var me = this;
1412
        me.nextid = value;
1413
        return me;
1414
    },
1415
    getNextid: function () {
1416
        return this.nextid;
1417
    },
1418
    setParid: function (value) {
1419
        var me = this;
1420
        me.parid = value;
1421
        return me;
1422
    },
1423
    getParid: function () {
1424
        return this.parid;
1425
    },
1426
    anchor: '50%',
1427
    initComponent: function () {
1428
        var me = this;
1429
        Ext.applyIf(me, {});
1430
        me.callParent(arguments);
1431
    }
1432
});
1433
Ext.define('MinovaUtil.MinovaES.MinovaComboBox', {
1434
    extend: 'Ext.form.field.ComboBox',
1435
    alias: ['widget.minovacombobox', 'widget.minovacombo'],
1436
    tableName: undefined,
1437
    param: undefined,
1438
	anyMatch: true,
1439
    anchor: '50%',
1440
    queryMode: 'local',
1441
    forceSelection: true, // cek data
1442
    initComponent: function () {
1443
        var me = this;
1444
        Ext.applyIf(me, {
1445

    
1446
            store: Ext.create('Ext.data.Store', {
1447
                storeId: 'store' + me.name,
1448
                autoLoad: true,
1449
                proxy: {
1450
                    method: 'POST',
1451
                    type: 'ajax',
1452
                    url: '/UserControl/GetStoreAuth',
1453
                    extraParams: {
1454
                        tableName: me.tableName,
1455
                        param: me.param,
1456
                        menuId: MinovaUtil.GetMenuID()
1457
                    },
1458
                    reader: {
1459
                        type: 'json',
1460
                        root: 'data'
1461
                    }
1462
                }
1463
            })
1464
        });
1465
        me.callParent(arguments);
1466
    }
1467
});
1468

    
1469
Ext.define('MinovaUtil.MinovaES.MinovaComboBoxTpl', {
1470
    extend: 'Ext.form.field.ComboBox',
1471
    alias: ['widget.minovacomboboxtpl', 'widget.minovacombotpl'],
1472
    tableName: undefined,
1473
    param: undefined,
1474
    dis1: undefined,
1475
    dis2: undefined,
1476
    anchor: '50%',
1477
    queryMode: 'local',
1478
    forceSelection: true,
1479
    tpl: Ext.create('Ext.XTemplate',
1480
		'<tpl for=".">',
1481
		'<div class="x-boundlist-item">' + this.dis1 + '</div>',
1482
		'</tpl>'),
1483
    displayTpl: Ext.create('Ext.XTemplate',
1484
		'<tpl for=".">',
1485
		+this.dis1,
1486
		'</tpl>'),
1487
    initComponent: function () {
1488
        var me = this;
1489
        Ext.applyIf(me, {
1490
            store: Ext.create('Ext.data.Store', {
1491
                storeId: 'store' + me.name,
1492
                autoLoad: true,
1493
                proxy: {
1494
                    method: 'POST',
1495
                    type: 'ajax',
1496
                    url: '/UserControl/GetStore',
1497
                    extraParams: {
1498
                        tableName: me.tableName,
1499
                        param: me.param
1500
                    },
1501
                    reader: {
1502
                        type: 'json',
1503
                        root: 'data'
1504
                    }
1505
                }
1506
            })
1507
        });
1508
        me.callParent(arguments);
1509
    }
1510
});
1511
Ext.define('MinovaUtil.MinovaES.MinovaMultiComboBox', {
1512
    extend: 'Ext.form.field.ComboBox',
1513
    alias: ['widget.minovamulticombobox', 'widget.minovamulticombo'],
1514
    tableName: undefined,
1515
    param: undefined,
1516
    anchor: '50%',
1517
    queryMode: 'local',
1518
    forceSelection: true, // cek data
1519
    multiSelect: true,
1520
    getValue: function () {
1521
        var hasil = null;
1522
        var val = this.value;
1523
        if (val != undefined) {
1524
            hasil = val.toString();
1525
        }
1526
        return hasil;
1527
    },
1528
    initComponent: function () {
1529
        var me = this;
1530
        Ext.applyIf(me, {
1531
            store: Ext.create('Ext.data.Store', {
1532
                storeId: 'store' + me.name,
1533
                autoLoad: true,
1534
                proxy: {
1535
                    method: 'POST',
1536
                    type: 'ajax',
1537
                    url: '/UserControl/GetStore',
1538
                    extraParams: {
1539
                        tableName: me.tableName,
1540
                        param: me.param
1541
                    },
1542
                    reader: {
1543
                        type: 'json',
1544
                        root: 'data'
1545
                    }
1546
                }
1547
            })
1548
        });
1549
        me.callParent(arguments);
1550
    }
1551
});
1552
Ext.define('Ext.ux.MinovaLookupGrid1', {
1553
    extend: 'Ext.form.field.Trigger',
1554
    alias: 'widget.minovalookupgrid1',
1555
    tableName: undefined,
1556
    param: undefined,
1557
    formtarget_: this.formtarget,
1558
    anchor: '50%',
1559
    pagesize: undefined,
1560
    initComponent: function () {
1561
        var target = this.formtarget;
1562
        this.callParent();
1563
    },
1564
    onTriggerClick: function () {
1565
        var count_lookup = Ext.ComponentQuery.query('[name=mainLookup]').length;
1566
        if (count_lookup == 1) {
1567
            Ext.ComponentQuery.query('[name=mainLookup]')[0].show();
1568
        } else {
1569
            var target_ = this.formtarget;
1570
            var fieldtarget = this.name;
1571
            var pagesize_ = this.pagesize;
1572
            if (pagesize_ == undefined) {
1573
                pagesize_ = 25;
1574
            }
1575
            var mainLookup = Ext.create('Ext.window.Window', {
1576
                name: 'mainLookup',
1577
                width: 500,
1578
                heigth: 300,
1579
                maxHeigth: 300,
1580
                minWidth: 400,
1581
                scroll: true,
1582
                modal: true,
1583
                title: 'Lookup - ' + this.fieldLabel,
1584
                items: [{
1585
                    xtype: 'form',
1586
                    collapsible: false,
1587
                    items: [{
1588
                        xtype: 'form',
1589
                        //width: '90%',
1590
                        name: 'formFilter',
1591
                        layout: 'column',
1592
                        dockedItems: [{
1593
                            xtype: 'toolbar',
1594
                            dock: 'bottom',
1595
                            items: [{
1596
                                xtype: 'tbfill'
1597
                            }, {
1598
                                text: 'Search',
1599
                                scope: this,
1600
                                handler: function () {
1601
                                    var store = Ext.data.StoreManager.lookup('lookupStore');
1602
                                    var form = Ext.ComponentQuery.query('[name=formFilter]')[0].getForm();
1603
                                    var values_ = form.getValues();
1604
                                    var fields_ = form.getFields().items;
1605
                                    var param_ = '';
1606
                                    for (var i = 0; i < fields_.length; i++) {
1607
                                        var val_ = form.getFields().items[i].getValue();
1608
                                        var xtype_ = form.getFields().items[i].xtype;
1609
                                        var oprator_ = '[like]';
1610
                                        if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1611
                                            oprator_ = '[Equal]';
1612
                                        }
1613
                                        if (xtype_ == 'datefield') {
1614
                                            if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1615
                                                oprator_ = '[LessThanEqual]';
1616
                                            } else {
1617
                                                oprator_ = '[GreaterThanEqual]';
1618
                                            }
1619
                                        }
1620
                                        if (val_ != 'undefined' && val_ != "") {
1621
                                            param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1622
                                        }
1623
                                    }
1624
                                    store.proxy.extraParams = {
1625
                                        tableName: this.tableName,
1626
                                        param: param_
1627
                                    };
1628
                                    store.removeAll();
1629
                                    store.reload();
1630
                                    store.loadPage(1);
1631
                                }
1632
                            }, ]
1633
                        }
1634
                        ],
1635
                        defaults: {
1636
                            xtype: 'container',
1637
                            defaultType: 'textfield',
1638
                            style: 'width: 50%'
1639
                        },
1640
                        items: [{
1641
                            xtype: 'minovaform',
1642
                            bodyBorder: false,
1643
                            cls: 'borderLookup',
1644
                            border: false,
1645
                            MaxHeigth: '30',
1646
                            scroll: true,
1647
                            isLookup: 1,
1648
                            name: "formLookupFilter",
1649
                            tableName: this.tableName,
1650
                        }
1651
                        ],
1652
                    }
1653
                    ]
1654
                }, {
1655
                    xtype: 'form',
1656
                    name: 'formResult',
1657
                    title: 'Result',
1658
                    collapsible: true,
1659
                    items: [{
1660
                        xtype: "minovagrid",
1661
                        name: "lookupgrid",
1662
                        tableName: this.tableName,
1663
                        param: '',
1664
                        pagesize: pagesize_,
1665
                        storename: 'lookupStore',
1666
                        isLookup: 1,
1667
                        border: false,
1668
                        minHeight: 300,
1669
                        maxHeight: 500,
1670
                        height: 100,
1671
                        columnLines: true,
1672
                        scrollable: true,
1673
                        listeners: {
1674
                            itemdblclick: function (formtarget_) {
1675
                                var me = this;
1676
                                var selection = this.getView().getSelectionModel().getSelection()[0];
1677
                                if (target_ == null || target_ == undefined) {
1678
                                    var formtarget_ = '[name=' + fieldtarget + ']';
1679
                                    var form_ = Ext.ComponentQuery.query(formtarget_)[0];
1680
                                } else {
1681
                                    var formtarget_ = 'form[name=' + target_ + ']';
1682
                                    var form_ = Ext.ComponentQuery.query(formtarget_)[0].getForm();
1683
                                    form_.setValues(selection.data)
1684
                                }
1685
                                mainLookup.hide();
1686
                            },
1687
                            beforeedit: function (grid) {
1688
                                return false;
1689
                            }
1690
                        },
1691
                        dockedItems: [{
1692
                            xtype: 'pagingtoolbar',
1693
                            store: 'lookupStore',
1694
                            dock: 'bottom',
1695
                            pageSize: pagesize_,
1696
                            displayInfo: true
1697
                        }
1698
                        ],
1699
                    }
1700
                    ]
1701
                }
1702
                ]
1703
            }).show();
1704
        }
1705
    },
1706
});
1707
Ext.define('Ext.ux.MinovaLookupTree', {
1708
    extend: 'Ext.form.field.Trigger',
1709
    alias: 'widget.minovalookuptree',
1710
    tableName: undefined,
1711
    param: undefined,
1712
    onTriggerClick: function () {}
1713

    
1714
});
1715
Ext.define('Ext.ux.MinovaLookupFile', {
1716
    extend: 'Ext.form.field.Trigger',
1717
    alias: 'widget.minovalookupfile',
1718
    tableName: undefined,
1719
    param: undefined,
1720
    onTriggerClick: function () {}
1721

    
1722
});
1723

    
1724
Ext.define('MinovaUtil.MinovaES.MinovaGrid1', {
1725
    extend: 'Ext.grid.Panel',
1726
    requires: ['Ext.grid.RowNumberer'],
1727
    alias: 'widget.minovagrid1',
1728
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
1729
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
1730
    alternateClassName: 'Ext.grid.MinovaGrid',
1731
    //controller:'orm-manage2-controller',
1732
    tableName: undefined,
1733
    isLookup: undefined,
1734
    param: undefined,
1735
    pagesize: undefined,
1736
    storename: undefined,
1737
    layoutType: undefined,
1738
    enableLocking: true,
1739
    autoLoad: undefined,
1740
    multiSelect: undefined,
1741
    getTableName: function () {
1742
        return this.tableName;
1743
    },
1744

    
1745
    initComponent: function () {
1746
        var me = this;
1747
        var cols_ = [];
1748
        var fieldeditor = {};
1749
        var hasil = null;
1750
        var autoLoad = true;
1751
        var LangID = localStorage.LangId;
1752
        var fielGrid = 'rec.GridView == 1';
1753
        var locking = true;
1754
        var checkSelection = '';
1755
        var widthLock = 250;
1756
        if (me.multiSelect) {
1757
            locking = false;
1758
            checkSelection = 'checkboxmodel';
1759
            widthLock = 40;
1760
        }
1761
        //var _url = 'GetAllField';
1762
        if (me.autoLoad == false) {
1763
            autoLoad = false;
1764
        }
1765
        parameter = null;
1766
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1767
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
1768
            fielGrid = 'rec.LookupGrid == 1';
1769
            locking = false;
1770

    
1771
        } else {
1772
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
1773
            //autoLoad = false;
1774
            //_url = 'GetAllFieldGridLookUp';
1775
        };
1776

    
1777
        //Ext.Ajax.request({
1778
        //	async : false,
1779
        //	method : 'POST',
1780
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
1781
        //	success : function (response) {
1782
        //		var results = Ext.decode(response.responseText);
1783
        //		hasil = results.data;
1784
        //	}
1785
        //});
1786
        //hamid03102016
1787

    
1788
        Ext.Ajax.request({
1789
            async: false,
1790
            method: 'POST',
1791
            url: '/UserControl/GetStore',
1792
            params: {
1793
                tableName: 'PDSBS0007',
1794
                param: parameter
1795
            },
1796
            success: function (response) {
1797
                var results = Ext.decode(response.responseText);
1798
                hasil = results.data;
1799
            }
1800
        });
1801
        //end
1802

    
1803
        if (hasil.length > 0) {
1804

    
1805
            Ext.each(hasil, function (rec) {
1806
                var null_ = null;
1807
                if (rec.IsPrimaryKey == true) {
1808
                    null_ = false;
1809
                }
1810
                if (rec.IsRequired == true) {
1811
                    null_ = false;
1812
                } else {
1813
                    null_ = true;
1814
                }
1815
				var ReadOnly_ = false;
1816
				if (rec.ReadOnly == '1') {
1817
					ReadOnly_ = true;
1818
				}
1819
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1820
                    if (rec.LookupGrid == 1) {
1821
                        switch (rec.FormatRef) {
1822
                            case "file":
1823
                                cols_.push({
1824
                                    xtype: 'minovapicturecolumn',
1825
                                    text: rec.HeaderTitle,
1826
                                    dataIndex: rec.FieldName,
1827
                                    width: 100,
1828
                                    //filter: {
1829
                                    //    type: 'image',
1830
                                    //    itemDefaults: {
1831
                                    //        emptyText: 'Search for...'
1832
                                    //    }
1833
                                    //}
1834
                                });
1835
                                break
1836
                            case "date":
1837
                                cols_.push({
1838
                                    xtype: 'minovadatecolumn',
1839
                                    text: rec.HeaderTitle,
1840
                                    dataIndex: rec.FieldName,
1841
                                    width: 100,
1842
                                    filter: {
1843
                                        type: 'date',
1844
                                        itemDefaults: {
1845
                                            emptyText: 'Search for...'
1846
                                        }
1847
                                    }
1848
                                });
1849
                                break
1850
                            case "amount":
1851
                                cols_.push({
1852
                                    xtype: 'minovacurrancycolumn',
1853
                                    text: rec.HeaderTitle,
1854
                                    dataIndex: rec.FieldName,
1855
                                    align: 'right',
1856
                                    width: 300,
1857
                                    filter: {
1858
                                        type: 'number',
1859
                                        itemDefaults: {
1860
                                            emptyText: 'Search for...'
1861
                                        }
1862
                                    }
1863
                                });
1864
                                break
1865
                            case "amountencrypt":
1866
                                cols_.push({
1867
                                    xtype: 'minovaamountcolumn',
1868
                                    text: rec.HeaderTitle,
1869
                                    dataIndex: rec.FieldName,
1870
                                    align: 'right',
1871
                                    width: 300,
1872
                                    filter: {
1873
                                        type: 'string',
1874
                                        itemDefaults: {
1875
                                            emptyText: 'Search for...'
1876
                                        }
1877
                                    }
1878
                                });
1879
                                break
1880
                            case "datetime":
1881
                                cols_.push({
1882
                                    xtype: 'minovadatetimecolumn',
1883
                                    text: rec.HeaderTitle,
1884
                                    dataIndex: rec.FieldName,
1885
                                    width: 140,
1886
                                    filter: {
1887
                                        type: 'string',
1888
                                        itemDefaults: {
1889
                                            emptyText: 'Search for...'
1890
                                        }
1891
                                    }
1892
                                });
1893
                                break
1894
                            default:
1895
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
1896
                                    cols_.push({
1897
                                        text: rec.HeaderTitle,
1898
                                        dataIndex: rec.FieldName,
1899
                                        width: 100,
1900
                                        filter: {
1901
                                            type: 'string',
1902
                                            itemDefaults: {
1903
                                                emptyText: 'Search for...'
1904
                                            }
1905
                                        }
1906
                                    });
1907
                                } else if (rec.SearchType == '2') {
1908
                                    cols_.push({
1909
                                        xtype: 'minovalookupcolumn',
1910
                                        text: rec.HeaderTitle,
1911
                                        tableName: rec.TableRef,
1912
                                        dataIndex: rec.FieldName,
1913
                                        filter: {
1914
                                            itemDefaults: {
1915
                                                emptyText: 'Search for...'
1916
                                            }
1917
                                        }
1918
                                    });
1919
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
1920
                                    if (rec.TableRef != null) {
1921
                                        var valueField = null;
1922
                                        var displayValue = null;
1923
                                        Ext.Ajax.request({
1924
                                            async: false,
1925
                                            method: 'POST',
1926
                                            url: '/UserControl/GetStore',
1927
                                            params: {
1928
                                                tableName: 'SDATATABLEFIELD',
1929
                                                param: 'TableName[equal]' + rec.TableRef
1930
                                            },
1931
                                            success: function (response) {
1932
                                                var results = Ext.decode(response.responseText);
1933
                                                data_ = results.data;
1934
                                                if (data_ != undefined) {
1935
                                                    valueField_ = $.grep(data_, function (r) {
1936
                                                        return r.ValueField == '1'
1937
                                                    });
1938
                                                    valueField = valueField_[0].FieldName
1939
                                                    displayValue_ = $.grep(data_, function (r) {
1940
                                                        return r.DisplayValue == '1'
1941
                                                    });
1942
                                                    displayValue = displayValue_[0].FieldName
1943
                                                }
1944
                                            }
1945
                                        });
1946
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
1947
                                        var count_ = 0;
1948
                                        if (store_) {
1949
                                            count_ = store_.count();
1950
                                        }
1951
                                        if (count_ == 0) {
1952
                                            Ext.create('Ext.data.Store', {
1953
                                                storeId: 'store_' + rec.FieldName,
1954
                                                //autoLoad: true,
1955
                                                proxy: {
1956
                                                    method: 'POST',
1957
                                                    type: 'ajax',
1958
                                                    url: '/UserControl/GetStore',
1959
                                                    extraParams: {
1960
                                                        tableName: rec.TableRef,
1961
                                                        param: rec.ParamCombo
1962
                                                    },
1963
                                                    reader: {
1964
                                                        type: 'json',
1965
                                                        root: 'data',
1966
                                                        totalProperty: 'data[0].TotalCount'
1967
                                                    }
1968
                                                }
1969
                                            })
1970
                                        }
1971
                                        cols_.push({
1972
                                            xtype: 'minovacombocolumn',
1973
                                            text: rec.HeaderTitle,
1974
                                            dataIndex: rec.FieldName,
1975
                                            valueField: valueField,
1976
                                            displayField: displayValue,
1977
                                            store: 'store_' + rec.FieldName,
1978
                                            filter: {
1979
                                                type: 'list',
1980
                                                itemDefaults: {
1981
                                                    emptyText: 'Search for...'
1982
                                                }
1983
                                            }
1984
                                        });
1985
                                    }
1986

    
1987
                                } else {
1988
                                    cols_.push({
1989
                                        text: rec.HeaderTitle,
1990
                                        dataIndex: rec.FieldName,
1991
                                        filter: {
1992
                                            itemDefaults: {
1993
                                                emptyText: 'Search for...'
1994
                                            }
1995
                                        }
1996
                                    });
1997
                                }
1998
                                break
1999
                        }
2000
                    } else {
2001
                        cols_.push({
2002
                            text: rec.HeaderTitle,
2003
                            dataIndex: rec.FieldName,
2004
                            hidden: true,
2005
                            filter: {
2006
                                itemDefaults: {
2007
                                    emptyText: 'Search for...'
2008
                                }
2009
                            }
2010
                        });
2011
                    }
2012

    
2013
                } else {
2014
                    if (rec.GridView == 1) {
2015
                        switch (rec.FormatRef) {
2016
                            case "Chart":
2017
                                    cols_.push({
2018
										text: rec.HeaderTitle,
2019
										dataIndex: rec.FieldName,
2020
										renderer: function (value, metadata, record) {
2021
											var sumscore = Ext.StoreMgr.lookup(metadata.record.store.storeId).sum('Score');      
2022
											var tmpValue = parseInt(record.data.Score)/parseInt(sumscore);
2023
											var tmpText = record.data.Score;
2024
											var progressRenderer = (function (pValue, pText) {
2025
												var b = new Ext.ProgressBar(
2026
													{
2027
														width: sumscore,
2028
													});
2029
												return function(pValue, pText) {
2030
													b.updateProgress(pValue, pText, true);
2031
													return Ext.DomHelper.markup(b.getRenderTree());
2032
												};
2033
											})(tmpValue, tmpText);
2034
											return progressRenderer(tmpValue, tmpText);
2035
										}
2036
          
2037
											// var color='';
2038
											
2039
											// if(parseInt(record.data.Score) <=10){
2040
												// color ='#f50202';
2041
											// }
2042
											// if(parseInt(record.data.Score) >10 && parseInt(record.data.Score) <=20){
2043
												// color ='#d4b90d';
2044
											// }											
2045
											// if(parseInt(record.data.Score) >20 && parseInt(record.data.Score) <=30){
2046
												// color ='#85bf19';
2047
											// }
2048
											// if(parseInt(record.data.Score) >30 && parseInt(record.data.Score) <=40){
2049
												// color ='#1ba11b';
2050
											// }
2051
											// if(parseInt(record.data.Score) >40 && parseInt(record.data.Score) <=50){
2052
												// color ='#13d15f';
2053
											// }
2054
											// if(parseInt(record.data.Score) >50 && parseInt(record.data.Score) <=60){
2055
												// color ='#13ed96';
2056
											// }
2057
											// if(parseInt(record.data.Score) >60 && parseInt(record.data.Score) <=70){
2058
												// color ='#0e8fc2';
2059
											// }
2060
											// if(parseInt(record.data.Score) >70 && parseInt(record.data.Score) <=80){
2061
												// color ='#0e3ec2';
2062
											// }
2063
											// if(parseInt(record.data.Score) >80 && parseInt(record.data.Score) <=90){
2064
												// color ='#590ec2';
2065
											// }
2066
											// if(parseInt(record.data.Score) >90 && parseInt(record.data.Score) <=100){
2067
												// color ='#a10ec2';
2068
											// }											
2069
                                        // metadata.tdStyle = 'font-family: FontAwesome;background-color: '+color+';width:'+ record.data.Score +'px !important;'
2070
										// }
2071
                                    });
2072
                                break							
2073
                            case "action":
2074
                                cols_.push({
2075
                                    text: rec.HeaderTitle,
2076
                                    width: 100,
2077
                                    xtype: 'actioncolumn',
2078
                                    tooltip: 'View Data',
2079
                                    name: rec.FieldName,
2080
                                    itemId: me.tableName + rec.FieldName,
2081
                                    align: 'center',
2082
                                    iconCls: 'fa-edit',
2083
                                    renderer: function (value, metadata, record) {
2084
                                        metadata.tdStyle = 'font-family: FontAwesome'
2085
                                    },
2086
                                    handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
2087

    
2088
                                        this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
2089
                                    }
2090
                                });
2091
                                break
2092
                            case "file":
2093
                                cols_.push({
2094
                                    xtype: 'minovapicturecolumn',
2095
                                    text: rec.HeaderTitle,
2096
                                    dataIndex: rec.FieldName,
2097
                                    width: 100,
2098
                                    //filter: {
2099
                                    //    type: '',
2100
                                    //    itemDefaults: {
2101
                                    //        emptyText: 'Search for...'
2102
                                    //    }
2103
                                    //}
2104
                                });
2105
                                break
2106
                            case "date":
2107
                                cols_.push({
2108
                                    xtype: 'minovadatecolumn',
2109
                                    text: rec.HeaderTitle,
2110
                                    dataIndex: rec.FieldName,
2111
                                    width: 100,
2112
                                    filter: {
2113
                                        type: 'date',
2114
                                        itemDefaults: {
2115
                                            emptyText: 'Search for...'
2116
                                        }
2117
                                    }
2118
                                });
2119
                                break
2120
                            case "amountencrypt":
2121
                                cols_.push({
2122
                                    xtype: 'minovaamountcolumn',
2123
                                    text: rec.HeaderTitle,
2124
                                    dataIndex: rec.FieldName,
2125
                                    align: 'right',
2126
                                    width: 300,
2127
                                    filter: {
2128
                                        type: 'string',
2129
                                        itemDefaults: {
2130
                                            emptyText: 'Search for...'
2131
                                        }
2132
                                    }
2133
                                });
2134
                                break
2135
                            case "amount":
2136
                                cols_.push({
2137
                                    xtype: 'minovacurrancycolumn',
2138
                                    text: rec.HeaderTitle,
2139
                                    dataIndex: rec.FieldName,
2140
                                    align: 'right',
2141
                                    width: 300,
2142
                                    filter: {
2143
                                        type: 'number',
2144
                                        itemDefaults: {
2145
                                            emptyText: 'Search for...'
2146
                                        }
2147
                                    }
2148
                                });
2149
                                break
2150
                            case "datetime":
2151
                                cols_.push({
2152
                                    xtype: 'minovadatetimecolumn',
2153
                                    text: rec.HeaderTitle,
2154
                                    dataIndex: rec.FieldName,
2155
                                    width: 140,
2156
                                    filter: {
2157
                                        type: 'string',
2158
                                        itemDefaults: {
2159
                                            emptyText: 'Search for...'
2160
                                        }
2161
                                    }
2162
                                });
2163
                                break
2164
                            default:
2165
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2166
                                    cols_.push({
2167
                                        text: rec.HeaderTitle,
2168
                                        dataIndex: rec.FieldName,
2169
                                        width: 100,
2170
                                        filter: {
2171
                                            type: 'string',
2172
                                            itemDefaults: {
2173
                                                emptyText: 'Search for...'
2174
                                            }
2175
                                        }
2176
                                    });
2177
                                } else if (rec.TableRef != "") {
2178
                                    if (rec.TableRef != null) {
2179
                                        var valueField = null;
2180
                                        var displayValue = null;
2181
                                        Ext.Ajax.request({
2182
                                            async: false,
2183
                                            method: 'POST',
2184
                                            url: '/UserControl/GetStore',
2185
                                            params: {
2186
                                                tableName: 'SDATATABLEFIELD',
2187
                                                param: 'TableName[equal]' + rec.TableRef
2188
                                            },
2189
                                            success: function (response) {
2190
                                                var results = Ext.decode(response.responseText);
2191
                                                data_ = results.data;
2192
                                                //if (data_ != undefined) {
2193
                                                if (data_.length > 0) {
2194
                                                    valueField_ = $.grep(data_, function (r) {
2195
                                                        return r.ValueField == '1'
2196
                                                    });
2197
                                                    valueField = valueField_[0].FieldName
2198
                                                    displayValue_ = $.grep(data_, function (r) {
2199
                                                        return r.DisplayValue == '1'
2200
                                                    });
2201
                                                    displayValue = displayValue_[0].FieldName
2202
                                                } else {
2203
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2204
                                                }
2205
                                            }
2206
                                        });
2207
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2208
                                        var count_ = 0;
2209
                                        if (store_) {
2210
                                            count_ = store_.count();
2211
                                        }
2212
                                        if (count_ == 0) {
2213
                                            Ext.create('Ext.data.Store', {
2214
                                                storeId: 'store_' + rec.FieldName,
2215
                                                autoLoad: false,
2216
                                                proxy: {
2217
                                                    method: 'POST',
2218
                                                    type: 'ajax',
2219
                                                    url: '/UserControl/GetStore',
2220
                                                    extraParams: {
2221
                                                        tableName: rec.TableRef,
2222
                                                        param: rec.ParamCombo
2223
                                                    },
2224
                                                    reader: {
2225
                                                        type: 'json',
2226
                                                        root: 'data',
2227
                                                        totalProperty: 'data[0].TotalCount'
2228
                                                    }
2229
                                                }
2230
                                            })
2231
                                        }
2232
                                        cols_.push({
2233
                                            xtype: 'minovacombocolumn',
2234
                                            text: rec.HeaderTitle,
2235
                                            dataIndex: rec.FieldName,
2236
                                            valueField: valueField,
2237
                                            displayField: displayValue,
2238
                                            store: 'store_' + rec.FieldName,
2239
                                            filter: {
2240
                                                type: 'list',
2241
                                                itemDefaults: {
2242
                                                    emptyText: 'Search for...'
2243
                                                }
2244
                                            }
2245
                                        });
2246
                                    }
2247

    
2248
                                } else if (rec.FixedValue != "") {
2249
                                    cols_.push({
2250
                                        xtype: 'minovacombocolumnfixvalue',
2251
                                        text: rec.HeaderTitle,
2252
                                        dataIndex: rec.FieldName,
2253
                                        fixedValue: rec.FixedValue,
2254
                                        filter: {
2255
                                            type: 'list',
2256
                                            itemDefaults: {
2257
                                                emptyText: 'Search for...'
2258
                                            }
2259
                                        }
2260
                                    });
2261
                                } else {
2262
                                    cols_.push({
2263
                                        text: rec.HeaderTitle,
2264
										readOnly: ReadOnly_,
2265
                                        dataIndex: rec.FieldName,
2266
                                        filter: {
2267
                                            itemDefaults: {
2268
                                                emptyText: 'Search for...'
2269
                                            }
2270
                                        }
2271
                                    });
2272
                                }
2273
                                break
2274
                        }
2275
                    } else {
2276
                        cols_.push({
2277
                            text: rec.HeaderTitle,
2278
                            dataIndex: rec.FieldName,
2279
                            hidden: true,
2280
                            filter: {
2281
                                itemDefaults: {
2282
                                    emptyText: 'Search for...'
2283
                                }
2284
                            }
2285
                        });
2286
                    }
2287

    
2288
                }
2289
            });
2290
        };
2291
        var param_ = me.param;
2292
        if (param_ == undefined) {
2293
            param_ = ''
2294
        }
2295
        var jsStoreGrid = new Ext.data.Store({
2296
            storeId: me.storename,
2297
            autoLoad: autoLoad,
2298
            pageSize: me.pagesize,
2299
            proxy: {
2300
                method: 'POST',
2301
                type: 'ajax',
2302
                url: '/UserControl/GetStorePagingAuth',
2303
                extraParams: {
2304
                    tableName: me.tableName,
2305
                    param: param_,
2306
                    menuId: MinovaUtil.GetMenuID()
2307
                },
2308
                reader: {
2309
                    type: 'json',
2310
                    root: 'data',
2311
                    totalProperty: 'totalRecords'
2312
                }
2313
            },
2314
        });
2315
        Ext.applyIf(me, {
2316
            autoScroll: true,
2317
            enableLocking: locking,
2318
            lockedGridConfig: {
2319
                header: false,
2320
                collapsible: true,
2321
                width: widthLock,
2322
                forceFit: locking,
2323
                listeners: {
2324
                    render: function (grid) {
2325
                        var pagingToolbar = grid.child('pagingtoolbar');
2326
                        if (pagingToolbar) {
2327
                            grid.remove(pagingToolbar, true);
2328
                        }
2329
                    }
2330
                }
2331
            },
2332
            listeners: {
2333
                viewready: function () {
2334
                    if (autoLoad == true) {
2335
                        this.getStore().loadPage(1);
2336
                    }
2337
                },
2338
                beforeedit: function () {
2339
                    return false;
2340
                },
2341
            },
2342
            lockedViewConfig: {
2343
                scroll: 'horizontal'
2344
            },
2345
            viewConfig: {
2346
                emptyText: 'No Data Display',
2347
                deferEmptyText: false,
2348
                //Add Nana For Autosize Column Mode
2349
                listeners: {
2350
                    refresh: function (dataview) {
2351
                        Ext.each(dataview.panel.columns, function (column) {
2352
                            //if (column.autoSizeColumn == false)
2353
                            //	column.autoSizeColumn = true;
2354
                            column.autoSize();
2355
                            //dataview.store.reload();
2356
                        })
2357
                    },
2358
                    afterrender: function (dataview) {
2359
                        Ext.defer(function () {
2360
                            dataview.store.reload();
2361
                        }, 2000, this);
2362
                        //dataview.store.reload();
2363
                    }
2364
                },
2365
                render: function (comp) {
2366
                    comp.getStore().reload();					
2367
                }
2368
            },
2369
            //for chekbox
2370
            selModel: {
2371
                //type: 'cellmodel'
2372
            },
2373
            selType: checkSelection,
2374
            columns: cols_,
2375

    
2376
            store: jsStoreGrid,
2377

    
2378
            plugins: [{
2379
                ptype: 'gridfilters'
2380
            }
2381
            ],
2382

    
2383
        });
2384
        me.callParent(arguments);
2385
    }
2386

    
2387
});
2388

    
2389
Ext.define('MinovaUtil.MinovaES.MinovaGrid2', {
2390
    extend: 'Ext.grid.Panel',
2391
    requires: ['Ext.grid.RowNumberer'],
2392
    alias: 'widget.minovagrid2',
2393
    //alias: ['widget.minovagrid2', 'widget.minovagrid'],
2394
    //alias: ['widget.minovagrid2', 'widget.minovagrid'],
2395
    alternateClassName: 'Ext.grid.MinovaGrid',
2396
    //controller:'orm-manage2-controller',
2397
    tableName: undefined,
2398
    isLookup: undefined,
2399
    param: undefined,
2400
    pagesize: undefined,
2401
    storename: undefined,
2402
    layoutType: undefined,
2403
    enableLocking: true,
2404
    autoLoad: undefined,
2405
    multiSelect: undefined,
2406
    getTableName: function () {
2407
        return this.tableName;
2408
    },
2409

    
2410
    initComponent: function () {
2411
        var me = this;
2412
        var cols_ = [];
2413
        var fieldeditor = {};
2414
        var hasil = null;
2415
        var autoLoad = true;
2416
        var LangID = localStorage.LangId;
2417
        var fielGrid = 'rec.GridView == 1';
2418
        var locking = true;
2419
        var checkSelection = '';
2420
        var widthLock = 250;
2421
        if (me.multiSelect) {
2422
            locking = false;
2423
            checkSelection = 'checkboxmodel';
2424
            widthLock = 40;
2425
        }
2426
        //var _url = 'GetAllField';
2427
        if (me.autoLoad == false) {
2428
            autoLoad = false;
2429
        }
2430
        parameter = null;
2431
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2432
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
2433
            fielGrid = 'rec.LookupGrid == 1';
2434
            locking = false;
2435

    
2436
        } else {
2437
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
2438
            //autoLoad = false;
2439
            //_url = 'GetAllFieldGridLookUp';
2440
        };
2441

    
2442
        //Ext.Ajax.request({
2443
        //	async : false,
2444
        //	method : 'POST',
2445
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
2446
        //	success : function (response) {
2447
        //		var results = Ext.decode(response.responseText);
2448
        //		hasil = results.data;
2449
        //	}
2450
        //});
2451
        //hamid03102016
2452

    
2453
        Ext.Ajax.request({
2454
            async: false,
2455
            method: 'POST',
2456
            url: '/UserControl/GetStore',
2457
            params: {
2458
                tableName: 'PDSBS0007',
2459
                param: parameter
2460
            },
2461
            success: function (response) {
2462
                var results = Ext.decode(response.responseText);
2463
                hasil = results.data;
2464
            }
2465
        });
2466
        //end
2467

    
2468
        if (hasil.length > 0) {
2469

    
2470
            Ext.each(hasil, function (rec) {
2471
                var null_ = null;
2472
                if (rec.IsPrimaryKey == true) {
2473
                    null_ = false;
2474
                }
2475
                if (rec.IsRequired == true) {
2476
                    null_ = false;
2477
                } else {
2478
                    null_ = true;
2479
                }
2480

    
2481
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2482
                    if (rec.LookupGrid == 1) {
2483
                        switch (rec.FormatRef) {
2484
                            case "file":
2485
                                cols_.push({
2486
                                    xtype: 'minovapicturecolumn',
2487
                                    text: rec.HeaderTitle,
2488
                                    dataIndex: rec.FieldName,
2489
                                    width: 100,
2490
                                    //filter: {
2491
                                    //    type: 'image',
2492
                                    //    itemDefaults: {
2493
                                    //        emptyText: 'Search for...'
2494
                                    //    }
2495
                                    //}
2496
                                });
2497
                                break
2498
                            case "date":
2499
                                cols_.push({
2500
                                    xtype: 'minovadatecolumn',
2501
                                    text: rec.HeaderTitle,
2502
                                    dataIndex: rec.FieldName,
2503
                                    width: 100,
2504
                                    filter: {
2505
                                        type: 'date',
2506
                                        itemDefaults: {
2507
                                            emptyText: 'Search for...'
2508
                                        }
2509
                                    }
2510
                                });
2511
                                break
2512
                            case "amount":
2513
                                cols_.push({
2514
                                    xtype: 'minovacurrancycolumn',
2515
                                    text: rec.HeaderTitle,
2516
                                    dataIndex: rec.FieldName,
2517
                                    align: 'right',
2518
                                    width: 300,
2519
                                    filter: {
2520
                                        type: 'number',
2521
                                        itemDefaults: {
2522
                                            emptyText: 'Search for...'
2523
                                        }
2524
                                    }
2525
                                });
2526
                                break
2527
                            case "amountencrypt":
2528
                                cols_.push({
2529
                                    xtype: 'minovaamountcolumn',
2530
                                    text: rec.HeaderTitle,
2531
                                    dataIndex: rec.FieldName,
2532
                                    align: 'right',
2533
                                    width: 300,
2534
                                    filter: {
2535
                                        type: 'string',
2536
                                        itemDefaults: {
2537
                                            emptyText: 'Search for...'
2538
                                        }
2539
                                    }
2540
                                });
2541
                                break
2542
                            case "datetime":
2543
                                cols_.push({
2544
                                    xtype: 'minovadatetimecolumn',
2545
                                    text: rec.HeaderTitle,
2546
                                    dataIndex: rec.FieldName,
2547
                                    width: 140,
2548
                                    filter: {
2549
                                        type: 'string',
2550
                                        itemDefaults: {
2551
                                            emptyText: 'Search for...'
2552
                                        }
2553
                                    }
2554
                                });
2555
                                break
2556
                            default:
2557
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2558
                                    cols_.push({
2559
                                        text: rec.HeaderTitle,
2560
                                        dataIndex: rec.FieldName,
2561
                                        width: 100,
2562
                                        filter: {
2563
                                            type: 'string',
2564
                                            itemDefaults: {
2565
                                                emptyText: 'Search for...'
2566
                                            }
2567
                                        }
2568
                                    });
2569
                                } else if (rec.SearchType == '2') {
2570
                                    cols_.push({
2571
                                        xtype: 'minovalookupcolumn',
2572
                                        text: rec.HeaderTitle,
2573
                                        tableName: rec.TableRef,
2574
                                        dataIndex: rec.FieldName,
2575
                                        filter: {
2576
                                            itemDefaults: {
2577
                                                emptyText: 'Search for...'
2578
                                            }
2579
                                        }
2580
                                    });
2581
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
2582
                                    if (rec.TableRef != null) {
2583
                                        var valueField = null;
2584
                                        var displayValue = null;
2585
                                        Ext.Ajax.request({
2586
                                            async: false,
2587
                                            method: 'POST',
2588
                                            url: '/UserControl/GetStore',
2589
                                            params: {
2590
                                                tableName: 'SDATATABLEFIELD',
2591
                                                param: 'TableName[equal]' + rec.TableRef
2592
                                            },
2593
                                            success: function (response) {
2594
                                                var results = Ext.decode(response.responseText);
2595
                                                data_ = results.data;
2596
                                                if (data_ != undefined) {
2597
                                                    valueField_ = $.grep(data_, function (r) {
2598
                                                        return r.ValueField == '1'
2599
                                                    });
2600
                                                    valueField = valueField_[0].FieldName
2601
                                                    displayValue_ = $.grep(data_, function (r) {
2602
                                                        return r.DisplayValue == '1'
2603
                                                    });
2604
                                                    displayValue = displayValue_[0].FieldName
2605
                                                }
2606
                                            }
2607
                                        });
2608
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2609
                                        var count_ = 0;
2610
                                        if (store_) {
2611
                                            count_ = store_.count();
2612
                                        }
2613
                                        if (count_ == 0) {
2614
                                            Ext.create('Ext.data.Store', {
2615
                                                storeId: 'store_' + rec.FieldName,
2616
                                                //autoLoad: true,
2617
                                                proxy: {
2618
                                                    method: 'POST',
2619
                                                    type: 'ajax',
2620
                                                    url: '/UserControl/GetStore',
2621
                                                    extraParams: {
2622
                                                        tableName: rec.TableRef,
2623
                                                        param: rec.ParamCombo
2624
                                                    },
2625
                                                    reader: {
2626
                                                        type: 'json',
2627
                                                        root: 'data',
2628
                                                        totalProperty: 'data[0].TotalCount'
2629
                                                    }
2630
                                                }
2631
                                            })
2632
                                        }
2633
                                        cols_.push({
2634
                                            xtype: 'minovacombocolumn',
2635
                                            text: rec.HeaderTitle,
2636
                                            dataIndex: rec.FieldName,
2637
                                            valueField: valueField,
2638
                                            displayField: displayValue,
2639
                                            store: 'store_' + rec.FieldName,
2640
                                            filter: {
2641
                                                type: 'list',
2642
                                                itemDefaults: {
2643
                                                    emptyText: 'Search for...'
2644
                                                }
2645
                                            }
2646
                                        });
2647
                                    }
2648

    
2649
                                } else {
2650
                                    cols_.push({
2651
                                        text: rec.HeaderTitle,
2652
                                        dataIndex: rec.FieldName,
2653
                                        filter: {
2654
                                            itemDefaults: {
2655
                                                emptyText: 'Search for...'
2656
                                            }
2657
                                        }
2658
                                    });
2659
                                }
2660
                                break
2661
                        }
2662
                    } else {
2663
                        cols_.push({
2664
                            text: rec.HeaderTitle,
2665
                            dataIndex: rec.FieldName,
2666
                            hidden: true,
2667
                            filter: {
2668
                                itemDefaults: {
2669
                                    emptyText: 'Search for...'
2670
                                }
2671
                            }
2672
                        });
2673
                    }
2674

    
2675
                } else {
2676
                    if (rec.GridView == 1) {
2677
                        switch (rec.FormatRef) {
2678
                            case "action":
2679
                                cols_.push({
2680
                                    text: rec.HeaderTitle,
2681
                                    width: 100,
2682
                                    xtype: 'actioncolumn',
2683
                                    tooltip: 'View Data',
2684
                                    name: rec.FieldName,
2685
                                    itemId: me.tableName + rec.FieldName,
2686
                                    align: 'center',
2687
                                    iconCls: 'fa-edit',
2688
                                    renderer: function (value, metadata, record) {
2689
                                        metadata.tdStyle = 'font-family: FontAwesome'
2690
                                    },
2691
                                    handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
2692

    
2693
                                        this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
2694
                                    }
2695
                                });
2696
                                break
2697
                            case "file":
2698
                                cols_.push({
2699
                                    xtype: 'minovapicturecolumn',
2700
                                    text: rec.HeaderTitle,
2701
                                    dataIndex: rec.FieldName,
2702
                                    width: 100,
2703
                                    //filter: {
2704
                                    //    type: '',
2705
                                    //    itemDefaults: {
2706
                                    //        emptyText: 'Search for...'
2707
                                    //    }
2708
                                    //}
2709
                                });
2710
                                break
2711
                            case "date":
2712
                                cols_.push({
2713
                                    xtype: 'minovadatecolumn',
2714
                                    text: rec.HeaderTitle,
2715
                                    dataIndex: rec.FieldName,
2716
                                    width: 100,
2717
                                    filter: {
2718
                                        type: 'date',
2719
                                        itemDefaults: {
2720
                                            emptyText: 'Search for...'
2721
                                        }
2722
                                    }
2723
                                });
2724
                                break
2725
                            case "amountencrypt":
2726
                                cols_.push({
2727
                                    xtype: 'minovaamountcolumn',
2728
                                    text: rec.HeaderTitle,
2729
                                    dataIndex: rec.FieldName,
2730
                                    align: 'right',
2731
                                    width: 300,
2732
                                    filter: {
2733
                                        type: 'string',
2734
                                        itemDefaults: {
2735
                                            emptyText: 'Search for...'
2736
                                        }
2737
                                    }
2738
                                });
2739
                                break
2740
                            case "amount":
2741
                                cols_.push({
2742
                                    xtype: 'minovacurrancycolumn',
2743
                                    text: rec.HeaderTitle,
2744
                                    dataIndex: rec.FieldName,
2745
                                    align: 'right',
2746
                                    width: 300,
2747
                                    filter: {
2748
                                        type: 'number',
2749
                                        itemDefaults: {
2750
                                            emptyText: 'Search for...'
2751
                                        }
2752
                                    }
2753
                                });
2754
                                break
2755
                            case "datetime":
2756
                                cols_.push({
2757
                                    xtype: 'minovadatetimecolumn',
2758
                                    text: rec.HeaderTitle,
2759
                                    dataIndex: rec.FieldName,
2760
                                    width: 140,
2761
                                    filter: {
2762
                                        type: 'string',
2763
                                        itemDefaults: {
2764
                                            emptyText: 'Search for...'
2765
                                        }
2766
                                    }
2767
                                });
2768
                                break
2769
                            default:
2770
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2771
                                    cols_.push({
2772
                                        text: rec.HeaderTitle,
2773
                                        dataIndex: rec.FieldName,
2774
                                        width: 100,
2775
                                        filter: {
2776
                                            type: 'string',
2777
                                            itemDefaults: {
2778
                                                emptyText: 'Search for...'
2779
                                            }
2780
                                        }
2781
                                    });
2782
                                } else if (rec.TableRef != "") {
2783
                                    if (rec.TableRef != null) {
2784
                                        var valueField = null;
2785
                                        var displayValue = null;
2786
                                        Ext.Ajax.request({
2787
                                            async: false,
2788
                                            method: 'POST',
2789
                                            url: '/UserControl/GetStore',
2790
                                            params: {
2791
                                                tableName: 'SDATATABLEFIELD',
2792
                                                param: 'TableName[equal]' + rec.TableRef
2793
                                            },
2794
                                            success: function (response) {
2795
                                                var results = Ext.decode(response.responseText);
2796
                                                data_ = results.data;
2797
                                                //if (data_ != undefined) {
2798
                                                if (data_.length > 0) {
2799
                                                    valueField_ = $.grep(data_, function (r) {
2800
                                                        return r.ValueField == '1'
2801
                                                    });
2802
                                                    valueField = valueField_[0].FieldName
2803
                                                    displayValue_ = $.grep(data_, function (r) {
2804
                                                        return r.DisplayValue == '1'
2805
                                                    });
2806
                                                    displayValue = displayValue_[0].FieldName
2807
                                                } else {
2808
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2809
                                                }
2810
                                            }
2811
                                        });
2812
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2813
                                        var count_ = 0;
2814
                                        if (store_) {
2815
                                            count_ = store_.count();
2816
                                        }
2817
                                        if (count_ == 0) {
2818
                                            Ext.create('Ext.data.Store', {
2819
                                                storeId: 'store_' + rec.FieldName,
2820
                                                autoLoad: false,
2821
                                                proxy: {
2822
                                                    method: 'POST',
2823
                                                    type: 'ajax',
2824
                                                    url: '/UserControl/GetStore',
2825
                                                    extraParams: {
2826
                                                        tableName: rec.TableRef,
2827
                                                        param: rec.ParamCombo
2828
                                                    },
2829
                                                    reader: {
2830
                                                        type: 'json',
2831
                                                        root: 'data',
2832
                                                        totalProperty: 'data[0].TotalCount'
2833
                                                    }
2834
                                                }
2835
                                            })
2836
                                        }
2837
                                        cols_.push({
2838
                                            xtype: 'minovacombocolumn',
2839
                                            text: rec.HeaderTitle,
2840
                                            dataIndex: rec.FieldName,
2841
                                            valueField: valueField,
2842
                                            displayField: displayValue,
2843
                                            store: 'store_' + rec.FieldName,
2844
                                            filter: {
2845
                                                type: 'list',
2846
                                                itemDefaults: {
2847
                                                    emptyText: 'Search for...'
2848
                                                }
2849
                                            }
2850
                                        });
2851
                                    }
2852

    
2853
                                } else if (rec.FixedValue != "") {
2854
                                    cols_.push({
2855
                                        xtype: 'minovacombocolumnfixvalue',
2856
                                        text: rec.HeaderTitle,
2857
                                        dataIndex: rec.FieldName,
2858
                                        fixedValue: rec.FixedValue,
2859
                                        filter: {
2860
                                            type: 'list',
2861
                                            itemDefaults: {
2862
                                                emptyText: 'Search for...'
2863
                                            }
2864
                                        }
2865
                                    });
2866
                                } else {
2867
                                    cols_.push({
2868
                                        text: rec.HeaderTitle,
2869
                                        dataIndex: rec.FieldName,
2870
                                        filter: {
2871
                                            itemDefaults: {
2872
                                                emptyText: 'Search for...'
2873
                                            }
2874
                                        }
2875
                                    });
2876
                                }
2877
                                break
2878
                        }
2879
                    } else {
2880
                        cols_.push({
2881
                            text: rec.HeaderTitle,
2882
                            dataIndex: rec.FieldName,
2883
                            hidden: true,
2884
                            filter: {
2885
                                itemDefaults: {
2886
                                    emptyText: 'Search for...'
2887
                                }
2888
                            }
2889
                        });
2890
                    }
2891

    
2892
                }
2893
            });
2894
        };
2895
        var param_ = me.param;
2896
        if (param_ == undefined) {
2897
            param_ = ''
2898
        }
2899
        var jsStoreGrid = new Ext.data.Store({
2900
            storeId: me.storename,
2901
            autoLoad: autoLoad,
2902
            pageSize: me.pagesize,
2903
            proxy: {
2904
                method: 'POST',
2905
                type: 'ajax',
2906
                url: '/UserControl/GetStorePagingAuth',
2907
                extraParams: {
2908
                    tableName: me.tableName,
2909
                    param: param_,
2910
                    menuId: MinovaUtil.GetMenuID()
2911
                },
2912
                reader: {
2913
                    type: 'json',
2914
                    root: 'data',
2915
                    totalProperty: 'totalRecords'
2916
                }
2917
            },
2918
        });
2919
        Ext.applyIf(me, {
2920
            autoScroll: true,
2921
            enableLocking: locking,
2922
            lockedGridConfig: {
2923
                header: false,
2924
                collapsible: true,
2925
                width: widthLock,
2926
                forceFit: locking,
2927
                listeners: {
2928
                    render: function (grid) {
2929
                        var pagingToolbar = grid.child('pagingtoolbar');
2930
                        if (pagingToolbar) {
2931
                            grid.remove(pagingToolbar, true);
2932
                        }
2933
                    }
2934
                }
2935
            },
2936
            listeners: {
2937
                viewready: function () {
2938
                    if (autoLoad == true) {
2939
                        this.getStore().loadPage(1);
2940
                    }
2941
                },
2942
                beforeedit: function () {
2943
                    return false;
2944
                },
2945
            },
2946
            lockedViewConfig: {
2947
                scroll: 'horizontal'
2948
            },
2949
            viewConfig: {
2950
                emptyText: 'No Data Display',
2951
                deferEmptyText: false,
2952
                //Add Nana For Autosize Column Mode
2953
                listeners: {
2954
                    refresh: function (dataview) {
2955
                        Ext.each(dataview.panel.columns, function (column) {
2956
                            //if (column.autoSizeColumn == false)
2957
                            //	column.autoSizeColumn = true;
2958
                            column.autoSize();
2959
                            //dataview.store.reload();
2960
                        })
2961
                    }
2962
                },
2963
                render: function (comp) {
2964
                    comp.getStore().reload();					
2965
                }
2966
            },
2967
            //for chekbox
2968
            selModel: {
2969
                //type: 'cellmodel'
2970
            },
2971
            selType: checkSelection,
2972
            columns: cols_,
2973

    
2974
            store: jsStoreGrid,
2975

    
2976
            plugins: [{
2977
                ptype: 'gridfilters'
2978
            }
2979
            ],
2980

    
2981
        });
2982
        me.callParent(arguments);
2983
    }
2984

    
2985
});
2986
Ext.define('MinovaUtil.MinovaES.MinovaGrid', {
2987
    extend: 'Ext.grid.Panel',
2988
    requires: ['Ext.grid.RowNumberer'],
2989
    alias: 'widget.minovagrid',
2990
    //alternateClassName : 'Ext.grid.MinovaGrid',
2991
    tableName: undefined,
2992
    isLookup: undefined,
2993
    param: undefined,
2994
    pagesize: undefined,
2995
    storename: undefined,
2996
    layoutType: undefined,
2997
    enableLocking: true,
2998

    
2999
    tbar: [{
3000
        xtype: 'button',
3001
        text: 'Action',
3002
        name: 'actionBtn',
3003
        //scale: 'medium',
3004
        menu: [{
3005
            text: 'Add',
3006
            name: 'Add_',
3007
            action: 'CRUDaddNewRecord',
3008
            style: 'font-family: FontAwesome',
3009
            iconCls: 'fa-plus-circle',
3010
            handler: function () {
3011
                var layout = null;
3012
                var tolbar = this.up();
3013
                var name = '';
3014
                var tableName = tolbar.up().up().up().tableName;
3015
                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
3016
                var titleMain = mpnl.getTitle();
3017
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
3018
                if (pnl) {
3019
                    layout = pnl.getLayoutType();
3020
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3021
                    pnl.setLastTitle(titleMain);
3022
                    mpnl.setTitle('Add ' + titleMain);
3023
                } else {
3024
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
3025
                    layout = pnl.getLayoutType();
3026
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3027
                    pnl.setLastTitle(titleMain);
3028
                    mpnl.setTitle('Add ' + titleMain);
3029
                }
3030
                if (layout == 'L003') {
3031
                    var _grid = "MinovaGridFormGrid" + tableName;
3032
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3033
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3034
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3035
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3036
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3037
                    g.setHidden(true);
3038
                    formDisplay.setHidden(true);
3039
                    formEdit.reset();
3040
                    formEdit.setActionSubmit(0)
3041
                    formEdit.setSubmitProc(true)
3042
                    formEdit.setHidden(false);
3043
                    var heigh = pnl.getLastheightform();
3044
                    var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
3045
                    if (pDetail) {
3046
                        // pDetail.setHeight(heigh + 100);
3047
                    } else {
3048
                        pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
3049
                        var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3050
                        var mainPnl = mainPnl_.getHeight();
3051
                        //pDetail.setHeight(mainPnl + 100);
3052

    
3053
                    }
3054

    
3055
                    var emp = formEdit.getForm().findField("EmployeeID");
3056
                    if (emp) {
3057
                        emp.setValue(getParam("EmployeeID"))
3058
                        emp.setHidden(true);
3059
                    }
3060

    
3061
                } else {
3062
                    var _grid = "MinovaGridFormGrid" + tableName;
3063
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3064
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3065
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3066
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3067
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3068
                    formEdit.setActionSubmit(0)
3069
                    formDisplay.setHidden(true);
3070
                    formDisplay.setTitle("Add");
3071

    
3072
                    formEdit.setTitle("Add - " + titleMain);
3073
                    formEdit.reset();
3074
                    formEdit.setSubmitProc(true)
3075
                    formEdit.setHidden(false);
3076
                    var emp = formEdit.getForm().findField("EmployeeID");
3077
                    if (emp) {
3078
                        emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
3079
                        emp.setHidden(true);
3080
                    }
3081

    
3082
                }
3083
            }
3084
        }, {
3085
            text: 'Copy',
3086
            name: 'Copy_',
3087
            iconCls: 'fa-copy',
3088
            style: 'font-family: FontAwesome',
3089
            handler: function () {
3090
                var layout = null;
3091
                var tolbar = this.up();
3092
                var name = '';
3093
                var tableName = tolbar.up().up().up().tableName;
3094
                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
3095
                var titleMain = mpnl.getTitle();
3096
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
3097

    
3098
                if (pnl) {
3099
                    layout = pnl.getLayoutType();
3100
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3101
                    pnl.setLastTitle(titleMain);
3102
                    mpnl.setTitle('Copy ' + titleMain);
3103
                } else {
3104
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
3105
                    layout = pnl.getLayoutType();
3106
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3107
                    pnl.setLastTitle(titleMain);
3108
                    mpnl.setTitle('Copy ' + titleMain);
3109
                }
3110
                if (layout == 'L003') {
3111
                    var _grid = "MinovaGridFormGrid" + tableName;
3112
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3113
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3114
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3115
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3116
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3117
                    g.setHidden(true);
3118
                    formDisplay.setHidden(true);
3119
                    formEdit.reset();
3120
                    formEdit.setActionSubmit(0)
3121
                    formEdit.setSubmitProc(true)
3122
                    formEdit.setHidden(false);
3123
                    var heigh = pnl.getLastheightform();
3124
                    var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
3125
                    if (pDetail) {
3126
                        //pDetail.setHeight(heigh + 100);
3127
                    } else {
3128
                        pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
3129
                        var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3130
                        var mainPnl = mainPnl_.getHeight();
3131
                        //pDetail.setHeight(mainPnl + 100);
3132

    
3133
                    }
3134
                    Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3135

    
3136
                    var emp = formEdit.getForm().findField("EmployeeID");
3137
                    if (emp) {
3138
                        emp.setValue(getParam("EmployeeID"))
3139
                        emp.setHidden(true);
3140
                    }
3141
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3142
                    if (selection) {
3143
                        formDisplay.getForm().setValues(selection.data);
3144
                        formEdit.getForm().setValues(selection.data);
3145
                    }
3146

    
3147
                } else {
3148
                    var _grid = "MinovaGridFormGrid" + tableName;
3149
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3150
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3151
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3152
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3153
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3154
                    formEdit.setActionSubmit(0)
3155
                    formDisplay.setHidden(true);
3156
                    formDisplay.setTitle("Add");
3157

    
3158
                    formEdit.setTitle("Copy - " + titleMain);
3159
                    formEdit.reset();
3160
                    formEdit.setSubmitProc(true)
3161
                    formEdit.setHidden(false);
3162
                    var emp = formEdit.getForm().findField("EmployeeID");
3163
                    if (emp) {
3164
                        emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
3165
                        emp.setHidden(true);
3166
                    }
3167
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3168
                    if (selection) {
3169
                        formDisplay.getForm().setValues(selection.data);
3170
                        formEdit.getForm().setValues(selection.data);
3171
                        formEdit.setSubmitProc(true);
3172
                        formEdit.setActionSubmit(0);
3173
                    }
3174

    
3175
                }
3176
            }
3177
        }, {
3178
            text: 'Edit',
3179
            name: 'Edit_',
3180
            iconCls: 'fa-edit',
3181
            style: 'font-family: FontAwesome',
3182
            handler: function () {
3183
                var layout = null;
3184
                var tolbar = this.up();
3185
                var name = '';
3186
                var tableName = tolbar.up().up().up().tableName;
3187

    
3188
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
3189
                if (pnl) {
3190
                    layout = pnl.getLayoutType();
3191
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3192

    
3193
                } else {
3194
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
3195
                    layout = pnl.getLayoutType();
3196
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3197
                }
3198

    
3199
                if (layout == 'L003') {
3200
                    var _grid = "MinovaGridFormGrid" + tableName;
3201
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3202
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3203
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3204
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3205
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3206

    
3207
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3208
                    if (selection) {
3209
                        formDisplay.getForm().setValues(selection.data);
3210
                        formEdit.getForm().setValues(selection.data);
3211
                        formDisplay.setHidden(true);
3212
                        formEdit.setSubmitProc(true);
3213
                        formEdit.setActionSubmit(1);
3214
                        formEdit.setHidden(false);
3215
                        formEdit.setHidden(false);
3216
                        g.setHidden(true);
3217
                        var heigh = pnl.getLastheightform();
3218
                        var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
3219
                        if (pDetail) {
3220
                            pDetail.setHeight(heigh + 100);
3221
                        } else {
3222
                            pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
3223
                            var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3224
                            var mainPnl = mainPnl_.getHeight();
3225
                            //pDetail.setHeight(mainPnl + 100);
3226

    
3227
                        }
3228

    
3229
                        var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
3230
                        if (p) {
3231
                            var lastTitile = p.getTitle();
3232
                            pnl.setLastTitle(lastTitile);
3233
                            p.setTitle('Edit - ' + lastTitile)
3234

    
3235
                        }
3236
                    }
3237
                } else {
3238
                    var _grid = "MinovaGridFormGrid" + tableName;
3239
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3240
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3241
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3242
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3243
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3244

    
3245
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3246
                    if (selection) {
3247
                        formDisplay.getForm().setValues(selection.data);
3248
                        formEdit.getForm().setValues(selection.data);
3249
                        formDisplay.setTitle("Edit");
3250
                        formEdit.setTitle("Edit");
3251
                        if (layout == 'L003') {
3252
                            g.setHidden(true);
3253
                        }
3254

    
3255
                        formDisplay.setHidden(true);
3256
                        formEdit.setActionSubmit(1)
3257
                        formEdit.setSubmitProc(true)
3258
                        formEdit.setHidden(false);
3259

    
3260
                        var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
3261
                        var lastTitile = mpnl.getTitle();
3262
                        formEdit.setTitle('Edit - ' + lastTitile);
3263
                        //mpnl.setTitle('Edit ' + lastTitile);
3264
                    }
3265
                }
3266
            }
3267
        }, {
3268
            text: 'Delete',
3269
            name: 'Delete_',
3270
            iconCls: 'fa-trash-o',
3271
            style: 'font-family: FontAwesome',
3272
        }
3273
        ]
3274
    }, {
3275
        xtype: 'tbfill'
3276
    }, {
3277
        text: 'Clear Filters',
3278
        tooltip: 'Clear all filters',
3279
        name: 'clearbtn',
3280
        handler: function () {
3281
            var tolbar = this.up()
3282
            var grid_ = tolbar.up()
3283
            grid_.filters.clearFilters()
3284
        }
3285
    }, ],
3286

    
3287
    getTableName: function () {
3288
        return this.tableName;
3289
    },
3290

    
3291
    initComponent: function () {
3292
        var me = this;
3293
        var cols_ = [];
3294
        var fieldeditor = {};
3295
        var hasil = null;
3296
        var autoLoad = true;
3297
        var LangID = MinovaUtil.GetLangID();
3298
        //var _url = 'GetAllField';
3299

    
3300
        //if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3301
        //	autoLoad = false;
3302
        //    _url = 'GetAllFieldGridLookUp';
3303

    
3304
        //};
3305
        //Ext.Ajax.request({
3306
        //	async : false,
3307
        //	method : 'POST',
3308
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
3309
        //	success : function (response) {
3310
        //		var results = Ext.decode(response.responseText);
3311
        //		hasil = results.data;
3312
        //	}
3313
        //});
3314
        //hamid03102016
3315
        //if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
3316
        parameter = null;
3317
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
3318
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
3319
        } else {
3320
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3321
        }
3322
        Ext.Ajax.request({
3323
            async: false,
3324
            method: 'POST',
3325
            url: '/UserControl/GetStore',
3326
            params: {
3327
                tableName: 'PDSBS0007',
3328
                param: parameter
3329
            },
3330
            success: function (response) {
3331
                var results = Ext.decode(response.responseText);
3332
                hasil = results.data;
3333
            }
3334
        });
3335
        //end
3336
        if (hasil.length > 0) {
3337
            Ext.each(hasil, function (rec) {
3338
                var null_ = null;
3339
                if (rec.IsPrimaryKey == true) {
3340
                    null_ = false;
3341
                }
3342
                if (rec.IsRequired == true) {
3343
                    null_ = false;
3344
                } else {
3345
                    null_ = true;
3346
                }
3347
                if (rec.GridView == 1) {
3348
                    switch (rec.FormatRef) {
3349
                        case "date":
3350
                            cols_.push({
3351
                                xtype: 'minovadatecolumn',
3352
                                text: rec.HeaderTitle,
3353
                                dataIndex: rec.FieldName,
3354
                                width: 100,
3355
                                filter: {
3356
                                    type: 'date',
3357
                                    itemDefaults: {
3358
                                        emptyText: 'Search for...'
3359
                                    }
3360
                                }
3361
                            });
3362
                            break
3363
                        case "amountencrypt":
3364
                            cols_.push({
3365
                                xtype: 'minovaamountcolumn',
3366
                                text: rec.HeaderTitle,
3367
                                dataIndex: rec.FieldName,
3368
                                align: 'right',
3369
                                width: 100,
3370
                                filter: {
3371
                                    type: 'string',
3372
                                    itemDefaults: {
3373
                                        emptyText: 'Search for...'
3374
                                    }
3375
                                }
3376
                            });
3377
                            break
3378
                        case "amount":
3379
                            cols_.push({
3380
                                xtype: 'minovacurrancycolumn',
3381
                                text: rec.HeaderTitle,
3382
                                dataIndex: rec.FieldName,
3383
                                align: 'right',
3384
                                width: 100,
3385
                                filter: {
3386
                                    type: 'number',
3387
                                    itemDefaults: {
3388
                                        emptyText: 'Search for...'
3389
                                    }
3390
                                }
3391
                            });
3392
                            break
3393
                        case "datetime":
3394
                            cols_.push({
3395
                                xtype: 'minovadatetimecolumn',
3396
                                text: rec.HeaderTitle,
3397
                                dataIndex: rec.FieldName,
3398
                                width: 140,
3399
                                filter: {
3400
                                    type: 'string',
3401
                                    itemDefaults: {
3402
                                        emptyText: 'Search for...'
3403
                                    }
3404
                                }
3405
                            });
3406
                            break
3407
                        default:
3408
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
3409
                                cols_.push({
3410
                                    text: rec.HeaderTitle,
3411
                                    dataIndex: rec.FieldName,
3412
                                    width: 100,
3413
                                    filter: {
3414
                                        type: 'string',
3415
                                        itemDefaults: {
3416
                                            emptyText: 'Search for...'
3417
                                        }
3418
                                    }
3419
                                });
3420
                            } else if (rec.SearchType == '2') {
3421
                                cols_.push({
3422
                                    xtype: 'minovalookupcolumn',
3423
                                    text: rec.HeaderTitle,
3424
                                    tableName: rec.TableRef,
3425
                                    dataIndex: rec.FieldName,
3426
                                    filter: {
3427
                                        itemDefaults: {
3428
                                            emptyText: 'Search for...'
3429
                                        }
3430
                                    }
3431
                                });
3432
                            } else if (rec.TableRef != "") {
3433
                                if (rec.TableRef != null) {
3434
                                    var valueField = null;
3435
                                    Ext.Ajax.request({
3436
                                        async: false,
3437
                                        method: 'POST',
3438
                                        url: '/UserControl/GetStore',
3439
                                        params: {
3440
                                            tableName: 'SDATATABLEFIELD',
3441
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
3442
                                        },
3443
                                        success: function (response) {
3444
                                            var results = Ext.decode(response.responseText);
3445
                                            data_ = results.data[0];
3446
                                            if (data_ != undefined) {
3447
                                                valueField = data_.FieldName;
3448
                                            }
3449
                                        }
3450
                                    });
3451

    
3452
                                    displayValue = null;
3453
                                    Ext.Ajax.request({
3454
                                        async: false,
3455
                                        method: 'POST',
3456
                                        url: '/UserControl/GetStore',
3457
                                        params: {
3458
                                            tableName: 'SDATATABLEFIELD',
3459
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
3460
                                        },
3461
                                        success: function (response) {
3462
                                            var results = Ext.decode(response.responseText);
3463
                                            data_ = results.data[0];
3464
                                            if (data_ != undefined) {
3465
                                                displayValue = data_.FieldName;
3466
                                                //console.log(data_)
3467
                                            }
3468
                                        }
3469
                                    });
3470
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3471
                                    var count_ = 0;
3472
                                    if (store_) {
3473
                                        count_ = store_.count();
3474
                                    }
3475
                                    if (count_ == 0) {
3476
                                        Ext.create('Ext.data.Store', {
3477
                                            storeId: 'store_' + rec.FieldName,
3478
                                            autoLoad: true,
3479
                                            proxy: {
3480
                                                method: 'POST',
3481
                                                type: 'ajax',
3482
                                                url: '/UserControl/GetStore',
3483
                                                extraParams: {
3484
                                                    tableName: rec.TableRef,
3485
                                                    param: rec.ParamCombo
3486
                                                },
3487
                                                reader: {
3488
                                                    type: 'json',
3489
                                                    root: 'data',
3490
                                                    totalProperty: 'data[0].TotalCount'
3491
                                                }
3492
                                            }
3493
                                        })
3494
                                    }
3495
                                    cols_.push({
3496
                                        xtype: 'minovacombocolumn',
3497
                                        text: rec.HeaderTitle,
3498
                                        dataIndex: rec.FieldName,
3499
                                        valueField: valueField,
3500
                                        displayField: displayValue,
3501
                                        store: 'store_' + rec.FieldName,
3502
                                        filter: {
3503
                                            type: 'list',
3504
                                            itemDefaults: {
3505
                                                emptyText: 'Search for...'
3506
                                            }
3507
                                        }
3508
                                    });
3509
                                }
3510

    
3511
                            } else {
3512
                                cols_.push({
3513
                                    text: rec.HeaderTitle,
3514
                                    dataIndex: rec.FieldName,
3515
                                    filter: {
3516
                                        itemDefaults: {
3517
                                            emptyText: 'Search for...'
3518
                                        }
3519
                                    }
3520
                                });
3521
                            }
3522
                            break
3523
                    }
3524
                } else {
3525
                    cols_.push({
3526
                        text: rec.HeaderTitle,
3527
                        dataIndex: rec.FieldName,
3528
                        hidden: true,
3529
                        filter: {
3530
                            itemDefaults: {
3531
                                emptyText: 'Search for...'
3532
                            }
3533
                        }
3534
                    });
3535
                }
3536
            });
3537
        };
3538
        var param_ = me.param;
3539
        if (param_ == undefined) {
3540
            param_ = ''
3541
        }
3542
        var jsStoreGrid = new Ext.data.Store({
3543
            storeId: me.storename,
3544
            autoLoad: autoLoad,
3545
            pageSize: me.pagesize,
3546
            proxy: {
3547
                method: 'POST',
3548
                type: 'ajax',
3549
                url: '/UserControl/GetStorePaging',
3550
                extraParams: {
3551
                    tableName: me.tableName,
3552
                    param: param_
3553
                },
3554
                reader: {
3555
                    type: 'json',
3556
                    root: 'data',
3557
                    totalProperty: 'totalRecords'
3558
                }
3559
            }
3560
        });
3561
        Ext.applyIf(me, {
3562
            autoScroll: true,
3563
            enableLocking: true,
3564
            lockedGridConfig: {
3565
                header: false,
3566
                collapsible: true,
3567
                width: 250,
3568
                forceFit: true,
3569
                listeners: {
3570
                    render: function (grid) {
3571
                        var pagingToolbar = grid.child('pagingtoolbar');
3572
                        if (pagingToolbar) {
3573
                            grid.remove(pagingToolbar, true);
3574
                        }
3575
                    }
3576
                }
3577
            },
3578
            listeners: {
3579
                viewready: function () {
3580
                    if (autoLoad == true) {
3581
                        this.getStore().loadPage(1);
3582
                    }
3583

    
3584
                },
3585
                beforeedit: function () {
3586
                    return false;
3587
                }
3588
            },
3589
            lockedViewConfig: {
3590
                scroll: 'horizontal'
3591
            },
3592
            viewConfig: {
3593
                emptyText: 'No Data Display',
3594
                deferEmptyText: false,
3595
                //add Nana for Autosize Column Mode
3596
                listeners: {
3597
                    refresh: function (dataview) {
3598
                        Ext.each(dataview.panel.columns, function (column) {
3599
                            if (column.autoSizeColumn == false)
3600
                                column.autoSizeColumn = true;
3601
                            column.autoSize();
3602
                        })
3603
                    }
3604
                }
3605
            },
3606
            columns: cols_,
3607

    
3608
            store: jsStoreGrid,
3609

    
3610
            plugins: [{
3611
                ptype: 'gridfilters'
3612
            }, {
3613
                ptype: 'rowediting',
3614
                clicksToEdit: 2,
3615
                listeners: {
3616
                    edit: function (editor, context, eOpts) {}
3617
                }
3618
            }, ]
3619
        });
3620
        me.callParent(arguments);
3621
    }
3622

    
3623
});
3624
/*MinovaGrid Report Generator*/
3625
Ext.define('MinovaUtil.MinovaES.MinovaRptGeneratorGrid', {
3626
    extend: 'Ext.grid.Panel',
3627
    requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3628
    alias: 'widget.minovareportgeneratorgrid',
3629
    storeOutput: undefined,
3630
    storeName: undefined,
3631
    filter: undefined,
3632
    tableName: undefined,
3633
    pagesize: undefined,
3634
    autoLoad: undefined,
3635
    initComponent: function () {
3636
        var me = this;
3637
        var store = me.storeOutput;
3638
        var cols = [];
3639
        var groupField = '';
3640
        var autoLoad = true;
3641
        if (me.autoLoad == false) {
3642
            autoLoad = false;
3643
        }
3644
        if (store.length > 0) {
3645
            Ext.each(store, function (rec) {
3646
                var isHide = false;
3647
                if (rec.IsGrouping == "YES") {
3648
                    groupField = rec.FieldName;
3649
                    isHide = true;
3650
                }
3651
                var format = rec.FormatRef;
3652
                if (format != null && format != undefined)
3653
                    format = format.toLowerCase();
3654
                switch (format) {
3655
                    case "file":
3656
                        cols.push({
3657
                            xtype: 'minovapicturecolumn',
3658
                            text: rec.HeaderTitle,
3659
                            dataIndex: rec.FieldName,
3660
                            hidden: isHide,
3661
                            width: 100
3662
                        });
3663
                        break
3664
                    case "date":
3665
                        cols.push({
3666
                            xtype: 'minovadatecolumn',
3667
                            text: rec.HeaderTitle,
3668
                            dataIndex: rec.FieldName,
3669
                            hidden: isHide,
3670
                            width: 100
3671
                        });
3672
                        break
3673
                    case "amount":
3674
                        cols.push({
3675
                            xtype: 'minovacurrancycolumn',
3676
                            text: rec.HeaderTitle,
3677
                            align: 'right',
3678
                            dataIndex: rec.FieldName,
3679
                            width: 150,
3680
                            hidden: isHide,
3681
                            summaryType: rec.Aggregator,
3682
                            summaryRenderer: function (value) {
3683
                                return Ext.util.Format.number(value, '0,000.00');
3684
                            }
3685
                        });
3686
                        break
3687
                    case "amountencrypt":
3688
                        cols.push({
3689
                            xtype: 'minovaamountcolumn',
3690
                            align: 'right',
3691
                            text: rec.HeaderTitle,
3692
                            dataIndex: rec.FieldName,
3693
                            width: 150,
3694
                            hidden: isHide,
3695
                            summaryType: rec.Aggregator,
3696
                            summaryRenderer: function (value) {
3697
                                if (rec.Aggregator == "sum") {
3698
                                    var str = Ext.StoreManager.lookup("store" + me.tableName);
3699
                                    var records = str.data.items;
3700
                                    var total = 0,
3701
                                    len = records.length;
3702
                                    if (len > 0) {
3703
                                        for (var i = 0; i < len; ++i) {
3704
                                            var nilai = records[i].get(rec.FieldName);
3705
                                            Ext.Ajax.request({
3706
                                                async: false,
3707
                                                method: 'POST',
3708
                                                url: '/Devt/DecryptData',
3709
                                                params: {
3710
                                                    dt: nilai
3711
                                                },
3712
                                                success: function (response) {
3713
                                                    var results = Ext.decode(response.responseText);
3714
                                                    nilai = results.data;
3715
                                                    total += parseFloat(nilai);
3716
                                                }
3717
                                            });
3718
                                        }
3719
                                        Ext.util.Format.thousandSeparator = ".";
3720
                                        return Ext.util.Format.number(total, '0,000');
3721
                                    }
3722
                                    return 0;
3723
                                } else if (rec.Aggregator == "average") {
3724
                                    var str = Ext.StoreManager.lookup("store" + me.tableName);
3725
                                    var records = str.data.items;
3726
                                    var len = records.length,
3727
                                    sum = 0;
3728
                                    if (len > 0) {
3729
                                        for (var i = 0; i < len; ++i) {
3730
                                            var nilai = records[i].get(rec.FieldName);
3731
                                            Ext.Ajax.request({
3732
                                                async: false,
3733
                                                method: 'POST',
3734
                                                url: '/Devt/DecryptData',
3735
                                                params: {
3736
                                                    dt: nilai
3737
                                                },
3738
                                                success: function (response) {
3739
                                                    var results = Ext.decode(response.responseText);
3740
                                                    nilai = results.data;
3741
                                                    sum += parseFloat(nilai);
3742
                                                }
3743
                                            });
3744
                                        }
3745
                                        var rs = sum / len;
3746
                                        Ext.util.Format.thousandSeparator = ".";
3747
                                        return Ext.util.Format.number(rs, '0,000');
3748
                                    }
3749
                                    return 0;
3750
                                } else {
3751
                                    return value;
3752
                                }
3753
                            }
3754
                        });
3755
                        break
3756
                    case "datetime":
3757
                        cols.push({
3758
                            xtype: 'minovadatetimecolumn',
3759
                            text: rec.HeaderTitle,
3760
                            dataIndex: rec.FieldName,
3761
                            width: 150,
3762
                            hidden: isHide
3763
                        });
3764
                        break
3765
                    default:
3766
                        if (rec.TableRef != "" && rec.TableRef != null) {
3767
                            var valueField = null;
3768
                            var displayValue = null;
3769
                            Ext.Ajax.request({
3770
                                async: false,
3771
                                method: 'POST',
3772
                                url: '/UserControl/GetStore',
3773
                                params: {
3774
                                    tableName: 'SDATATABLEFIELD',
3775
                                    param: 'TableName[equal]' + rec.TableRef
3776
                                },
3777
                                success: function (response) {
3778
                                    var results = Ext.decode(response.responseText);
3779
                                    data_ = results.data;
3780
                                    if (data_.length > 0) {
3781
                                        valueField_ = $.grep(data_, function (r) {
3782
                                            return r.ValueField == '1'
3783
                                        });
3784
                                        valueField = valueField_[0].FieldName
3785
                                        displayValue_ = $.grep(data_, function (r) {
3786
                                            return r.DisplayValue == '1'
3787
                                        });
3788
                                        displayValue = displayValue_[0].FieldName
3789
                                    } else {
3790
                                        MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
3791
                                    }
3792
                                }
3793
                            });
3794
                            var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3795
                            var count_ = 0;
3796
                            if (store_) {
3797
                                count_ = store_.count();
3798
                            }
3799
                            if (count_ == 0) {
3800
                                Ext.create('Ext.data.Store', {
3801
                                    storeId: 'store_' + rec.FieldName,
3802
                                    autoLoad: false,
3803
                                    proxy: {
3804
                                        method: 'POST',
3805
                                        type: 'ajax',
3806
                                        url: '/UserControl/GetStore',
3807
                                        extraParams: {
3808
                                            tableName: rec.TableRef,
3809
                                            param: ""
3810
                                        },
3811
                                        reader: {
3812
                                            type: 'json',
3813
                                            root: 'data',
3814
                                            totalProperty: 'data[0].TotalCount'
3815
                                        }
3816
                                    }
3817
                                })
3818
                            }
3819
                            Ext.StoreMgr.lookup('store_' + rec.FieldName).load();
3820
                            var stror = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3821
                            cols.push({
3822
                                xtype: 'minovacombocolumn',
3823
                                text: rec.HeaderTitle,
3824
                                dataIndex: rec.FieldName,
3825
                                valueField: valueField,
3826
                                displayField: displayValue,
3827
                                store: 'store_' + rec.FieldName,
3828
                                width: 200,
3829
                                hidden: isHide,
3830
                                renderer: function (val) {
3831
                                    var stor = stror;
3832
                                    if (stor.getCount() === 0) {}
3833
                                    var index = stor.find(valueField, val);
3834
                                    if (index != -1) {
3835
                                        var rec = stor.getAt(index);
3836
                                        return val + ' - ' + rec.get(displayValue);
3837
                                    } else {
3838
                                        return val;
3839
                                    }
3840
                                }
3841
                            });
3842
                        } else if (rec.FixedValue != "" && rec.FixedValue != null) {
3843
                            cols.push({
3844
                                xtype: 'minovacombocolumnfixvalue',
3845
                                text: rec.HeaderTitle,
3846
                                dataIndex: rec.FieldName,
3847
                                fixedValue: rec.FixedValue,
3848
                                width: 100,
3849
                                hidden: isHide
3850
                            });
3851
                        } else {
3852
                            if (rec.DataType == "0") {
3853
                                cols.push({
3854
                                    text: rec.HeaderTitle,
3855
                                    dataIndex: rec.FieldName,
3856
                                    width: 150,
3857
                                    hidden: isHide
3858
                                });
3859
                            } else {
3860
                                cols.push({
3861
                                    text: rec.HeaderTitle,
3862
                                    dataIndex: rec.FieldName,
3863
                                    width: 150,
3864
                                    hidden: isHide,
3865
                                    summaryType: rec.Aggregator,
3866
                                });
3867
                            }
3868
                        }
3869
                        break
3870
                }
3871
            });
3872
            var featuretype = "summary";
3873
            if (groupField != "") {
3874
                featuretype = "groupingsummary";
3875
            }
3876
            var param = me.filter;
3877
            if (param == undefined) {
3878
                param = ''
3879
            }
3880
            var jsStoreGrid = new Ext.data.Store({
3881
                storeId: me.storeName,
3882
                autoLoad: autoLoad,
3883
                pageSize: me.pagesize,
3884
                proxy: {
3885
                    method: 'POST',
3886
                    type: 'ajax',
3887
                    url: '/UserControl/GetStorePagingAuth',
3888
                    extraParams: {
3889
                        tableName: me.tableName,
3890
                        param: param,
3891
                        menuId: MinovaUtil.GetMenuID()
3892
                    },
3893
                    reader: {
3894
                        type: 'json',
3895
                        root: 'data',
3896
                        totalProperty: 'totalRecords'
3897
                    }
3898
                },
3899
                groupField: groupField
3900
            });
3901
            Ext.applyIf(me, {
3902
                autoScroll: true,
3903
                enableLocking: false,
3904
                lockedGridConfig: {
3905
                    header: false,
3906
                    collapsible: true,
3907
                    width: 250,
3908
                    forceFit: false,
3909
                    listeners: {
3910
                        render: function (grid) {
3911
                            var pagingToolbar = grid.child('pagingtoolbar');
3912
                            if (pagingToolbar) {
3913
                                grid.remove(pagingToolbar, true);
3914
                            }
3915
                        }
3916
                    }
3917
                },
3918
                listeners: {
3919
                    viewready: function () {
3920
                        if (autoLoad == true) {
3921
                            this.getStore().loadPage(1);
3922
                        }
3923
                    },
3924
                    beforeedit: function () {
3925
                        return false;
3926
                    }
3927
                },
3928
                lockedViewConfig: {
3929
                    scroll: 'horizontal'
3930
                },
3931
                viewConfig: {
3932
                    emptyText: 'No Data Display',
3933
                    deferEmptyText: false
3934
                },
3935
                selModel: {},
3936
                columns: cols,
3937
                store: jsStoreGrid,
3938
                features: [{
3939
                    ftype: 'groupingsummary'
3940
                }
3941
                ],
3942
                plugins: [{
3943
                    ptype: 'gridfilters'
3944
                }
3945
                ]
3946
            });
3947
        }
3948
        me.callParent(arguments);
3949
    }
3950
});
3951
/*MinovaGrouping Grid*/
3952
Ext.define('MinovaUtil.MinovaES.MinovaGroupingGrid', {
3953
    extend: 'Ext.grid.Panel',
3954
    requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3955
    alias: 'widget.minovagroupinggrid',
3956
    tableName: undefined,
3957
    isLookup: undefined,
3958
    param: undefined,
3959
    pagesize: undefined,
3960
    storeName: undefined,
3961
    layoutType: undefined,
3962
    enableLocking: true,
3963
    autoLoad: undefined,
3964
    multiSelect: undefined,
3965
    getTableName: function () {
3966
        return this.tableName;
3967
    },
3968
    initComponent: function () {
3969
        var me = this;
3970
        var cols_ = [];
3971
        var fieldeditor = {};
3972
        var hasil = null;
3973
        var autoLoad = true;
3974
        var LangID = localStorage.LangId;
3975
        var fielGrid = 'rec.GridView == 1';
3976
        var locking = true;
3977
        var checkSelection = '';
3978
        var widthLock = 250;
3979
        var GroupField = '';
3980
        if (me.multiSelect) {
3981
            locking = false;
3982
            checkSelection = 'checkboxmodel';
3983
            widthLock = 40;
3984
        }
3985
        if (me.autoLoad == false) {
3986
            autoLoad = false;
3987
        }
3988
        parameter = null;
3989
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3990
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
3991
            fielGrid = 'rec.LookupGrid == 1';
3992
            locking = false;
3993
        } else {
3994
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3995
        };
3996

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

    
4191
                } else {
4192
                    if (rec.GridView == 1) {
4193
                        switch (rec.FormatRef) {
4194
                            case "date":
4195
                                cols_.push({
4196
                                    xtype: 'minovadatecolumn',
4197
                                    text: rec.HeaderTitle,
4198
                                    dataIndex: rec.FieldName,
4199
                                    width: 100,
4200
                                    flex: 1,
4201
                                    filter: {
4202
                                        type: 'date',
4203
                                        itemDefaults: {
4204
                                            emptyText: 'Search for...'
4205
                                        }
4206
                                    }
4207
                                });
4208
                                break
4209
                            case "amountencrypt":
4210
                                cols_.push({
4211
                                    xtype: 'minovaamountcolumn',
4212
                                    align: 'right',
4213
                                    text: rec.HeaderTitle,
4214
                                    dataIndex: rec.FieldName,
4215
                                    width: 100,
4216
                                    flex: 1,
4217
                                    filter: {
4218
                                        type: 'string',
4219
                                        itemDefaults: {
4220
                                            emptyText: 'Search for...'
4221
                                        }
4222
                                    }
4223
                                });
4224
                                break
4225
                            case "amount":
4226
                                cols_.push({
4227
                                    xtype: 'minovacurrancycolumn',
4228
                                    text: rec.HeaderTitle,
4229
                                    align: 'right',
4230
                                    dataIndex: rec.FieldName,
4231
                                    width: 100,
4232
                                    flex: 1,
4233
                                    filter: {
4234
                                        type: 'number',
4235
                                        itemDefaults: {
4236
                                            emptyText: 'Search for...'
4237
                                        }
4238
                                    }
4239
                                });
4240
                                break
4241
                            case "datetime":
4242
                                cols_.push({
4243
                                    xtype: 'minovadatetimecolumn',
4244
                                    text: rec.HeaderTitle,
4245
                                    dataIndex: rec.FieldName,
4246
                                    width: 140,
4247
                                    flex: 1,
4248
                                    filter: {
4249
                                        type: 'string',
4250
                                        itemDefaults: {
4251
                                            emptyText: 'Search for...'
4252
                                        }
4253
                                    }
4254
                                });
4255
                                break
4256
                            default:
4257
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
4258
                                    cols_.push({
4259
                                        text: rec.HeaderTitle,
4260
                                        dataIndex: rec.FieldName,
4261
                                        width: 100,
4262
                                        flex: 1,
4263
                                        filter: {
4264
                                            type: 'string',
4265
                                            itemDefaults: {
4266
                                                emptyText: 'Search for...'
4267
                                            }
4268
                                        }
4269
                                    });
4270
                                } else if (rec.TableRef != "") {
4271
                                    if (rec.TableRef != null) {
4272
                                        var valueField = null;
4273
                                        var displayValue = null;
4274
                                        Ext.Ajax.request({
4275
                                            async: false,
4276
                                            method: 'POST',
4277
                                            url: '/UserControl/GetStore',
4278
                                            params: {
4279
                                                tableName: 'SDATATABLEFIELD',
4280
                                                param: 'TableName[equal]' + rec.TableRef
4281
                                            },
4282
                                            success: function (response) {
4283
                                                var results = Ext.decode(response.responseText);
4284
                                                data_ = results.data;
4285
                                                if (data_ != undefined) {
4286
                                                    valueField_ = $.grep(data_, function (r) {
4287
                                                        return r.ValueField == '1'
4288
                                                    });
4289
                                                    valueField = valueField_[0].FieldName
4290
                                                    displayValue_ = $.grep(data_, function (r) {
4291
                                                        return r.DisplayValue == '1'
4292
                                                    });
4293
                                                    displayValue = displayValue_[0].FieldName
4294
                                                }
4295
                                            }
4296
                                        });
4297
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
4298
                                        var count_ = 0;
4299
                                        if (store_) {
4300
                                            count_ = store_.count();
4301
                                        }
4302
                                        if (count_ == 0) {
4303
                                            Ext.create('Ext.data.Store', {
4304
                                                storeId: 'store_' + rec.FieldName,
4305
                                                autoLoad: false,
4306
                                                proxy: {
4307
                                                    method: 'POST',
4308
                                                    type: 'ajax',
4309
                                                    url: '/UserControl/GetStore',
4310
                                                    extraParams: {
4311
                                                        tableName: rec.TableRef,
4312
                                                        param: rec.ParamCombo
4313
                                                    },
4314
                                                    reader: {
4315
                                                        type: 'json',
4316
                                                        root: 'data',
4317
                                                        totalProperty: 'data[0].TotalCount'
4318
                                                    }
4319
                                                }
4320
                                            })
4321
                                        }
4322
                                        cols_.push({
4323
                                            xtype: 'minovacombocolumn',
4324
                                            text: rec.HeaderTitle,
4325
                                            dataIndex: rec.FieldName,
4326
                                            valueField: valueField,
4327
                                            displayField: displayValue,
4328
                                            store: 'store_' + rec.FieldName,
4329
                                            flex: 1,
4330
                                            filter: {
4331
                                                type: 'list',
4332
                                                itemDefaults: {
4333
                                                    emptyText: 'Search for...'
4334
                                                }
4335
                                            }
4336
                                        });
4337
                                    }
4338

    
4339
                                } else {
4340
                                    cols_.push({
4341
                                        text: rec.HeaderTitle,
4342
                                        dataIndex: rec.FieldName,
4343
                                        flex: 1,
4344
                                        filter: {
4345
                                            itemDefaults: {
4346
                                                emptyText: 'Search for...'
4347
                                            }
4348
                                        }
4349
                                    });
4350
                                }
4351
                                break
4352
                        }
4353
                    } else {
4354
                        cols_.push({
4355
                            text: rec.HeaderTitle,
4356
                            dataIndex: rec.FieldName,
4357
                            hidden: true,
4358
                            filter: {
4359
                                itemDefaults: {
4360
                                    emptyText: 'Search for...'
4361
                                }
4362
                            }
4363
                        });
4364
                    }
4365

    
4366
                }
4367
            });
4368
        }
4369
        var param_ = me.param;
4370
        if (param_ == undefined) {
4371
            param_ = ''
4372
        }
4373
        var jsStoreGrid = new Ext.data.Store({
4374
            storeId: me.storeName,
4375
            autoLoad: autoLoad,
4376
            pageSize: me.pagesize,
4377
            proxy: {
4378
                method: 'POST',
4379
                type: 'ajax',
4380
                url: '/UserControl/GetStorePagingAuth',
4381
                extraParams: {
4382
                    tableName: me.tableName,
4383
                    param: param_,
4384
                    menuId: MinovaUtil.GetMenuID()
4385
                },
4386
                reader: {
4387
                    type: 'json',
4388
                    root: 'data',
4389
                    totalProperty: 'totalRecords'
4390
                }
4391
            },
4392
            groupField: GroupField,
4393
            //sorters: ['tipe','cuisine','name'],
4394
        });
4395
        Ext.applyIf(me, {
4396
            autoScroll: true,
4397
            enableLocking: locking,
4398
            lockedGridConfig: {
4399
                header: false,
4400
                collapsible: true,
4401
                width: widthLock,
4402
                forceFit: locking,
4403
                listeners: {
4404
                    render: function (grid) {
4405
                        var pagingToolbar = grid.child('pagingtoolbar');
4406
                        if (pagingToolbar) {
4407
                            grid.remove(pagingToolbar, true);
4408
                        }
4409
                    }
4410
                }
4411
            },
4412
            listeners: {
4413
                viewready: function () {
4414
                    if (autoLoad == true) {
4415
                        this.getStore().loadPage(1);
4416
                    }
4417

    
4418
                },
4419
                beforeedit: function () {
4420
                    return false;
4421
                }
4422
            },
4423
            lockedViewConfig: {
4424
                scroll: 'horizontal'
4425
            },
4426
            viewConfig: {
4427
                emptyText: 'No Data Display',
4428
                deferEmptyText: false,
4429
                listeners: {
4430
                    refresh: function (dataview) {
4431
                        Ext.each(dataview.panel.columns, function (column) {
4432
                            if (column.autoSizeColumn == false)
4433
                                column.autoSizeColumn = true;
4434
                            column.autoSize();
4435
                        })
4436
                    }
4437
                }
4438
            },
4439
            selModel: {},
4440
            selType: checkSelection,
4441
            columns: cols_,
4442
            store: jsStoreGrid,
4443
            features: [{
4444
                ftype: 'grouping'
4445
            }
4446
            ],
4447
            plugins: [{
4448
                ptype: 'gridfilters'
4449
            }
4450
            ]
4451
        });
4452
        me.callParent(arguments);
4453
    }
4454
});
4455
/*Form ESS Generator*/
4456
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm', {
4457
    extend: 'Ext.form.Panel',
4458
    alias: ['widget.MinovaWorkflowForm', 'widget.minovaworkflowform', 'widget.workflowform'],
4459
    formname: this.name,
4460
    bizprocid: undefined,
4461
    taskid: undefined,
4462
    tableName: undefined,
4463
    titleform: undefined,
4464
    resizable: true,
4465
    border: false,
4466
    autoScroll: true,
4467
    minHeight: 20,
4468
    layout: 'column',
4469
    listeners: {
4470
        render: function () {
4471
            if (this.titleform != undefined) {
4472
                this.setTitle(this.titleform);
4473
            }
4474
        },
4475
    },
4476
    defaults: {
4477
        layout: 'form',
4478
        xtype: 'container',
4479
        defaultType: 'textfield',
4480
        style: 'width: 50%',
4481
    },
4482
    initComponent: function () {
4483
        var col1 = [];
4484
        var col2 = [];
4485
        var me = this;
4486
        var LangID = localStorage.LangId;
4487
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
4488
        var formname_ = me.name;
4489
        var nameTable_ = me.tableName;
4490
        Ext.Ajax.request({
4491
            async: false,
4492
            method: 'POST',
4493
            url: '/UserControl/GetStore',
4494
            params: {
4495
                tableName: 'PDSWFSTRUCTUREFIELD',
4496
                param: parameter
4497
            },
4498
            success: function (response) {
4499
                var results = Ext.decode(response.responseText);
4500
                hasil = results.data;
4501
            }
4502
        });
4503
        if (hasil.length > 0) {
4504
            Ext.each(hasil, function (rec) {
4505
                var formfield = undefined;
4506
                var readonly = false;
4507
                var ishidden = false;
4508
                var allowblank = true;
4509
                var startDt = null;
4510
                var endDt = null;
4511
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4512
                    startDt = 'StartDate';
4513
                    endDt = 'EndDate';
4514
                }
4515
                if (rec.IsReadOnly == '1') {
4516
                    readonly = true;
4517
                }
4518
                if (rec.IsRequired == '1') {
4519
                    allowblank = false;
4520
                }
4521
                if (rec.IsVisible == '0') {
4522
                    ishidden = true;
4523
                }
4524
                if (rec.SearchType == "") //textfield
4525
                {
4526
                    switch (rec.FormatRef) {
4527
                        case "date":
4528
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4529
                                formfield = new Ext.form.DateField({
4530
                                    allowBlank: allowblank,
4531
                                    fieldLabel: rec.ScreenCaption,
4532
                                    readOnly: readonly,
4533
                                    msgTarget: 'side',
4534
                                    labelCls: 'label-minova',
4535
                                    labelWidth: 150,
4536
                                    hidden: ishidden,
4537
                                    name: rec.FieldName,
4538
                                    submitFormat: 'Ymd',
4539
                                    value: rec.DefaultValue,
4540
                                    anchor: '100%',
4541
                                    vtype: 'daterange',
4542
                                    start: startDt,
4543
                                    end: endDt,
4544
                                    formname: formname_,
4545
                                    nameTable: nameTable_,
4546
                                    hideMode: 'visibility',
4547
                                    listeners: {
4548
                                        change: function (val) {
4549
                                            var _label = val.name;
4550
                                            var _form = val.formname;
4551
                                            var _Value = val.getValue();
4552
                                            var target = rec.TriggerCombo;
4553
                                            var custumFunc = rec.SelectFunction;
4554
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4555
                                                Ext.Ajax.request({
4556
                                                    async: false,
4557
                                                    method: 'POST',
4558
                                                    url: '/UserControl/GetStore',
4559
                                                    params: {
4560
                                                        tableName: 'PCMFUNC',
4561
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4562
                                                    },
4563
                                                    success: function (response) {
4564
                                                        var results = Ext.decode(response.responseText);
4565
                                                        data_ = results.data[0];
4566
                                                        if (data_ != undefined) {
4567
                                                            custumFunc = data_.FunctionCode;
4568
                                                        }
4569
                                                    }
4570
                                                });
4571
                                            }
4572
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4573
                                            if (frm) {
4574
                                                if (custumFunc) {
4575
                                                    eval(custumFunc)
4576
                                                }
4577
                                            }
4578
                                        }
4579
                                    }
4580
                                });
4581
                            } else {
4582
                                formfield = new Ext.form.DateField({
4583
                                    allowBlank: allowblank,
4584
                                    fieldLabel: rec.ScreenCaption,
4585
                                    readOnly: readonly,
4586
                                    msgTarget: 'side',
4587
                                    labelCls: 'label-minova',
4588
                                    labelWidth: 150,
4589
                                    hidden: ishidden,
4590
                                    name: rec.FieldName,
4591
                                    submitFormat: 'Ymd',
4592
                                    value: rec.DefaultValue,
4593
                                    anchor: '100%',
4594
                                    formname: formname_,
4595
                                    nameTable: nameTable_,
4596
                                    hideMode: 'visibility',
4597
                                    listeners: {
4598
                                        change: function (val) {
4599
                                            var _label = val.name;
4600
                                            var _form = val.formname;
4601
                                            var _Value = val.getValue();
4602
                                            var target = rec.TriggerCombo;
4603
                                            var custumFunc = rec.SelectFunction;
4604
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4605
                                                Ext.Ajax.request({
4606
                                                    async: false,
4607
                                                    method: 'POST',
4608
                                                    url: '/UserControl/GetStore',
4609
                                                    params: {
4610
                                                        tableName: 'PCMFUNC',
4611
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4612
                                                    },
4613
                                                    success: function (response) {
4614
                                                        var results = Ext.decode(response.responseText);
4615
                                                        data_ = results.data[0];
4616
                                                        if (data_ != undefined) {
4617
                                                            custumFunc = data_.FunctionCode;
4618
                                                        }
4619
                                                    }
4620
                                                });
4621
                                            }
4622
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4623
                                            if (frm) {
4624
                                                if (custumFunc) {
4625
                                                    eval(custumFunc)
4626
                                                }
4627
                                            }
4628
                                        }
4629
                                    }
4630
                                });
4631
                            }
4632
                            break;
4633
                        case "time":
4634
                            formfield = new Ext.form.TimeField({
4635
                                allowBlank: allowblank,
4636
                                fieldLabel: rec.ScreenCaption,
4637
                                readOnly: readonly,
4638
                                labelCls: 'label-minova',
4639
                                labelWidth: 150,
4640
                                hidden: ishidden,
4641
                                name: rec.FieldName,
4642
                                msgTarget: 'side',
4643
                                format: 'Hi',
4644
                                submitFormat: 'Hi',
4645
                                increment: 5,
4646
                                value: rec.DefaultValue,
4647
                                anchor: '100%',
4648
                                formname: formname_,
4649
                                nameTable: nameTable_,
4650
                                listeners: {
4651
                                    change: function (val) {
4652
                                        var _label = val.name;
4653
                                        var _form = val.formname;
4654
                                        var _Value = val.getValue();
4655
                                        var target = rec.TriggerCombo;
4656
                                        var custumFunc = rec.SelectFunction;
4657
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4658
                                            Ext.Ajax.request({
4659
                                                async: false,
4660
                                                method: 'POST',
4661
                                                url: '/UserControl/GetStore',
4662
                                                params: {
4663
                                                    tableName: 'PCMFUNC',
4664
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
4665
                                                },
4666
                                                success: function (response) {
4667
                                                    var results = Ext.decode(response.responseText);
4668
                                                    data_ = results.data[0];
4669
                                                    if (data_ != undefined) {
4670
                                                        custumFunc = data_.FunctionCode;
4671
                                                    }
4672
                                                }
4673
                                            });
4674
                                        }
4675
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4676
                                        if (frm) {
4677
                                            if (custumFunc) {
4678
                                                eval(custumFunc)
4679
                                            }
4680
                                        }
4681
                                    }
4682
                                }
4683
                            });
4684
                            break;
4685
                        case "amount":
4686
                            formfield = new Ext.form.TextField({
4687
                                allowBlank: allowblank,
4688
                                fieldLabel: rec.ScreenCaption,
4689
                                readOnly: readonly,
4690
                                labelCls: 'label-minova',
4691
                                labelWidth: 150,
4692
                                hidden: ishidden,
4693
                                name: rec.FieldName,
4694
                                msgTarget: 'side',
4695
                                value: rec.DefaultValue,
4696
                                maxLength: rec.Length,
4697
                                anchor: '100%',
4698
                                formname: formname_,
4699
                                nameTable: nameTable_,
4700
                                fieldStyle: 'text-align:right;',
4701
                                listeners: {
4702
                                    change: function (val) {
4703
                                        var _label = val.name;
4704
                                        var _form = val.formname;
4705
                                        var _Value = val.getValue();
4706
                                        var target = rec.TriggerCombo;
4707
                                        var custumFunc = rec.SelectFunction;
4708
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4709
                                            Ext.Ajax.request({
4710
                                                async: false,
4711
                                                method: 'POST',
4712
                                                url: '/UserControl/GetStore',
4713
                                                params: {
4714
                                                    tableName: 'PCMFUNC',
4715
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4716
                                                },
4717
                                                success: function (response) {
4718
                                                    var results = Ext.decode(response.responseText);
4719
                                                    data_ = results.data[0];
4720
                                                    if (data_ != undefined) {
4721
                                                        custumFunc = data_.FunctionCode;
4722
                                                    }
4723
                                                }
4724
                                            });
4725
                                        }
4726
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4727
                                        if (frm) {
4728
                                            if (custumFunc) {
4729
                                                eval(custumFunc)
4730
                                            }
4731
                                        }
4732
                                    }
4733
                                }
4734
                            });
4735
                            break;
4736
                        case "file":
4737
                            formfield = new MinovaUtil.MinovaES.UploadFile({
4738
                                allowBlank: allowblank,
4739
                                fieldLabel: rec.ScreenCaption,
4740
                                readOnly: readonly,
4741
                                readOnlyCls: 'minova-readonly',
4742
                                hidden: ishidden,
4743
                                labelCls: 'label-minova',
4744
                                name: rec.FieldName,
4745
                                msgTarget: 'side',
4746
                                fieldname: rec.FieldName,
4747
                                IsPrimaryKey: rec.IsPrimaryKey,
4748
                                tableName: rec.TableRef,
4749
                                triggerCls: 'x-form-search-trigger',
4750
                                formtarget: me.formname,
4751
                                anchor: '100%',
4752
                                formname: formname_,
4753
                                nameTable: nameTable_,
4754
                                listeners: {
4755
                                    change: function (val) {
4756
                                        var _label = val.name;
4757
                                        var _form = val.formname;
4758
                                        var _Value = val.getValue();
4759
                                        var target = rec.TriggerCombo;
4760
                                        var custumFunc = rec.SelectFunction;
4761
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4762
                                            Ext.Ajax.request({
4763
                                                async: false,
4764
                                                method: 'POST',
4765
                                                url: '/UserControl/GetStore',
4766
                                                params: {
4767
                                                    tableName: 'PCMFUNC',
4768
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4769
                                                },
4770
                                                success: function (response) {
4771
                                                    var results = Ext.decode(response.responseText);
4772
                                                    data_ = results.data[0];
4773
                                                    if (data_ != undefined) {
4774
                                                        custumFunc = data_.FunctionCode;
4775
                                                    }
4776
                                                }
4777
                                            });
4778
                                        }
4779
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4780
                                        if (frm) {
4781
                                            if (target) {
4782
                                                var f = frm.getForm().findField(target)
4783
                                                _store = f.getStore();
4784
                                                var _tbl = _store.proxy.extraParams.tableName;
4785
                                                var oldParam = _store.proxy.extraParams.param;
4786
                                                _store.proxy.extraParams = {
4787
                                                    tableName: _tbl,
4788
                                                    param: _label + '[=]' + _Value
4789
                                                };
4790
                                                _store.load();
4791
                                            }
4792
                                            if (custumFunc) {
4793
                                                eval(custumFunc)
4794
                                            }
4795
                                        }
4796
                                    }
4797
                                }
4798
                            });
4799
                            break;
4800
                        default:
4801
                            if (rec.DataType == 0) {
4802
                                if (rec.Length > 250) {
4803
                                    formfield = new Ext.form.TextArea({
4804
                                        allowBlank: allowblank,
4805
                                        fieldLabel: rec.ScreenCaption,
4806
                                        readOnly: readonly,
4807
                                        labelCls: 'label-minova',
4808
                                        labelWidth: 150,
4809
                                        hidden: ishidden,
4810
                                        name: rec.FieldName,
4811
                                        msgTarget: 'side',
4812
                                        value: rec.DefaultValue,
4813
                                        maxLength: rec.Length,
4814
                                        anchor: '100%',
4815
                                        formname: formname_,
4816
                                        nameTable: nameTable_,
4817
                                        listeners: {
4818
                                            change: function (val) {
4819
                                                var _label = val.name;
4820
                                                var _form = val.formname;
4821
                                                var _Value = val.getValue();
4822
                                                var target = rec.TriggerCombo;
4823
                                                var custumFunc = rec.SelectFunction;
4824
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4825
                                                    Ext.Ajax.request({
4826
                                                        async: false,
4827
                                                        method: 'POST',
4828
                                                        url: '/UserControl/GetStore',
4829
                                                        params: {
4830
                                                            tableName: 'PCMFUNC',
4831
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4832
                                                        },
4833
                                                        success: function (response) {
4834
                                                            var results = Ext.decode(response.responseText);
4835
                                                            data_ = results.data[0];
4836
                                                            if (data_ != undefined) {
4837
                                                                custumFunc = data_.FunctionCode;
4838
                                                            }
4839
                                                        }
4840
                                                    });
4841
                                                }
4842
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4843
                                                if (frm) {
4844
                                                    if (custumFunc) {
4845
                                                        eval(custumFunc)
4846
                                                    }
4847
                                                }
4848
                                            }
4849
                                        }
4850
                                    });
4851
                                } else {
4852
                                    if (rec.FixedValue != '') {
4853
                                        var storeData = [];
4854
                                        var str = rec.FixedValue;
4855
                                        var hasil = str.split('||');
4856
                                        hasil.forEach(function (h) {
4857
                                            store_ = h.split('=')
4858
                                            storeData.push({
4859
                                                code: store_[0],
4860
                                                desc: store_[1],
4861
                                            });
4862
                                        });
4863
                                        formfield = new Ext.form.ComboBox({
4864
                                            allowBlank: allowblank,
4865
                                            fieldLabel: rec.ScreenCaption,
4866
                                            forceSelection: true,
4867
                                            readOnly: readonly,
4868
                                            labelCls: 'label-minova',
4869
                                            labelWidth: 150,
4870
                                            hidden: ishidden,
4871
                                            name: rec.FieldName,
4872
                                            msgTarget: 'side',
4873
                                            value: rec.DefaultValue,
4874
                                            anchor: '100%',
4875
                                            formname: formname_,
4876
                                            nameTable: nameTable_,
4877
                                            formtarget: me.formname,
4878
                                            store: Ext.create('Ext.data.Store', {
4879
                                                storeId: 'store' + rec.FieldName,
4880
                                                autoLoad: true,
4881
                                                data: storeData
4882

    
4883
                                            }),
4884
                                            listeners: {
4885
                                                change: function (val) {
4886
                                                    var _label = val.name;
4887
                                                    var _form = val.formtarget;
4888
                                                    var _Value = val.getValue();
4889
                                                    var target = rec.TriggerCombo;
4890
                                                    var custumFunc = rec.SelectFunction;
4891
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4892
                                                    if (frm) {
4893
                                                        if (target) {
4894
                                                            var f = frm.getForm().findField(target)
4895
                                                            _store = f.getStore();
4896
                                                            var _tbl = _store.proxy.extraParams.tableName;
4897
                                                            var oldParam = _store.proxy.extraParams.param;
4898
                                                            _store.proxy.extraParams = {
4899
                                                                tableName: _tbl,
4900
                                                                param: _label + '[=]' + _Value
4901
                                                            };
4902
                                                            _store.load();
4903
                                                        }
4904
                                                        if (custumFunc) {
4905
                                                            eval(custumFunc)
4906
                                                        }
4907
                                                    }
4908
                                                }
4909
                                            },
4910
                                            queryMode: 'local',
4911
                                            valueField: 'code',
4912
                                            displayField: 'desc',
4913
                                        });
4914
                                    } else {
4915
                                        formfield = new Ext.form.TextField({
4916
                                            allowBlank: allowblank,
4917
                                            fieldLabel: rec.ScreenCaption,
4918
                                            readOnly: readonly,
4919
                                            labelCls: 'label-minova',
4920
                                            labelWidth: 150,
4921
                                            hidden: ishidden,
4922
                                            name: rec.FieldName,
4923
                                            msgTarget: 'side',
4924
                                            value: rec.DefaultValue,
4925
                                            maxLength: rec.Length,
4926
                                            anchor: '100%',
4927
                                            formname: formname_,
4928
                                            nameTable: nameTable_,
4929
                                            listeners: {
4930
                                                change: function (val) {
4931
                                                    var _label = val.name;
4932
                                                    var _form = val.formname;
4933
                                                    var _Value = val.getValue();
4934
                                                    var target = rec.TriggerCombo;
4935
                                                    var custumFunc = rec.SelectFunction;
4936
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4937
                                                        Ext.Ajax.request({
4938
                                                            async: false,
4939
                                                            method: 'POST',
4940
                                                            url: '/UserControl/GetStore',
4941
                                                            params: {
4942
                                                                tableName: 'PCMFUNC',
4943
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4944
                                                            },
4945
                                                            success: function (response) {
4946
                                                                var results = Ext.decode(response.responseText);
4947
                                                                data_ = results.data[0];
4948
                                                                if (data_ != undefined) {
4949
                                                                    custumFunc = data_.FunctionCode;
4950
                                                                }
4951
                                                            }
4952
                                                        });
4953
                                                    }
4954
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4955
                                                    if (frm) {
4956
                                                        if (custumFunc) {
4957
                                                            eval(custumFunc)
4958
                                                        }
4959
                                                    }
4960
                                                }
4961
                                            }
4962
                                        });
4963
                                    }
4964
                                }
4965
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
4966
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
4967
                                    allowBlank: allowblank,
4968
                                    fieldLabel: rec.ScreenCaption,
4969
                                    readOnly: readonly,
4970
                                    labelCls: 'label-minova',
4971
                                    labelWidth: 150,
4972
                                    msgTarget: 'side',
4973
                                    hidden: ishidden,
4974
                                    name: rec.FieldName,
4975
                                    value: rec.DefaultValue,
4976
                                    maxLength: rec.Length,
4977
                                    anchor: '100%',
4978
                                    formname: formname_,
4979
                                    nameTable: nameTable_,
4980
                                    fieldStyle: 'text-align:right;',
4981
                                    listeners: {
4982
                                        change: function (val) {
4983
                                            var _label = val.name;
4984
                                            var _form = val.formname;
4985
                                            var _Value = val.getValue();
4986
                                            var target = rec.TriggerCombo;
4987
                                            var custumFunc = rec.SelectFunction;
4988
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4989
                                                Ext.Ajax.request({
4990
                                                    async: false,
4991
                                                    method: 'POST',
4992
                                                    url: '/UserControl/GetStore',
4993
                                                    params: {
4994
                                                        tableName: 'PCMFUNC',
4995
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4996
                                                    },
4997
                                                    success: function (response) {
4998
                                                        var results = Ext.decode(response.responseText);
4999
                                                        data_ = results.data[0];
5000
                                                        if (data_ != undefined) {
5001
                                                            custumFunc = data_.FunctionCode;
5002
                                                        }
5003
                                                    }
5004
                                                });
5005
                                            }
5006
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5007
                                            if (frm) {
5008
                                                if (target) {
5009
                                                    var f = frm.getForm().findField(target)
5010
                                                    _store = f.getStore();
5011
                                                    var _tbl = _store.proxy.extraParams.tableName;
5012
                                                    var oldParam = _store.proxy.extraParams.param;
5013
                                                    _store.proxy.extraParams = {
5014
                                                        tableName: _tbl,
5015
                                                        param: _label + '[=]' + _Value
5016
                                                    };
5017
                                                    _store.load();
5018
                                                }
5019
                                                if (custumFunc) {
5020
                                                    eval(custumFunc)
5021
                                                }
5022
                                            }
5023
                                        }
5024
                                    }
5025
                                });
5026
                            } else if (rec.DataType == 3) {
5027
                                formfield = new Ext.form.TextField({
5028
                                    allowBlank: allowblank,
5029
                                    fieldLabel: rec.ScreenCaption,
5030
                                    readOnly: readonly,
5031
                                    labelCls: 'label-minova',
5032
                                    labelWidth: 150,
5033
                                    msgTarget: 'side',
5034
                                    hidden: ishidden,
5035
                                    name: rec.FieldName,
5036
                                    value: rec.DefaultValue,
5037
                                    maxLength: rec.Length,
5038
                                    precision: rec.Prec,
5039
                                    anchor: '100%',
5040
                                    formname: formname_,
5041
                                    nameTable: nameTable_,
5042
                                    fieldStyle: 'text-align:right;',
5043
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
5044
                                    listeners: {
5045
                                        change: function (val) {
5046
                                            var _label = val.name;
5047
                                            var _form = val.formname;
5048
                                            var _Value = val.getValue();
5049
                                            var target = rec.TriggerCombo;
5050
                                            var custumFunc = rec.SelectFunction;
5051
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5052
                                                Ext.Ajax.request({
5053
                                                    async: false,
5054
                                                    method: 'POST',
5055
                                                    url: '/UserControl/GetStore',
5056
                                                    params: {
5057
                                                        tableName: 'PCMFUNC',
5058
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5059
                                                    },
5060
                                                    success: function (response) {
5061
                                                        var results = Ext.decode(response.responseText);
5062
                                                        data_ = results.data[0];
5063
                                                        if (data_ != undefined) {
5064
                                                            custumFunc = data_.FunctionCode;
5065
                                                        }
5066
                                                    }
5067
                                                });
5068
                                            }
5069
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5070
                                            if (frm) {
5071
                                                if (target) {
5072
                                                    var f = frm.getForm().findField(target)
5073
                                                    _store = f.getStore();
5074
                                                    var _tbl = _store.proxy.extraParams.tableName;
5075
                                                    var oldParam = _store.proxy.extraParams.param;
5076
                                                    _store.proxy.extraParams = {
5077
                                                        tableName: _tbl,
5078
                                                        param: _label + '[=]' + _Value
5079
                                                    };
5080
                                                    _store.load();
5081
                                                }
5082
                                                if (custumFunc) {
5083
                                                    eval(custumFunc)
5084
                                                }
5085
                                            }
5086
                                        }
5087
                                    }
5088
                                });
5089
                            }
5090
                    }
5091
                } else if (rec.SearchType != "") {
5092
                    if (rec.SearchType == "0") //combobox
5093
                    {
5094
                        valueField = null;
5095
                        displayValue = null;
5096
						if (rec.TableRef != "") {
5097
							Ext.Ajax.request({
5098
								async: false,
5099
								method: 'POST',
5100
								url: '/UserControl/GetStore',
5101
								params: {
5102
									tableName: 'SDATATABLEFIELD',
5103
									param: 'TableName[equal]' + rec.TableRef
5104
								},
5105
								success: function (response) {
5106
									var results = Ext.decode(response.responseText);
5107
									data_ = results.data;
5108
									if (data_ != undefined) {
5109
										valueField_ = $.grep(data_, function (r) {
5110
											return r.ValueField == '1'
5111
										});
5112
										if (valueField_.length > 0) {
5113
											valueField = valueField_[0].FieldName
5114
										}
5115
										displayValue_ = $.grep(data_, function (r) {
5116
											return r.DisplayValue == '1'
5117
										});
5118
										if (displayValue_.length > 0) {
5119
											displayValue = displayValue_[0].FieldName
5120
										}
5121
									}
5122
								}
5123
							});
5124
						}
5125
                        formfield = new Ext.form.ComboBox({
5126
                            allowBlank: allowblank,
5127
                            fieldLabel: rec.ScreenCaption,
5128
                            forceSelection: true,
5129
							anyMatch: true,
5130
                            readOnly: readonly,
5131
                            labelCls: 'label-minova',
5132
                            labelWidth: 150,
5133
                            hidden: ishidden,
5134
                            msgTarget: 'side',
5135
                            name: rec.FieldName,
5136
                            formname: formname_,
5137
                            nameTable: nameTable_,
5138
                            value: rec.DefaultValue,
5139
                            width: '95%',
5140
                            store: Ext.create('Ext.data.Store', {
5141
                                storeId: 'store' + rec.FieldName,
5142
                                autoLoad: false,
5143
                                proxy: {
5144
                                    method: 'POST',
5145
                                    type: 'ajax',
5146
                                    url: '/UserControl/GetStore',
5147
                                    extraParams: {
5148
                                        tableName: rec.TableRef,
5149
                                        param: rec.ParamCombo
5150
                                    },
5151
                                    reader: {
5152
                                        type: 'json',
5153
                                        root: 'data',
5154
                                        totalProperty: 'data[0].TotalCount'
5155
                                    }
5156
                                }
5157
                            }),
5158
                            formtarget: formname_,
5159
                            listeners: {
5160
                                afterrender: function (f) {
5161
                                    var store_ = f.getStore();
5162
                                    store_.load();
5163
                                },
5164
                                change: function (val) {
5165
                                    var _label = val.name;
5166
                                    var _form = val.formtarget;
5167
                                    var _Value = val.getValue();
5168
                                    var target = rec.TriggerCombo;
5169
                                    var custumFunc = rec.SelectFunction;
5170
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5171
                                    if (frm) {
5172

    
5173
                                        if (target) {
5174
                                            var f = frm.getForm().findField(target)
5175
                                            _store = f.getStore();
5176
                                            var _tbl = _store.proxy.extraParams.tableName;
5177
                                            var oldParam = _store.proxy.extraParams.param;
5178
                                            _store.proxy.extraParams = {
5179
                                                tableName: _tbl,
5180
                                                param: _label + '[=]' + _Value
5181
                                            };
5182
                                            _store.load();
5183
                                        }
5184
                                        if (custumFunc) {
5185
                                            eval(custumFunc)
5186
                                        }
5187
                                    }
5188
                                }
5189
                            },
5190
                            queryMode: 'local',
5191
                            displayField: displayValue,
5192
                            valueField: valueField,
5193
                        });
5194
                    } else if (rec.SearchType == '2') //Lookup
5195
                    {
5196
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
5197
                            allowBlank: allowblank,
5198
                            fieldLabel: rec.ScreenCaption,
5199
                            readOnly: readonly,
5200
                            IsPrimaryKey: rec.IsPrimaryKey,
5201
                            msgTarget: 'side',
5202
                            labelCls: 'label-minova',
5203
                            labelWidth: 150,
5204
                            hidden: ishidden,
5205
                            name: rec.FieldName,
5206
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
5207
                            triggerCls: 'x-form-search-trigger',
5208
                            vtype: 'alphanum', // disable space
5209
                            formtarget: me.formname, // nama form  yang akan di set value-nya
5210
                            anchor: '100%',
5211
                            formname: formname_,
5212
                            nameTable: nameTable_,
5213
                            LookupFunction: rec.LookupFunction,
5214
                            SearchFunction: rec.SearchFunction,
5215
                            listeners: {
5216
                                change: function (val) {
5217
                                    var _label = val.name;
5218
                                    var _form = val.formname;
5219
                                    var _Value = val.getValue();
5220
                                    var target = rec.TriggerCombo;
5221
                                    var custumFunc = rec.SelectFunction;
5222
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5223
                                        Ext.Ajax.request({
5224
                                            async: false,
5225
                                            method: 'POST',
5226
                                            url: '/UserControl/GetStore',
5227
                                            params: {
5228
                                                tableName: 'PCMFUNC',
5229
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5230
                                            },
5231
                                            success: function (response) {
5232
                                                var results = Ext.decode(response.responseText);
5233
                                                data_ = results.data[0];
5234
                                                if (data_ != undefined) {
5235
                                                    custumFunc = data_.FunctionCode;
5236
                                                }
5237
                                            }
5238
                                        });
5239
                                    }
5240
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5241
                                    if (frm) {
5242

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

    
5255
                                        if (custumFunc) {
5256
                                            eval(custumFunc)
5257
                                        }
5258

    
5259
                                    }
5260

    
5261
                                },
5262

    
5263
                            },
5264
                        });
5265
                    } else if (rec.SearchType == '3') //lookup tree
5266
                    {
5267
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
5268
                            allowBlank: allowblank,
5269
                            fieldLabel: rec.ScreenCaption,
5270
                            readOnly: readonly,
5271
                            IsPrimaryKey: rec.IsPrimaryKey,
5272
                            labelCls: 'label-minova',
5273
                            labelWidth: 150,
5274
                            hidden: ishidden,
5275
                            name: rec.FieldName,
5276
                            msgTarget: 'side',
5277
                            triggerCls: 'x-form-search-trigger',
5278
                            treeSructure: rec.SearchFunction, //'O-O-P',
5279
                            objClassValue: rec.ParamCombo, //'O',
5280
                            formname: formname_,
5281
                            targetField: rec.FieldName,
5282
                            nameTable: nameTable_,
5283
                            editable: false,
5284
                            anchor: '100%',
5285
                            listeners: {
5286
                                change3: function (val) {
5287
                                    var _label = val.name;
5288
                                    var _form = val.formname;
5289
                                    var _Value = val.getValue();
5290
                                    var target = rec.TriggerCombo;
5291
                                    var custumFunc = rec.SelectFunction;
5292
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5293
                                        Ext.Ajax.request({
5294
                                            async: false,
5295
                                            method: 'POST',
5296
                                            url: '/UserControl/GetStore',
5297
                                            params: {
5298
                                                tableName: 'PCMFUNC',
5299
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5300
                                            },
5301
                                            success: function (response) {
5302
                                                var results = Ext.decode(response.responseText);
5303
                                                data_ = results.data[0];
5304
                                                if (data_ != undefined) {
5305
                                                    custumFunc = data_.FunctionCode;
5306
                                                }
5307
                                            }
5308
                                        });
5309
                                    }
5310
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5311
                                    if (frm) {
5312

    
5313
                                        if (target) {
5314
                                            var f = frm.getForm().findField(target)
5315
                                            _store = f.getStore();
5316
                                            var _tbl = _store.proxy.extraParams.tableName;
5317
                                            var oldParam = _store.proxy.extraParams.param;
5318
                                            _store.proxy.extraParams = {
5319
                                                tableName: _tbl,
5320
                                                param: _label + '[=]' + _Value
5321
                                            };
5322
                                            _store.load();
5323
                                        }
5324
                                        if (custumFunc) {
5325
                                            eval(custumFunc)
5326
                                        }
5327
                                    }
5328
                                },
5329
                                blur: function (val) {
5330
                                    //if(val.value.split('-').length != 2){
5331
                                    var _label = val.name;
5332
                                    var _form = val.formname;
5333
                                    var _Value = val.getValue();
5334
                                    var target = rec.TriggerCombo;
5335
                                    var custumFunc = rec.SelectFunction;
5336
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5337
                                        Ext.Ajax.request({
5338
                                            async: false,
5339
                                            method: 'POST',
5340
                                            url: '/UserControl/GetStore',
5341
                                            params: {
5342
                                                tableName: 'PCMFUNC',
5343
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5344
                                            },
5345
                                            success: function (response) {
5346
                                                var results = Ext.decode(response.responseText);
5347
                                                data_ = results.data[0];
5348
                                                if (data_ != undefined) {
5349
                                                    custumFunc = data_.FunctionCode;
5350
                                                }
5351
                                            }
5352
                                        });
5353
                                    }
5354
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5355
                                    if (frm) {
5356

    
5357
                                        if (target) {
5358
                                            var f = frm.getForm().findField(target)
5359
                                            _store = f.getStore();
5360
                                            var _tbl = _store.proxy.extraParams.tableName;
5361
                                            var oldParam = _store.proxy.extraParams.param;
5362
                                            _store.proxy.extraParams = {
5363
                                                tableName: _tbl,
5364
                                                param: _label + '[=]' + _Value
5365
                                            };
5366
                                            _store.load();
5367
                                        }
5368
                                        if (custumFunc) {
5369
                                            eval(custumFunc)
5370
                                        }
5371
                                    }
5372
                                    //}
5373
                                }
5374

    
5375
                            }
5376
                        });
5377
                    }
5378
                }
5379
                if (isDesk) {
5380
                    if (rec.ColumnNo == 1) {
5381
                        col1.push(formfield);
5382
                    } else {
5383
                        col2.push(formfield);
5384
                    }
5385
                } else {
5386
                    col1.push(formfield);
5387
                }
5388

    
5389
            });
5390
        }
5391
        Ext.applyIf(me, {
5392
            items: [{
5393
                //width: 450,
5394
                style: 'width: 50%',
5395
                items: col1
5396
            }, {
5397
                //width: 450,
5398
                style: 'width: 50%',
5399
                items: col2
5400
            }
5401
            ],
5402
        });
5403
        this.callParent();
5404
    }
5405
});
5406
/*Gird ESS Generator*/
5407
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowGrid', {
5408
    extend: 'Ext.grid.Panel',
5409
    requires: ['Ext.grid.RowNumberer'],
5410
    alias: 'widget.minovaworkflowgrid',
5411
    alternateClassName: 'Ext.grid.MinovaGrid',
5412
    tableName: undefined,
5413
    param: undefined,
5414
    pagesize: undefined,
5415
    storeName: undefined,
5416
    enableLocking: true,
5417
    autoLoad: undefined,
5418
    multiSelect: undefined,
5419
    formname: this.name,
5420
    bizprocid: undefined,
5421
    taskid: undefined,
5422
    initComponent: function () {
5423
        var me = this;
5424
        var cols_ = [];
5425
        var fieldeditor = {};
5426
        var hasil = null;
5427
        var autoLoad = true;
5428
        var locking = true;
5429
        var widthLock = 250;
5430
        if (me.autoLoad == false) {
5431
            autoLoad = false;
5432
        }
5433
        var LangID = MinovaUtil.GetLangID();
5434
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5435
        Ext.Ajax.request({
5436
            async: false,
5437
            method: 'POST',
5438
            url: '/UserControl/GetStore',
5439
            params: {
5440
                tableName: 'PDSWFSTRUCTUREFIELD',
5441
                param: parameter
5442
            },
5443
            success: function (response) {
5444
                var results = Ext.decode(response.responseText);
5445
                hasil = results.data;
5446
            }
5447
        });
5448

    
5449
        if (hasil.length > 0) {
5450
            Ext.each(hasil, function (rec) {
5451
                var readonly = false;
5452
                var ishidden = false;
5453
                var allowblank = true;
5454
                var null_ = null;
5455
                if (rec.IsReadOnly == '1') {
5456
                    readonly = true;
5457
                }
5458
                if (rec.IsRequired == '1') {
5459
                    allowblank = false;
5460
                }
5461
                if (rec.IsVisible == '1') {
5462
                    switch (rec.FormatRef) {
5463
                        case "date":
5464
                            cols_.push({
5465
                                xtype: 'minovadatecolumn',
5466
                                text: rec.HeaderTitle,
5467
                                dataIndex: rec.FieldName,
5468
                                width: 100
5469
                            });
5470
                            break
5471
                        case "amountencrypt":
5472
                            cols_.push({
5473
                                xtype: 'minovaamountcolumn',
5474
                                align: 'right',
5475
                                text: rec.HeaderTitle,
5476
                                dataIndex: rec.FieldName,
5477
                                width: 100
5478
                            });
5479
                            break
5480
                        case "amount":
5481
                            cols_.push({
5482
                                xtype: 'minovacurrancycolumn',
5483
                                align: 'right',
5484
                                text: rec.HeaderTitle,
5485
                                dataIndex: rec.FieldName,
5486
                                width: 100,
5487
                                filter: {
5488
                                    type: 'number',
5489
                                    itemDefaults: {
5490
                                        emptyText: 'Search for...'
5491
                                    }
5492
                                }
5493
                            });
5494
                            break
5495
                        case "datetime":
5496
                            cols_.push({
5497
                                xtype: 'minovadatetimecolumn',
5498
                                text: rec.HeaderTitle,
5499
                                dataIndex: rec.FieldName,
5500
                                width: 140,
5501
                                filter: {
5502
                                    type: 'string',
5503
                                    itemDefaults: {
5504
                                        emptyText: 'Search for...'
5505
                                    }
5506
                                }
5507
                            });
5508
                            break
5509
                        default:
5510
                            if (rec.TableRef != "") {
5511
                                if (rec.TableRef != null) {
5512
                                    var valueField = null;
5513
                                    var displayValue = null;
5514
                                    Ext.Ajax.request({
5515
                                        async: false,
5516
                                        method: 'POST',
5517
                                        url: '/UserControl/GetStore',
5518
                                        params: {
5519
                                            tableName: 'SDATATABLEFIELD',
5520
                                            param: 'TableName[equal]' + rec.TableRef
5521
                                        },
5522
                                        success: function (response) {
5523
                                            var results = Ext.decode(response.responseText);
5524
                                            data_ = results.data;
5525

    
5526
                                            if (data_ != undefined) {
5527
                                                if (data_.length > 0) {
5528
                                                    valueField_ = $.grep(data_, function (r) {
5529
                                                        return r.ValueField == '1'
5530
                                                    });
5531
                                                    valueField = valueField_[0].FieldName
5532
                                                    displayValue_ = $.grep(data_, function (r) {
5533
                                                        return r.DisplayValue == '1'
5534
                                                    });
5535
                                                    displayValue = displayValue_[0].FieldName
5536
                                                }
5537
                                            }
5538
                                        }
5539
                                    });
5540
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
5541
                                    var count_ = 0;
5542
                                    if (store_) {
5543
                                        count_ = store_.count();
5544
                                    }
5545
                                    if (count_ == 0) {
5546
                                        Ext.create('Ext.data.Store', {
5547
                                            storeId: 'store_' + rec.FieldName,
5548
                                            autoLoad: false,
5549
                                            proxy: {
5550
                                                method: 'POST',
5551
                                                type: 'ajax',
5552
                                                url: '/UserControl/GetStore',
5553
                                                extraParams: {
5554
                                                    tableName: rec.TableRef,
5555
                                                    param: rec.ParamCombo
5556
                                                },
5557
                                                reader: {
5558
                                                    type: 'json',
5559
                                                    root: 'data',
5560
                                                    totalProperty: 'data[0].TotalCount'
5561
                                                }
5562
                                            }
5563
                                        })
5564
                                    }
5565
                                    cols_.push({
5566
                                        xtype: 'minovacombocolumn',
5567
                                        text: rec.HeaderTitle,
5568
                                        dataIndex: rec.FieldName,
5569
                                        valueField: valueField,
5570
                                        displayField: displayValue,
5571
                                        store: 'store_' + rec.FieldName,
5572
                                        filter: {
5573
                                            type: 'list',
5574
                                            itemDefaults: {
5575
                                                emptyText: 'Search for...'
5576
                                            }
5577
                                        }
5578
                                    });
5579
                                }
5580
                            } else {
5581
                                cols_.push({
5582
                                    text: rec.HeaderTitle,
5583
                                    dataIndex: rec.FieldName,
5584
                                    filter: {
5585
                                        itemDefaults: {
5586
                                            emptyText: 'Search for...'
5587
                                        }
5588
                                    }
5589
                                });
5590
                            }
5591
                            break
5592
                    }
5593
                } else {
5594
                    cols_.push({
5595
                        text: rec.HeaderTitle,
5596
                        dataIndex: rec.FieldName,
5597
                        hidden: true,
5598
                        filter: {
5599
                            itemDefaults: {
5600
                                emptyText: 'Search for...'
5601
                            }
5602
                        }
5603
                    });
5604
                }
5605
            });
5606
        };
5607
        var param_ = me.param;
5608
        if (param_ == undefined) {
5609
            param_ = ''
5610
        }
5611
        var jsStoreGrid = new Ext.data.Store({
5612
            storeId: me.storeName,
5613
            autoLoad: autoLoad,
5614
            pageSize: 10,
5615
            proxy: {
5616
                method: 'POST',
5617
                type: 'ajax',
5618
                url: '/UserControl/GetStorePagingAuth',
5619
                extraParams: {
5620
                    tableName: me.tableName,
5621
                    param: param_,
5622
                    menuId: MinovaUtil.GetMenuID()
5623
                },
5624
                reader: {
5625
                    type: 'json',
5626
                    root: 'data',
5627
                    totalProperty: 'totalRecords'
5628
                }
5629
            }
5630
        });
5631
        Ext.applyIf(me, {
5632
            autoScroll: true,
5633
            enableLocking: locking,
5634
            lockedGridConfig: {
5635
                header: false,
5636
                collapsible: true,
5637
                width: widthLock,
5638
                forceFit: locking,
5639
                listeners: {
5640
                    render: function (grid) {
5641
                        var pagingToolbar = grid.child('pagingtoolbar');
5642
                        if (pagingToolbar) {
5643
                            grid.remove(pagingToolbar, true);
5644
                        }
5645
                    }
5646
                }
5647
            },
5648
            listeners: {
5649
                viewready: function () {
5650
                    if (autoLoad == true) {
5651
                        this.getStore().loadPage(1);
5652
                    }
5653

    
5654
                },
5655
                beforeedit: function () {
5656
                    return false;
5657
                }
5658
            },
5659
            lockedViewConfig: {
5660
                scroll: 'horizontal'
5661
            },
5662
            viewConfig: {
5663
                emptyText: 'No Data Display',
5664
                deferEmptyText: false,
5665
                listeners: {
5666
                    refresh: function (dataview) {
5667
                        Ext.each(dataview.panel.columns, function (column) {
5668
                            if (column.autoSizeColumn == false)
5669
                                column.autoSizeColumn = true;
5670
                            column.autoSize();
5671
                        })
5672
                    }
5673
                }
5674
            },
5675
            columns: cols_,
5676
            store: jsStoreGrid,
5677
            plugins: [{
5678
                ptype: 'gridfilters'
5679
            }
5680
            ]
5681
        });
5682
        this.callParent();
5683
    }
5684
});
5685
/*EditableGrid ESS Generator*/
5686
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid', {
5687
    extend: 'Ext.form.Panel',
5688
    alias: ['widget.minovaworkfloweditablegrid', 'widget.workfloweditablegrid1'],
5689
    requires: [
5690
		'Ext.grid.plugin.CellEditing',
5691
		'Ext.grid.RowNumberer',
5692
		'Ext.grid.Panel',
5693
    ],
5694
    anchor: '100%',
5695
    tableName: undefined,
5696
    hideButton: undefined,
5697
    multiSelect: undefined,
5698
    formname: this.name,
5699
    bizprocid: undefined,
5700
    bizflowid: undefined,
5701
    taskid: undefined,
5702
	features: undefined,
5703
    minHeight: 200,
5704
    maxHeight: 400,
5705
    initComponent: function () {
5706
        var me = this;
5707
        var isLookup = me.isLookup;
5708
        var hide_ = false;
5709
        var widthLock = 250;
5710
        var checkSelection = '';
5711
        if (me.hideButton == true) {
5712
            hide_ = true;
5713
        }
5714
        if (me.multiSelect) {
5715
            locking = false;
5716
            checkSelection = 'checkboxmodel';
5717
            widthLock = 40;
5718
        }
5719
        var tableName = me.tableName;
5720
		var features = me.features;
5721
        var cols = [];
5722
        var fieldStore = [];
5723
        var _url = 'GetAllField';
5724
        var hasil = null;
5725
        var height = me.height;
5726
        var storeID = 'store' + me.tableName;
5727
        var gridName = 'grid' + me.name;
5728
        if (me.storeName) {
5729
            storeID = me.storeName;
5730
        }
5731
        var LangID = MinovaUtil.GetLangID();
5732
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5733
        Ext.Ajax.request({
5734
            async: false,
5735
            method: 'POST',
5736
            url: '/UserControl/GetStore',
5737
            params: {
5738
                tableName: 'PDSWFSTRUCTUREFIELD',
5739
                param: parameter
5740
            },
5741
            success: function (response) {
5742
                var results = Ext.decode(response.responseText);
5743
                hasil = results.data;
5744
            }
5745
        });
5746
        cols.push({
5747
            xtype: 'rownumberer'
5748
        });
5749
        var addData = 'var data={';
5750
        if (hasil.length > 0) {
5751
            Ext.each(hasil, function (rec) {
5752
                fieldStore.push(rec.FieldName);
5753
                if (rec.FieldName != 'Sequence') {
5754
                    addData = addData + rec.FieldName + ":" + "'',";
5755
                }
5756
                var null_ = null;
5757
                var ReadOnly_ = false;
5758
                if (rec.IsRequired == '1') {
5759
                    null_ = false;
5760
                } else {
5761
                    null_ = true;
5762
                }
5763
                var Hidden_ = false;
5764
                if (rec.IsReadOnly == '1') {
5765
                    ReadOnly_ = true;
5766
                }
5767
                if (rec.IsVisible == '1') {
5768
                    switch (rec.FormatRef) {
5769
                        case "date":
5770
                            cols.push({
5771
                                xtype: 'minovadatecolumn',
5772
                                hidden: Hidden_,
5773
                                text: rec.HeaderTitle,
5774
                                dataIndex: rec.FieldName,
5775
                                filter: {
5776
                                    itemDefaults: {
5777
                                        emptyText: 'Search for...',
5778
                                    }
5779
                                },
5780
                                editor: {
5781
                                    allowBlank: null_,
5782
                                    xtype: 'datefield',
5783
                                    hideMode: 'visibility',
5784
                                    readOnly: ReadOnly_,
5785
                                    id: tableName + rec.FieldName,
5786
                                    fieldGrid: rec.FieldName,
5787
                                    nameTable: rec.TableName,
5788
                                    value: rec.DefaultValue
5789
                                }
5790
                            });
5791
                            break
5792
                        case "amount":
5793
                            cols.push({
5794
                                xtype: 'minovacurrancycolumn',
5795
                                align: 'right',
5796
                                text: rec.HeaderTitle,
5797
                                dataIndex: rec.FieldName,
5798
                                hidden: Hidden_,
5799
                                filter: {
5800
                                    itemDefaults: {
5801
                                        emptyText: 'Search for...'
5802
                                    }
5803
                                },
5804
                                editor: {
5805
                                    allowBlank: null_,
5806
                                    xtype: 'minovacurrencyfield',
5807
                                    readOnly: ReadOnly_,
5808
                                    id: tableName + rec.FieldName,
5809
                                    nameTable: rec.TableName,
5810
                                    fieldGrid: rec.FieldName,
5811
                                    fieldStyle: 'text-align:right;',
5812
                                    value: '0'
5813
                                }
5814
                            });
5815
                            break
5816
                        default:
5817
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
5818
                                cols.push({
5819
                                    text: rec.HeaderTitle,
5820
                                    dataIndex: rec.FieldName,
5821
                                    width: 100,
5822
                                    filter: {
5823
                                        type: 'string',
5824
                                        itemDefaults: {
5825
                                            emptyText: 'Search for...'
5826
                                        }
5827
                                    }
5828
                                });
5829
                            } else if (rec.SearchType == '0') {
5830
                                var valueField = null;
5831
                                var displayValue = null;
5832
                                var TableRef = undefined;
5833
                                if (rec.TableRef != '') {
5834
                                    TableRef = rec.TableRef;
5835
                                    Ext.Ajax.request({
5836
                                        async: false,
5837
                                        method: 'POST',
5838
                                        url: '/UserControl/GetStore',
5839
                                        params: {
5840
                                            tableName: 'SDATATABLEFIELD',
5841
                                            param: 'TableName[equal]' + rec.TableRef
5842
                                        },
5843
                                        success: function (response) {
5844
                                            var results = Ext.decode(response.responseText);
5845
                                            data_ = results.data;
5846
                                            if (data_ != undefined) {
5847
                                                valueField_ = $.grep(data_, function (r) {
5848
                                                    return r.ValueField == '1'
5849
                                                });
5850
                                                valueField = valueField_[0].FieldName
5851
                                                displayValue_ = $.grep(data_, function (r) {
5852
                                                    return r.DisplayValue == '1'
5853
                                                });
5854
                                                displayValue = displayValue_[0].FieldName
5855
                                            }
5856
                                        }
5857
                                    });
5858
                                }
5859
                                Ext.create('Ext.data.Store', {
5860
                                    storeId: 'store_' + me.tableName + rec.FieldName,
5861
                                    autoLoad: true,
5862
                                    proxy: {
5863
                                        method: 'POST',
5864
                                        type: 'ajax',
5865
                                        url: '/UserControl/GetStoreAuth',
5866
                                        extraParams: {
5867
                                            tableName: TableRef,
5868
                                            param: rec.ParamCombo,
5869
                                            menuId: MinovaUtil.GetMenuID()
5870
                                        },
5871
                                        reader: {
5872
                                            type: 'json',
5873
                                            root: 'data',
5874
                                            totalProperty: 'data[0].TotalCount'
5875
                                        }
5876
                                    }
5877
                                });
5878
                                cols.push({
5879
                                    //xtype : 'minovacombocolumn',
5880
                                    hidden: Hidden_,
5881
                                    text: rec.HeaderTitle,
5882
                                    dataIndex: rec.FieldName,
5883
                                    //valueField : valueField,
5884
                                    //displayField : displayValue,
5885
                                    //store : 'store_' + me.tableName + rec.FieldName,
5886
                                    editor: {
5887
                                        allowBlank: null_,
5888
                                        xtype: 'minovacombobox',
5889
                                        readOnly: ReadOnly_,
5890
                                        id: rec.TableName + rec.FieldName,
5891
                                        nameTable: rec.TableName,
5892
                                        fieldGrid: rec.FieldName,
5893
                                        valueField: valueField,
5894
                                        displayField: displayValue,
5895
                                        store: 'store_' + me.tableName + rec.FieldName,
5896
                                        value: rec.DefaultValue
5897
                                    },
5898
                                    renderer: function (value) {
5899
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
5900
                                        var index = store.find(valueField, value);
5901
                                        var val = "";
5902
                                        if (index != -1) {
5903
                                            var rc = store.getAt(index);
5904
                                            val = rc.get(displayValue);
5905
                                        } else {
5906
                                            val = value;
5907
                                        }
5908
                                        return val;
5909
                                    },
5910
                                    filter: {
5911
                                        type: 'list',
5912
                                        itemDefaults: {
5913
                                            emptyText: 'Search for...'
5914
                                        }
5915
                                    }
5916
                                });
5917
                            } else if (rec.SearchType == '5') {							
5918
                                var valueField = null;
5919
                                var displayValue = null;
5920
                                var AdditionaldisplayValue = null;
5921
                                var TableRef = undefined;
5922
                                if (rec.TableRef != '') {
5923
                                    TableRef = rec.TableRef;
5924
                                    Ext.Ajax.request({
5925
                                        async: false,
5926
                                        method: 'POST',
5927
                                        url: '/UserControl/GetStore',
5928
                                        params: {
5929
                                            tableName: 'SDATATABLEFIELD',
5930
                                            param: 'TableName[equal]' + rec.TableRef
5931
                                        },
5932
                                        success: function (response) {
5933
                                            var results = Ext.decode(response.responseText);
5934
                                            data_ = results.data;
5935
                                            if (data_ != undefined) {
5936
                                                valueField_ = $.grep(data_, function (r) {
5937
                                                    return r.ValueField == '1'
5938
                                                });
5939
                                                if (valueField_.length > 0) {
5940
                                                    valueField = valueField_[0].FieldName
5941
                                                }
5942

    
5943
                                                displayValue_ = $.grep(data_, function (r) {
5944
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
5945
                                                });
5946
                                                if (displayValue_.length > 0) {
5947
                                                    displayValue = displayValue_[0].FieldName;
5948
                                                }
5949
                                                if (displayValue_.length >= 2) {
5950
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
5951
                                                }
5952
                                            }
5953
                                        }
5954
                                    });
5955
                                }
5956
                                Ext.create('Ext.data.Store', {
5957
                                    storeId: 'store_' + me.tableName + rec.FieldName,
5958
                                    autoLoad: true,
5959
                                    proxy: {
5960
                                        method: 'POST',
5961
                                        type: 'ajax',
5962
                                        url: '/UserControl/GetStoreAuth',
5963
                                        extraParams: {
5964
                                            tableName: TableRef,
5965
                                            param: rec.ParamCombo,
5966
                                            menuId: MinovaUtil.GetMenuID()
5967
                                        },
5968
                                        reader: {
5969
                                            type: 'json',
5970
                                            root: 'data',
5971
                                            totalProperty: 'data[0].TotalCount'
5972
                                        }
5973
                                    }
5974
                                });
5975
                                cols.push({
5976
                                    //xtype : 'minovacombocolumn',
5977
                                    hidden: Hidden_,
5978
                                    text: rec.HeaderTitle,
5979
                                    dataIndex: rec.FieldName,
5980
                                    //valueField : valueField,
5981
                                    //displayField : displayValue,
5982
                                    //store : 'store_' + me.tableName + rec.FieldName,
5983
                                    tpl: Ext.create('Ext.XTemplate',
5984
                                            '<ul class="x-list-plain"><tpl for=".">',
5985
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
5986
                                            '</tpl></ul>'),
5987
                                    displayTpl: Ext.create('Ext.XTemplate',
5988
                                        '<tpl for=".">',
5989
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
5990
                                        '</tpl>'),
5991
                                    editor: {
5992
                                        allowBlank: null_,
5993
                                        xtype: 'combobox',
5994
                                        readOnly: ReadOnly_,
5995
                                        id: rec.TableName + rec.FieldName,
5996
                                        nameTable: rec.TableName,
5997
                                        fieldGrid: rec.FieldName,
5998
                                        valueField: valueField,
5999
                                        displayField: displayValue,
6000
                                        store: 'store_' + me.tableName + rec.FieldName,
6001
                                        value: rec.DefaultValue,
6002
                                        tpl: Ext.create('Ext.XTemplate',
6003
                                            '<ul class="x-list-plain"><tpl for=".">',
6004
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
6005
                                            '</tpl></ul>'),
6006
                                        displayTpl: Ext.create('Ext.XTemplate',
6007
                                            '<tpl for=".">',
6008
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
6009
                                            '</tpl>')
6010
                                    },
6011
                                    renderer: function (value) {
6012
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
6013
                                        var index = store.find(valueField, value);
6014
                                        var val = "";
6015
                                        if (index != -1) {
6016
                                            var rc = store.getAt(index);
6017
                                            //val = rc.get(displayValue);
6018
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
6019
                                        } else {
6020
                                            val = value;
6021
                                        }
6022
                                        return val;
6023
                                    },
6024
                                    filter: {
6025
                                        type: 'list',
6026
                                        itemDefaults: {
6027
                                            emptyText: 'Search for...'
6028
                                        }
6029
                                    }
6030
                                });
6031
                            } else if (rec.SearchType == '2') {
6032
                                var triger = (rec.TriggerCombo).split('$');
6033
                                var targetField_ = triger[0];
6034
                                var fieldValue_ = triger[1];
6035
                                cols.push({
6036
                                    text: rec.HeaderTitle,
6037
                                    hidden: Hidden_,
6038
                                    dataIndex: rec.FieldName,
6039
                                    filter: {
6040
                                        itemDefaults: {
6041
                                            emptyText: 'Search for...'
6042
                                        }
6043
                                    },
6044
                                    editor: {
6045
                                        allowBlank: null_,
6046
                                        xtype: 'minovalookupgrid',
6047
                                        readOnly: ReadOnly_,
6048
                                        isGrid: true,
6049
                                        fieldTarget: targetField_,
6050
                                        fieldValue: fieldValue_,
6051
                                        isGrid: true,
6052
                                        id: tableName + rec.FieldName,
6053
                                        tableName: rec.TableRef,
6054
                                        triggerCls: 'x-form-search-trigger',
6055
                                        vtype: 'alphanum',
6056
                                        nameTable: rec.TableName,
6057
                                        fieldGrid: rec.FieldName,
6058
                                        listeners: {
6059
                                            change: function (val) {
6060
                                                var custumFunc = rec.SelectFunction;
6061
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6062
                                                    Ext.Ajax.request({
6063
                                                        async: false,
6064
                                                        method: 'POST',
6065
                                                        url: '/UserControl/GetStore',
6066
                                                        params: {
6067
                                                            tableName: 'PCMFUNC',
6068
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6069
                                                        },
6070
                                                        success: function (response) {
6071
                                                            var results = Ext.decode(response.responseText);
6072
                                                            data_ = results.data[0];
6073
                                                            if (data_ != undefined) {
6074
                                                                custumFunc = data_.FunctionCode;
6075
                                                            }
6076
                                                        }
6077
                                                    });
6078
                                                }
6079
                                                if (custumFunc) {
6080
                                                    eval(custumFunc)
6081
                                                }
6082
                                            }
6083
                                        }
6084
                                    }
6085
                                });
6086
                            } else if (rec.SearchType == '3') {
6087
                                cols.push({
6088
                                    text: rec.HeaderTitle,
6089
                                    hidden: Hidden_,
6090
                                    dataIndex: rec.FieldName,
6091
                                    filter: {
6092
                                        itemDefaults: {
6093
                                            emptyText: 'Search for...'
6094
                                        }
6095
                                    },
6096
                                    editor: {
6097
                                        allowBlank: null_,
6098
                                        xtype: 'MinovaLookupTree',
6099
                                        readOnly: ReadOnly_,
6100
                                        id: tableName + rec.FieldName,
6101
                                        tableName: rec.TableRef,
6102
                                        triggerCls: 'x-form-search-trigger',
6103
                                        vtype: 'alphanum',
6104
                                        treeSructure: rec.SearchFunction,
6105
                                        objClassValue: rec.ParamCombo,
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.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
6137
                                var triger = (rec.TriggerCombo).split('&');
6138
                                var targetField_ = triger[0];
6139
                                var fieldValue_ = triger[0];
6140
                                cols.push({
6141
                                    text: rec.HeaderTitle,
6142
                                    hidden: Hidden_,
6143
                                    dataIndex: rec.FieldName,
6144
                                    filter: {
6145
                                        itemDefaults: {
6146
                                            emptyText: 'Search for...'
6147
                                        }
6148
                                    },
6149
                                    editor: {
6150
                                        allowBlank: null_,
6151
                                        xtype: 'lookupemployee',
6152
                                        readOnly: ReadOnly_,
6153
                                        isGrid: true,
6154
                                        fieldTarget: targetField_,
6155
                                        fieldValue: fieldValue_,
6156
                                        isGrid: true,
6157
                                        id: tableName + rec.FieldName,
6158
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
6159
                                        triggerCls: 'x-form-search-trigger',
6160
                                        vtype: 'alphanum', // disable space
6161
                                        nameTable: rec.TableName,
6162
                                        fieldGrid: rec.FieldName,
6163
                                        listeners: {
6164
                                            change: function (val) {
6165
                                                var custumFunc = rec.SelectFunction;
6166
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6167
                                                    Ext.Ajax.request({
6168
                                                        async: false,
6169
                                                        method: 'POST',
6170
                                                        url: '/UserControl/GetStore',
6171
                                                        params: {
6172
                                                            tableName: 'PCMFUNC',
6173
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6174
                                                        },
6175
                                                        success: function (response) {
6176
                                                            var results = Ext.decode(response.responseText);
6177
                                                            data_ = results.data[0];
6178
                                                            if (data_ != undefined) {
6179
                                                                custumFunc = data_.FunctionCode;
6180
                                                            }
6181
                                                        }
6182
                                                    });
6183
                                                }
6184
                                                if (custumFunc) {
6185
                                                    eval(custumFunc)
6186
                                                }
6187
                                            }
6188
                                        }
6189
                                    }
6190
                                });
6191
                            } else if (rec.SearchType == '4' && isLookup != true) {
6192
                                cols.push({
6193
                                    text: rec.HeaderTitle,
6194
                                    hidden: Hidden_,
6195
                                    dataIndex: rec.FieldName,
6196
                                    filter: {
6197
                                        itemDefaults: {
6198
                                            emptyText: 'Search for...'
6199
                                        }
6200
                                    },
6201
                                    editor: {
6202
                                        allowBlank: null_,
6203
                                        xtype: 'lookupemployee',
6204
                                        readOnly: ReadOnly_,
6205
                                        isGrid: true,
6206
                                        fieldTarget: targetField_,
6207
                                        fieldValue: fieldValue_,
6208
                                        isGrid: true,
6209
                                        id: tableName + rec.FieldName,
6210
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
6211
                                        triggerCls: 'x-form-search-trigger',
6212
                                        vtype: 'alphanum', // disable space
6213
                                        nameTable: rec.TableName,
6214
                                        fieldGrid: rec.FieldName,
6215
                                        listeners: {
6216
                                            change: function (val) {
6217
                                                var custumFunc = rec.SelectFunction;
6218
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6219
                                                    Ext.Ajax.request({
6220
                                                        async: false,
6221
                                                        method: 'POST',
6222
                                                        url: '/UserControl/GetStore',
6223
                                                        params: {
6224
                                                            tableName: 'PCMFUNC',
6225
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6226
                                                        },
6227
                                                        success: function (response) {
6228
                                                            var results = Ext.decode(response.responseText);
6229
                                                            data_ = results.data[0];
6230
                                                            if (data_ != undefined) {
6231
                                                                custumFunc = data_.FunctionCode;
6232
                                                            }
6233
                                                        }
6234
                                                    });
6235
                                                }
6236
                                                if (custumFunc) {
6237
                                                    eval(custumFunc)
6238
                                                }
6239
                                            }
6240
                                        }
6241
                                    }
6242
                                });
6243
                            } else if (rec.FixedValue != '') { // add by taufan
6244
                                cols.push({
6245
                                    text: rec.HeaderTitle,
6246
                                    hidden: Hidden_,
6247
                                    dataIndex: rec.FieldName,
6248
                                    filter: {
6249
                                        itemDefaults: {
6250
                                            emptyText: 'Search for...'
6251
                                        }
6252
                                    },
6253
                                    editor: {
6254
                                        allowBlank: null_,
6255
                                        xtype: 'minovafixvalue',
6256
                                        readOnly: ReadOnly_,
6257
                                        id: rec.TableName + rec.FieldName,
6258
                                        name: rec.TableName + rec.FieldName,
6259
                                        nameTable: rec.TableName,
6260
                                        fieldGrid: rec.FieldName,
6261
                                        fixedValue: rec.FixedValue,
6262
                                        valueField: 'code',
6263
                                        displayField: 'desc',
6264
                                        value: rec.DefaultValue
6265
                                    },
6266
                                    renderer: function (value) {
6267
                                        var val = "";
6268
                                        var storeData = [];
6269
                                        var str = rec.FixedValue;
6270
                                        var hasil = str.split('||');
6271
                                        hasil.forEach(function (h) {
6272
                                            store_ = h.split('=')
6273
                                            storeData.push({
6274
                                                code: store_[0],
6275
                                                desc: store_[1]
6276
                                            });
6277
                                        });
6278
                                        var item = storeData.find(x => x.code == value);
6279
                                        if (item != undefined) {
6280
                                            val = item.desc;
6281
                                        }
6282
                                        return val;
6283
                                    }
6284
                                });
6285
                            } else {
6286
                                cols.push({
6287
                                    text: rec.HeaderTitle,
6288
                                    hidden: Hidden_,
6289
									cellWrap: true,
6290
                                    dataIndex: rec.FieldName,
6291
                                    filter: {
6292
                                        itemDefaults: {
6293
                                            emptyText: 'Search for...'
6294
                                        }
6295
                                    },
6296
                                    editor: {
6297
                                        allowBlank: null_,
6298
                                        xtype: 'textareafield',
6299
                                        readOnly: ReadOnly_,
6300
                                        id: tableName + rec.FieldName,
6301
                                        nameTable: rec.TableName,
6302
                                        fieldGrid: rec.FieldName,
6303
                                        value: rec.DefaultValue,
6304
										grow: true,
6305
										listeners: {
6306
                                           
6307
											change: function (val) {
6308
                                                var custumFunc = null;
6309
                                                Ext.Ajax.request({
6310
                                                    async: false,
6311
                                                    method: 'POST',
6312
                                                    url: '/UserControl/GetStore',
6313
                                                    params: {
6314
                                                        tableName: 'SDATATABLEFIELD',
6315
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
6316
                                                    },
6317
                                                    success: function (response) {
6318
                                                        var results = Ext.decode(response.responseText);
6319
                                                        data_ = results.data[0];
6320
                                                        if (data_ != undefined) {
6321
                                                            custumFunc = data_.SelectFunction;
6322
                                                            //console.log(data_)
6323
                                                        }
6324
                                                    }
6325
                                                });
6326

    
6327
                                                if (custumFunc) {
6328
                                                    eval(custumFunc)
6329
                                                }
6330
                                            }
6331
											}
6332
                                        },
6333
										 /*
6334
										renderer: function (v) {
6335
											result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
6336
											result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
6337
											return result
6338
										}*/	
6339
                                });
6340
                            }
6341
                            break
6342
                    }
6343
                } else {
6344
                    cols.push({
6345
                        text: rec.HeaderTitle,
6346
                        hidden: Hidden_,
6347
                        dataIndex: rec.FieldName,
6348
                        hidden: true,
6349
                        editor: {
6350
                            allowBlank: true,
6351
                            xtype: 'textfield',
6352
                            readOnly: ReadOnly_,
6353
                            id: tableName + rec.FieldName,
6354
                            nameTable: rec.TableName,
6355
                            fieldGrid: rec.FieldName,
6356
                            value: rec.DefaultValue
6357
                        },
6358
                        filter: {
6359
                            itemDefaults: {
6360
                                emptyText: 'Search for...'
6361
                            }
6362
                        }
6363
                    });
6364
                }
6365
            });
6366

    
6367
        };
6368
        addData = addData + "}";
6369
        Ext.applyIf(me, {
6370
            items: [{
6371
                xtype: 'grid',
6372
                id: gridName,
6373
                name: gridName,
6374
                height: height,
6375
                addFlag: true,
6376
                deleteFlag: true,
6377
                minHeight: me.minHeight,
6378
                maxHeight: me.maxHeight,
6379
                store: Ext.create('Ext.data.Store', {
6380
                    storeId: storeID,
6381
                    fields: fieldStore,
6382
					//groupField: 'QuestionGroup',
6383
					grouper: {
6384
						sortProperty: 'SeqQuest',
6385
						groupFn: function (record) {
6386
							return record.get('QuestionGroup');
6387
						}
6388
					},
6389
                    proxy: {
6390
                        method: 'POST',
6391
                        type: 'ajax',
6392
                        url: '',
6393
                        reader: {
6394
                            type: 'json',
6395
                            root: 'data'
6396
                        }
6397
                    }
6398
                }),
6399
                dockedItems: [{
6400
                    xtype: 'toolbar',
6401
                    items: [{
6402
                        text: 'Add',
6403
                        hidden: hide_,
6404
                        name: tableName + 'Add',
6405
                        iconCls: 'fa-plus-circle',
6406
                        style: 'font-family: FontAwesome',
6407
                        handler: function () {
6408
                            var grid = Ext.getCmp(gridName);
6409
                            if (grid.addFlag === true) {
6410
                                var store = Ext.StoreMgr.lookup(storeID)
6411
                                idx = store.getCount();
6412
                                var action = getParam('action');
6413
                                var data = '';
6414
                                var Sequence = 0;
6415
                                if (idx == 0) {
6416
                                    Sequence = 1;
6417
                                } else {
6418
                                    Sequence = 1 + idx;
6419
                                }
6420
                                var seq = 'Sequence';
6421
                                var SequenceValue = Sequence;
6422
                                eval(addData);
6423
                                data[seq] = SequenceValue;
6424
                                store.insert(idx, data);
6425
                            }
6426
                        }
6427
                    }, {
6428
                        text: 'Delete',
6429
                        hidden: hide_,
6430
                        name: tableName + 'DeleteText',
6431
                        iconCls: 'fa-trash-o',
6432
                        style: 'font-family: FontAwesome',
6433
                        handler: function () {
6434
                            var grid = Ext.getCmp(gridName);
6435
                            if (grid.deleteFlag === true) {
6436
                                var me = this,
6437
                                store = Ext.StoreMgr.lookup(storeID)
6438
                                var grid = Ext.getCmp(gridName);
6439
                                Ext.MessageBox.show({
6440
                                    title: 'Remove tab',
6441
                                    msg: "This will remove. Do you want to continue?",
6442
                                    buttons: Ext.MessageBox.YESNO,
6443
                                    fn: function (choice) {
6444
                                        console.log(choice);
6445
                                        if (choice === 'yes') {
6446
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
6447
                                            if (selection) {
6448
                                                store.remove(selection);
6449
                                            }
6450
                                        }
6451
                                    }
6452
                                });
6453
                            }
6454
                        }
6455
                    }
6456
                    ]
6457
                }
6458
                ],
6459
                columns: cols,
6460
				selModel: 'rowmodel', //YN
6461
                selType: checkSelection,
6462
                plugins: {
6463
                    ptype: 'rowediting',
6464
                    pluginId: 'rowEditing',
6465
                    clicksToEdit: 1,//0
6466
                    listeners: {}
6467
                },
6468
				features: features,
6469
				viewConfig: {
6470
					listeners: {
6471
						refresh: function (dataview) {
6472
							Ext.each(dataview.panel.columns, function (column) {
6473
								column.autoSize();
6474
							})
6475
						}
6476
					}
6477
				}
6478
            }
6479
            ]
6480
        });
6481
        me.callParent(arguments);
6482
    }
6483
});
6484
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid1', {
6485
    extend: 'Ext.form.Panel',
6486
    alias: ['widget.minovaworkfloweditablegrid1', 'widget.workfloweditablegrid1'],
6487
    requires: [
6488
		'Ext.grid.plugin.CellEditing',
6489
		'Ext.grid.Panel',
6490
    ],
6491
    anchor: '100%',
6492
    tableName: undefined,
6493
    hideButton: undefined,
6494
    multiSelect: undefined,
6495
    formname: this.name,
6496
    bizprocid: undefined,
6497
    bizflowid: undefined,
6498
    taskid: undefined,
6499
    initComponent: function () {
6500
        var me = this;
6501
        var hide_ = false;
6502
        var widthLock = 250;
6503
        var checkSelection = '';
6504

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

    
6836
                                                    }
6837

    
6838
                                                },
6839

    
6840
                                            }
6841
                                        }
6842
                                    });
6843
                                } else if (rec.SearchType == "3") {
6844
                                    cols.push({
6845
                                        text: rec.HeaderTitle,
6846
                                        dataIndex: rec.FieldName,
6847
                                        editor: {
6848
                                            xtype: 'minovalookuptree',
6849
                                            allowBlank: allowblank,
6850
                                            fieldLabel: rec.ScreenCaption,
6851
                                            readOnly: readonly,
6852
                                            labelCls: 'label-minova',
6853
                                            labelWidth: 150,
6854
                                            name: 'grid' + tableName + rec.FieldName,
6855
                                            id: 'grid' + tableName + rec.FieldName,
6856
                                            msgTarget: 'side',
6857
                                            triggerCls: 'x-form-search-trigger',
6858
                                            treeSructure: rec.SearchFunction, //'O-O-P',
6859
                                            objClassValue: rec.ParamCombo, //'O',
6860
                                            formname: me.formname,
6861
                                            targetField: rec.FieldName,
6862
                                            anchor: '100%',
6863
                                            listeners: {
6864
                                                change: function (val) {
6865
                                                    var _label = val.name;
6866
                                                    var _form = val.formname;
6867
                                                    var _Value = val.getValue();
6868
                                                    var target = rec.TriggerCombo;
6869
                                                    var custumFunc = rec.SelectFunction;
6870
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6871
                                                        Ext.Ajax.request({
6872
                                                            async: false,
6873
                                                            method: 'POST',
6874
                                                            url: '/UserControl/GetStore',
6875
                                                            params: {
6876
                                                                tableName: 'PCMFUNC',
6877
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6878
                                                            },
6879
                                                            success: function (response) {
6880
                                                                var results = Ext.decode(response.responseText);
6881
                                                                data_ = results.data[0];
6882
                                                                if (data_ != undefined) {
6883
                                                                    custumFunc = data_.FunctionCode;
6884
                                                                }
6885
                                                            }
6886
                                                        });
6887
                                                    }
6888
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6889
                                                    if (frm) {
6890

    
6891
                                                        if (target) {
6892
                                                            var f = frm.getForm().findField(target)
6893
                                                            _store = f.getStore();
6894
                                                            var _tbl = _store.proxy.extraParams.tableName;
6895
                                                            var oldParam = _store.proxy.extraParams.param;
6896
                                                            _store.proxy.extraParams = {
6897
                                                                tableName: _tbl,
6898
                                                                param: _label + '[=]' + _Value
6899
                                                            };
6900
                                                            _store.load();
6901
                                                        }
6902
                                                        if (custumFunc) {
6903
                                                            eval(custumFunc)
6904
                                                        }
6905
                                                    }
6906
                                                }
6907
                                            }
6908
                                        }
6909
                                    });
6910
                                } else if (rec.SearchType == "4") {
6911
                                    cols.push({
6912
                                        text: rec.HeaderTitle,
6913
                                        dataIndex: rec.FieldName,
6914
                                        editor: {
6915
                                            xtype: 'lookupemployee',
6916
                                            allowBlank: allowblank,
6917
                                            fieldLabel: rec.ScreenCaption,
6918
                                            readOnly: readonly,
6919
                                            labelCls: 'label-minova',
6920
                                            name: 'grid' + tableName + rec.FieldName,
6921
                                            id: 'grid' + tableName + rec.FieldName,
6922
                                            msgTarget: 'side',
6923
                                            fieldname: rec.FieldName,
6924
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
6925
                                            triggerCls: 'x-form-search-trigger',
6926
                                            vtype: 'alphanum', // disable space
6927
                                            formtarget: formname, // nama form  yang akan di set value-nya
6928
                                            isLookup: isLookup,
6929
                                            anchor: '100%',
6930
                                            formname: formname,
6931
                                            listeners: {
6932
                                                change: function (val) {
6933
                                                    var _label = val.name;
6934
                                                    var _form = val.formname;
6935
                                                    var _Value = val.getValue();
6936
                                                    var target = rec.TriggerCombo;
6937
                                                    var custumFunc = rec.SelectFunction;
6938
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6939
                                                        Ext.Ajax.request({
6940
                                                            async: false,
6941
                                                            method: 'POST',
6942
                                                            url: '/UserControl/GetStore',
6943
                                                            params: {
6944
                                                                tableName: 'PCMFUNC',
6945
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6946
                                                            },
6947
                                                            success: function (response) {
6948
                                                                var results = Ext.decode(response.responseText);
6949
                                                                data_ = results.data[0];
6950
                                                                if (data_ != undefined) {
6951
                                                                    custumFunc = data_.FunctionCode;
6952
                                                                }
6953
                                                            }
6954
                                                        });
6955
                                                    }
6956
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6957
                                                    if (frm) {
6958

    
6959
                                                        if (target) {
6960
                                                            var f = frm.getForm().findField(target)
6961
                                                            _store = f.getStore();
6962
                                                            var _tbl = _store.proxy.extraParams.tableName;
6963
                                                            var oldParam = _store.proxy.extraParams.param;
6964
                                                            _store.proxy.extraParams = {
6965
                                                                tableName: _tbl,
6966
                                                                param: _label + '[=]' + _Value
6967
                                                            };
6968
                                                            _store.load();
6969
                                                        }
6970
                                                        if (custumFunc) {
6971
                                                            eval(custumFunc)
6972
                                                        }
6973

    
6974
                                                    }
6975

    
6976
                                                },
6977

    
6978
                                            },
6979
                                        }
6980
                                    });
6981
                                }
6982
                            } else {
6983
                                if (rec.FixedValue != "") {
6984
                                    var storeData = [];
6985
                                    var str = rec.FixedValue;
6986
                                    var hasil = str.split('||');
6987
                                    hasil.forEach(function (h) {
6988
                                        store_ = h.split('=')
6989
                                        storeData.push({
6990
                                            code: store_[0],
6991
                                            desc: store_[1],
6992
                                        });
6993
                                    });
6994
                                    cols.push({
6995
                                        xtype: 'minovacombocolumn',
6996
                                        text: rec.HeaderTitle,
6997
                                        dataIndex: rec.FieldName,
6998
                                        valueField: valueField,
6999
                                        displayField: displayValue,
7000
                                        store: Ext.create('Ext.data.Store', {
7001
                                            storeId: 'store' + rec.FieldName,
7002
                                            autoLoad: true,
7003
                                            data: storeData
7004

    
7005
                                        }),
7006
                                        editor: {
7007
                                            xtype: 'combobox',
7008
                                            allowBlank: allowblank,
7009
                                            forceSelection: true,
7010
                                            readOnly: readonly,
7011
                                            labelCls: 'label-minova',
7012
                                            labelWidth: 150,
7013
                                            name: 'grid' + tableName + rec.FieldName,
7014
                                            id: 'grid' + tableName + rec.FieldName,
7015
                                            msgTarget: 'side',
7016
                                            value: rec.DefaultValue,
7017
                                            anchor: '100%',
7018
                                            formname: me.formname,
7019
                                            formtarget: me.formname,
7020
                                            store: Ext.create('Ext.data.Store', {
7021
                                                storeId: 'store' + rec.FieldName,
7022
                                                autoLoad: true,
7023
                                                data: storeData
7024

    
7025
                                            }),
7026
                                            listeners: {
7027
                                                change: function (val) {
7028
                                                    var _label = val.name;
7029
                                                    var _form = val.formtarget;
7030
                                                    var _Value = val.getValue();
7031
                                                    var target = rec.TriggerCombo;
7032
                                                    var custumFunc = rec.SelectFunction;
7033
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
7034
                                                    if (frm) {
7035
                                                        if (target) {
7036
                                                            var f = frm.getForm().findField(target)
7037
                                                            _store = f.getStore();
7038
                                                            var _tbl = _store.proxy.extraParams.tableName;
7039
                                                            var oldParam = _store.proxy.extraParams.param;
7040
                                                            _store.proxy.extraParams = {
7041
                                                                tableName: _tbl,
7042
                                                                param: _label + '[=]' + _Value
7043
                                                            };
7044
                                                            _store.load();
7045
                                                        }
7046
                                                        if (custumFunc) {
7047
                                                            eval(custumFunc)
7048
                                                        }
7049
                                                    }
7050
                                                }
7051
                                            },
7052
                                            queryMode: 'local',
7053
                                            valueField: 'code',
7054
                                            displayField: 'desc',
7055
                                        }
7056
                                    })
7057
                                } else {
7058
                                    cols.push({
7059
                                        text: rec.HeaderTitle,
7060
                                        dataIndex: rec.FieldName,
7061
                                        editor: {
7062
                                            allowBlank: allowblank,
7063
                                            xtype: 'textfield',
7064
                                            readOnly: readonly,
7065
                                            name: 'grid' + tableName + rec.FieldName,
7066
                                            id: 'grid' + tableName + rec.FieldName,
7067
                                            value: rec.DefaultValue
7068
                                        }
7069
                                    });
7070
                                }
7071
                            }
7072
                            break;
7073
                    }
7074
                } else {
7075
                    cols.push({
7076
                        text: rec.HeaderTitle,
7077
                        dataIndex: rec.FieldName,
7078
                        hidden: true,
7079
                        editor: {
7080
                            allowBlank: true,
7081
                            xtype: 'textfield',
7082
                            readOnly: false,
7083
                            name: 'grid' + tableName + rec.FieldName,
7084
                            id: 'grid' + tableName + rec.FieldName,
7085
                        }
7086
                    });
7087
                }
7088
            });
7089
        };
7090

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

    
7241
            }
7242
            if (this.titleform != undefined) {
7243
                this.setTitle(this.titleform);
7244
            }
7245
        },
7246

    
7247
    },
7248
    defaults: {
7249
        layout: 'form',
7250
        xtype: 'container',
7251
        defaultType: 'textfield',
7252
        style: 'width: 50%',
7253
        //height: 1000
7254
    },
7255
    initComponent: function () {
7256
        var col1 = [];
7257
        var col2 = [];
7258
        var me = this;
7259
        LangID = localStorage.LangId;
7260
        isLookup = me.isLookup;
7261
        //var _url = 'GetAllField';
7262

    
7263
        if (isLookup == 1 || isLookup == true || isLookup == 'Y') {}
7264
        isDisplay = me.isDisplay;
7265
        var hasil = null;
7266
        //hamid 200916
7267
        //Ext.Ajax.request({
7268
        //	async : false,
7269
        //	method : 'POST',
7270
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
7271
        //	success : function (response) {
7272
        //		var results = Ext.decode(response.responseText);
7273
        //		hasil = results.data;
7274
        //	}
7275
        //});
7276
        //end
7277

    
7278

    
7279
        //hamid
7280
        //if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
7281
        parameter = null;
7282
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7283
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupFilter='1'"
7284
        } else if (me.searchcustomization == true) {
7285
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',IsCustomizationFilter='1'"
7286
        } else {
7287
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
7288
        }
7289
        Ext.Ajax.request({
7290
            async: false,
7291
            method: 'POST',
7292
            url: '/UserControl/GetStore',
7293
            params: {
7294
                tableName: 'PDSBS0007',
7295
                param: parameter
7296
            },
7297
            success: function (response) {
7298
                var results = Ext.decode(response.responseText);
7299
                hasil = results.data;
7300
            }
7301
        });
7302
        //end
7303
        if (hasil.length > 0) {
7304
            // hasil = hasil.sort(MinovaUtil.SortBy("Sequence"))
7305
            var me = this;
7306
            Ext.each(hasil, function (rec) {
7307
                var null_ = null;
7308
                if (rec.IsPrimaryKey == true) {
7309
                    null_ = false;
7310
                }
7311
                if (rec.IsRequired == true) {
7312
                    null_ = false;
7313
                } else {
7314
                    null_ = true;
7315
                }
7316
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, isDisplay, me.tableName, me.isLookup);
7317
                var descField = undefined;
7318
                //if (isDisplay == true && rec.SearchType !='') {
7319
                //    descField = new Ext.form.Display({
7320
                //        fieldCode:'codeDisplay'+rec.name+rec.tableName,
7321
                //        allowBlank: true,
7322
                //        fieldLabel: 'Desc ' + rec.ScreenCaption,
7323
                //        readOnly: true,
7324
                //        maxLength: rec.Length,
7325
                //        anchor: '100%',
7326
                //        submitValue: false
7327
                //    });
7328
                //}
7329
                //else {
7330
                //    if (rec.SearchType == '2') {// lookup
7331
                //        descField = new Ext.form.TextField({
7332
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7333
                //            allowBlank: true,
7334
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7335
                //            readOnly: true,
7336
                //            maxLength: rec.Length,
7337
                //            anchor: '100%',
7338
                //            submitValue: false
7339
                //        });
7340
                //    }
7341
                //    if (rec.SearchType == '3') {// tree
7342
                //        descField = new Ext.form.TextField({
7343
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7344
                //            allowBlank: true,
7345
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7346
                //            readOnly: true,
7347
                //            maxLength: rec.Length,
7348
                //            anchor: '100%',
7349
                //            submitValue: false
7350
                //        });
7351
                //    }
7352
                //    if (rec.SearchType == '4' && me.isLookup != true) {
7353
                //        descField = new Ext.form.TextField({
7354
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7355
                //            allowBlank: true,
7356
                //            fieldLabel: 'Full Name',
7357
                //            readOnly: true,
7358
                //            maxLength: rec.Length,
7359
                //            anchor: '100%',
7360
                //            submitValue: false
7361
                //        });
7362
                //    }
7363

    
7364
                //}
7365

    
7366
                if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7367
                    col1.push(formfield);
7368
                    if (descField) {
7369
                        col1.push(descField)
7370
                    }
7371
                } else {
7372
                    if (isDesk) {
7373
                        if (rec.ColumnNo == 1) {
7374
                            col1.push(formfield);
7375
                            if (descField) {
7376
                                col1.push(descField)
7377
                            }
7378
                        } else {
7379
                            col2.push(formfield);
7380
                            if (descField) {
7381
                                col2.push(descField)
7382
                            }
7383
                        }
7384
                    } else {
7385
                        col1.push(formfield);
7386
                        if (descField) {
7387
                            col1.push(descField)
7388
                        }
7389
                    }
7390

    
7391
                }
7392

    
7393
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
7394
                    formfieldKey = new Ext.form.TextField({
7395
                        hidden: true,
7396
                        name: "Key_" + rec.FieldName,
7397
                    });
7398
                    col2.push(formfieldKey);
7399
                }
7400

    
7401
            });
7402
            //console.log(col1);
7403
        }
7404
        Ext.applyIf(me, {
7405
            items: [{
7406
                //width: 450,
7407
                style: 'width: 50%',
7408
                items: col1
7409
            }, {
7410
                //width: 450,
7411
                style: 'width: 50%',
7412
                items: col2
7413
            }
7414
            ],
7415
        });
7416
        this.callParent();
7417
    }
7418
});
7419

    
7420
Ext.define('MinovaUtil.MinovaES.MinovaGridForm', {
7421
    extend: 'Ext.form.Panel',
7422
    alias: ['widget.minovagridform', 'widget.MinovaGridForm'],
7423
    tableName: undefined, //nama tabel
7424
    param: undefined, //param query
7425
    pagesize: undefined,
7426
    storename: undefined,
7427
    titleform: undefined,
7428
    titlegrid: undefined,
7429
    heightgrid: undefined,
7430
    heightform: undefined,
7431
    iseditform: undefined,
7432
    lastheightform: undefined,
7433
    layoutType: undefined,
7434
    lastpage: undefined,
7435
    lastTitle: undefined,
7436
    getLastTitle: function () {
7437
        return this.lastTitle;
7438
    },
7439
    setLastTitle: function (value) {
7440
        var me = this;
7441
        me.lastTitle = value;
7442
        return me;
7443
    },
7444
    getLastpage: function () {
7445
        return this.lastpage;
7446
    },
7447
    setLastpage: function (value) {
7448
        var me = this;
7449
        me.lastpage = value;
7450
        return me;
7451
    },
7452
    getLayoutType: function () {
7453
        return this.layoutType;
7454
    },
7455
    setLayoutType: function (value) {
7456
        var me = this;
7457
        me.layoutType = value;
7458
        return me;
7459
    },
7460
    getLastheightform: function () {
7461
        return this.lastheightform;
7462
    },
7463
    setLastheightform: function (value) {
7464
        var me = this;
7465
        me.lastheightform = value;
7466
        return me;
7467
    },
7468

    
7469
    getIsEditform: function () {
7470
        return this.iseditform;
7471
    },
7472
    setIsEditform: function (value) {
7473
        var me = this;
7474
        me.iseditform = value;
7475
        return me;
7476
    },
7477
    initComponent: function () {
7478
        var me = this;
7479
        var storename = me.storename;
7480
        if (storename == "" || storename == undefined) {
7481
            storename = "store" + me.tableName;
7482
        }
7483
        var tableName = me.tableName;
7484
        Ext.applyIf(me, {
7485
            items: [{
7486
                layoutType: "MinovaGridForm",
7487
                title: me.titlegrid,
7488
                xtype: "minovagrid",
7489
                tableName: tableName, // nama tebel/dataset
7490
                name: "MinovaGridFormGrid" + tableName, //name bebeas
7491
                param: me.param, // parameter filteran
7492
                pagesize: me.pagesize, // jumlah record yang muncul per page
7493
                storename: storename, //nama store bebas
7494
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7495
                height: 330,
7496
                bodyPadding: 0,
7497
                dockedItems: [{
7498
                    xtype: 'pagingtoolbar',
7499
                    store: storename, // harus sama dengan naa store diatas
7500
                    dock: 'bottom', //posisi paging
7501
                    pageSize: me.pagesize,
7502
                    displayInfo: true
7503
                }
7504
                ],
7505

    
7506
                listeners: {
7507
                    viewready: function () {
7508
                        //alert('ready')
7509
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7510
                        formEdit.setHidden(true);
7511

    
7512
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7513
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7514
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7515
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7516
                        } else {
7517
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7518
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7519
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7520
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7521
                        }
7522
                    },
7523
                    selectionchange: function () {
7524
                        //case md
7525
                        var layout = null;
7526
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7527
                        if (pnl) {
7528
                            layout = pnl.getLayoutType();
7529

    
7530
                        }
7531
                        //end case
7532

    
7533
                        if (layout == 'L003') {
7534
                            var selection = this.getView().getSelectionModel().getSelection()[0];
7535
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7536
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7537
                            if (selection) {
7538
                                formDisplay.getForm().setValues(selection.data);
7539
                                formEdit.getForm().setValues(selection.data);
7540
                            }
7541

    
7542
                        }
7543
                    },
7544
                    itemdblclick: function () {
7545
                        var me = this;
7546
                        //case md
7547
                        var layout = null;
7548
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7549
                        if (pnl) {
7550
                            layout = pnl.getLayoutType();
7551

    
7552
                        } else {
7553
                            pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7554
                            layout = pnl.getLayoutType();
7555
                        }
7556
                        //end case
7557
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7558
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7559
                        var submit_ = formEdit.getSubmitProc();
7560
                        var selection = me.getView().getSelectionModel().getSelection()[0];
7561
                        if (submit_ == undefined) {
7562
                            submit_ = false;
7563
                        }
7564
                        if (submit_ == false) {
7565

    
7566
                            formDisplay.getForm().setValues(selection.data);
7567
                            formEdit.getForm().setValues(selection.data);
7568
                            if (layout == 'L003') {
7569
                                formDisplay.setHidden(false);
7570
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + this.tableName + ']')[0].setHidden(true);
7571
                                var heigh = pnl.getLastheightform();
7572

    
7573
                                var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7574
                                if (pDetail) {
7575
                                    pDetail.setHeight(heigh + 100);
7576
                                } else {
7577
                                    pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7578
                                    var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
7579
                                    var mainPnl = mainPnl_.getHeight();
7580
                                    //pDetail.setHeight(mainPnl + 100);
7581

    
7582
                                }
7583
                            } else {
7584
                                formDisplay.setTitle("View")
7585
                                formEdit.setTitle("Edit")
7586
                            }
7587
                        } else {
7588
                            alert('still process')
7589
                        }
7590

    
7591
                    },
7592
                    beforeedit: function () {
7593
                        return false;
7594
                    }
7595
                }
7596
            }, {
7597
                xtype: 'minovaform',
7598
                name: "MinovaGridFormDisplay" + tableName,
7599
                tableName: tableName, // nama tabel /dataset
7600
                isLookup: '', // 1 or 'Y' for lookup
7601
                isDisplay: true, // true== form is displayfield
7602
                buttons: [{
7603
                    text: 'Edit',
7604
                    name: 'Edit' + tableName,
7605
                    iconCls: 'fa-edit',
7606
                    style: 'font-family: FontAwesome',
7607
                    handler: function () {
7608

    
7609
                        f = this.up().up();
7610
                        f.setSubmitProc(false);
7611
                        f.setHidden(true);
7612
                        //f.setActionSubmit(1);
7613
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7614
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7615
                        formEdit.setSubmitProc(true);
7616
                        formEdit.setHidden(false);
7617
                        formEdit.setActionSubmit(1);
7618
                        var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7619
                        if (p) {
7620
                            var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7621
                            var lastTitile = p.getTitle();
7622
                            pnl.setLastTitle(lastTitile);
7623
                            p.setTitle('Edit - ' + lastTitile)
7624

    
7625
                        }
7626

    
7627
                    }
7628
                }, {
7629
                    text: 'Back to Grid',
7630
                    name: 'Edit' + tableName,
7631
                    iconCls: 'fa-reply',
7632
                    style: 'font-family: FontAwesome',
7633
                    handler: function () {
7634
                        var layout = null;
7635
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7636
                        if (pnl) {
7637
                            layout = pnl.getLayoutType();
7638

    
7639
                        }
7640

    
7641
                        f = this.up().up();
7642
                        f.setSubmitProc(false);
7643
                        f.setHidden(true);
7644
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7645
                        Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0].setHidden(true);
7646

    
7647
                        if (layout == 'L003') {
7648
                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7649
                            grid_.setHidden(false);
7650
                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7651
                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7652
                        }
7653
                    }
7654
                }
7655
                ],
7656
            }, {
7657
                xtype: 'minovaform',
7658
                name: "MinovaGridFormEdit" + tableName,
7659
                tableName: tableName, // nama tabel /dataset
7660
                isLookup: '', // 1 or 'Y' for lookup
7661
                isDisplay: false, // true== form is displayfield
7662
                buttons: [{
7663
                    text: 'Save',
7664
                    name: 'btnSaveMD',
7665
                    name: 'Save' + tableName,
7666
                    iconCls: 'fa-save',
7667
                    style: 'font-family: FontAwesome',
7668
                    handler: function () {
7669
                        f = this.up().up();
7670
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7671

    
7672
                        if (formEdit.getForm().isValid()) {
7673

    
7674
                            if (Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]) {
7675
                                var action_ = formEdit.getActionSubmit();
7676
                                var main_ = Ext.ComponentQuery.query('[name=mainORM]')[0];
7677
                                var record = main_.getRecordSelect();
7678

    
7679
                                if (record == undefined) {
7680
                                    var treeDetail = Ext.ComponentQuery.query('[name=treeDetail]')[0];
7681
                                    treeDetail.getSelectionModel().select(0);
7682
                                    record = treeDetail.getView().getSelectionModel().getSelection()[0];
7683

    
7684
                                }
7685
                                var frmValue = formEdit.getValues();
7686
                                var InitStartDate = 'InitStartDate';
7687
                                var InitStartDateValue = record.get('StartDate');
7688
                                frmValue[InitStartDate] = InitStartDateValue;
7689

    
7690
                                var InitEndDate = 'InitEndDate';
7691
                                var InitEndDateValue = record.get('EndDate');
7692
                                frmValue[InitEndDate] = InitEndDateValue;
7693

    
7694
                                var InitParentObject = 'InitParentObject';
7695
                                var InitParentObjectValue = record.get('ObjectId');
7696
                                if (InitParentObjectValue == undefined) {
7697
                                    InitParentObjectValue = "";
7698
                                }
7699
                                frmValue[InitParentObject] = InitParentObjectValue;
7700

    
7701
                                var InitParentClass = 'InitParentClass';
7702
                                var InitParentClassValue = record.get('ObjectType');
7703
                                if (InitParentClassValue == undefined) {
7704
                                    InitParentClassValue = "";
7705
                                }
7706
                                frmValue[InitParentClass] = InitParentClassValue;
7707
                                var frmValue_ = Ext.encode(frmValue);
7708

    
7709
                                Ext.Ajax.request({
7710
                                    method: 'POST',
7711
                                    url: '/Devt/SaveMaintainORM',
7712
                                    params: {
7713
                                        tableName: f.tableName,
7714
                                        data: frmValue_,
7715
                                        action: action_,
7716
                                        /*
7717
                                        InitStartDate: InitStartDate,
7718
                                        InitEndaDate: InitEndaDate,
7719
                                        InitParentObject: InitParentObject,
7720
                                        InitParentClass: InitParentClass
7721
                                         */
7722
                                    },
7723
                                    waitMsg: 'Saving Data...',
7724
                                    success: function (response) {
7725
                                        var result = Ext.decode(response.responseText);
7726
                                        if (result.success) {
7727
                                            MinovaMessage('Not Null', '000006', '', 'S')
7728

    
7729
                                            var pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7730
                                            if (pnl) {
7731
                                                Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0].setHeight(394);
7732
                                                layout = pnl.getLayoutType();
7733
                                                pnl.setLastpage(undefined);
7734
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7735
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7736

    
7737
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7738
                                                formEdit.setSubmitProc(false);
7739
                                                formEdit.setHidden(true);
7740
                                                grid_.setHidden(false);
7741
                                                grid_.getStore().reload()
7742

    
7743
                                            }
7744
                                            if (layout == 'L003') {
7745
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7746
                                                grid_.setHidden(false);
7747
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7748
                                                var detail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7749
                                                if (detail) {
7750
                                                    detail.setHeight(grid_.getHeight() + 100)
7751
                                                } else {
7752
                                                    var p = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7753
                                                    var p_ = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7754
                                                    p_.setTitle(p.getLastTitle());
7755
                                                }
7756

    
7757
                                            }
7758

    
7759
                                        } else {
7760
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7761
                                        }
7762
                                        var grid = Ext.ComponentQuery.query('[name=gridMenuMDOrm]')[0];
7763
                                        var s = grid.getStore();
7764
                                        s.removeAll();
7765
                                        var ObjectType = getParam("ObjectType");
7766
                                        var Lang = null;
7767
                                        Ext.Ajax.request({
7768
                                            async: false,
7769
                                            method: 'POST',
7770
                                            url: '/Devt/GetLangID',
7771
                                            success: function (response) {
7772
                                                Lang = response.responseText;
7773
                                            }
7774
                                        });
7775
                                        Ext.Ajax.request({
7776
                                            async: true,
7777
                                            method: 'POST',
7778
                                            url: '/UserControl/GetStore',
7779
                                            params: {
7780
                                                tableName: 'PHRCM0006',
7781
                                                param: 'Language[equal]' + Lang + ',ObjectClass[equal]' + ObjectType
7782

    
7783
                                            },
7784
                                            success: function (response) {
7785
                                                var results = Ext.decode(response.responseText);
7786
                                                var data_ = results.data;
7787
                                                s.loadData(results.data);
7788
                                                // console.log(data_)
7789
                                            }
7790
                                        });
7791
                                    },
7792
                                    failure: function (response) {
7793
                                        var result = Ext.decode(response.responseText);
7794
                                        console.log(result);
7795
                                    }
7796
                                });
7797
                            } else {
7798
                                var frmValue = Ext.encode(formEdit.getValues());
7799
                                Ext.Ajax.request({
7800
                                    method: 'POST',
7801
                                    url: '/Devt/SaveTable',
7802
                                    params: {
7803
                                        tableName: f.tableName,
7804
                                        data: frmValue,
7805
                                        action: formEdit.getActionSubmit()
7806
                                    },
7807
                                    waitMsg: 'Saving Data...',
7808
                                    success: function (response) {
7809
                                        var result = Ext.decode(response.responseText);
7810
                                        if (result.success) {
7811
                                            MinovaMessage('Not Null', '000006', '', 'S')
7812

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

    
7815
                                            if (pnl) {
7816
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(394);
7817
                                                layout = pnl.getLayoutType();
7818
                                                pnl.setLastpage(undefined);
7819
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7820
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7821

    
7822
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7823
                                                formEdit.setSubmitProc(false);
7824
                                                formEdit.setHidden(true);
7825
                                                grid_.setHidden(false);
7826
                                                grid_.getStore().reload()
7827
                                                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7828
                                                mpnl.setTitle(pnl.getLastTitle());
7829

    
7830
                                            }
7831
                                            if (layout == 'L003') {
7832
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7833
                                                grid_.setHidden(false);
7834
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7835
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7836
                                            }
7837

    
7838
                                        } else {
7839
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7840
                                        }
7841
                                    },
7842
                                    failure: function (response) {
7843
                                        var result = Ext.decode(response.responseText);
7844
                                        //console.log(result);
7845
                                    }
7846
                                });
7847
                            }
7848

    
7849
                        }
7850
                    }
7851
                }, {
7852
                    text: 'Delete',
7853
                    iconCls: 'fa-trash-o',
7854
                    name: 'Delete',
7855
                    style: 'font-family: FontAwesome',
7856
                    action: 'CRUDdelete',
7857
                    handler: function () {
7858
                        //add fungsi Delete
7859
                        f = this.up().up();
7860
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7861
                        var frmValue = Ext.encode(formEdit.getValues());
7862
                        if (formEdit.getForm().isValid()) {
7863
                            Ext.Ajax.request({
7864
                                method: 'POST',
7865
                                url: '/Devt/SaveTable',
7866
                                params: {
7867
                                    tableName: f.tableName,
7868
                                    data: frmValue,
7869
                                    action: 2
7870
                                },
7871
                                waitMsg: 'Saving Data...',
7872
                                success: function (response) {
7873
                                    var result = Ext.decode(response.responseText);
7874
                                    if (result.success) {
7875
                                        MinovaMessage('Not Null', '000006', '', 'S')
7876

    
7877
                                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7878
                                        if (pnl) {
7879
                                            layout = pnl.getLayoutType();
7880
                                            pnl.setLastpage(undefined);
7881

    
7882
                                        }
7883
                                        if (layout == 'L003') {
7884
                                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7885
                                            grid_.setHidden(false);
7886
                                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7887
                                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7888
                                        }
7889

    
7890
                                    } else {
7891
                                        MinovaMessage('Not Null', '000005', result.message.text, 'E')
7892
                                    }
7893
                                },
7894
                                failure: function (response) {
7895
                                    var result = Ext.decode(response.responseText);
7896
                                    //console.log(result);
7897
                                }
7898
                            });
7899
                        }
7900
                    }
7901

    
7902
                }, {
7903
                    text: 'Cancel',
7904
                    iconCls: 'fa-reply',
7905
                    style: 'font-family: FontAwesome',
7906
                    handler: function () {
7907
                        f = this.up().up();
7908
                        f.setSubmitProc(false);
7909
                        f.setHidden(true);
7910
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7911

    
7912
                        if (pnl) {
7913
                            //'L001'=grid L002 =heder detail L003=card L004=custom
7914
                            layout = pnl.getLayoutType();
7915
                            var last = 'MinovaGridFormGrid' + f.tableName;
7916
                            var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0];
7917
                            grid_.setHidden(false);
7918
                            pnl.setLastpage(undefined);
7919
                            var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7920
                            mpnl.setTitle(pnl.getLastTitle());
7921
                            if (layout == 'L003') {
7922
                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(400);
7923
                            } else {
7924
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7925
                            }
7926
                        } else {
7927
                            // Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7928
                            var mdDetail = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7929
                            layout = mdDetail.getLayoutType();
7930
                            if (layout == 'L003') {
7931
                                var panelDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7932
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + tableName + ']')[0].setHidden(false)
7933

    
7934
                                panelDetail.setHeight(400);
7935
                            } else {
7936
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7937
                            }
7938
                        }
7939

    
7940
                    }
7941
                }
7942
                ],
7943
            }
7944
            ]
7945
        });
7946
        me.callParent(arguments);
7947
    }
7948
});
7949

    
7950
Ext.define('MinovaUtil.MinovaES.MinovaGridCard', {
7951
    extend: 'Ext.form.Panel',
7952
    alias: ['widget.minovagridcard', 'widget.MinovaGridCard'],
7953
    tableName: undefined, //nama tabel
7954
    param: undefined, //param query
7955
    //hidebutton: undefined,
7956
    pagesize: undefined,
7957
    storename: undefined,
7958
    titleform: undefined,
7959
    titlegrid: undefined,
7960
    heightgrid: undefined,
7961
    heightform: undefined,
7962
    iseditform: undefined,
7963

    
7964
    getIsEditform: function () {
7965
        return this.iseditform;
7966
    },
7967
    setIsEditform: function (value) {
7968
        var me = this;
7969
        me.iseditform = value;
7970
        return me;
7971
    },
7972
    initComponent: function () {
7973
        var me = this;
7974
        var storename = me.storename;
7975
        if (storename == "" || storename == undefined) {
7976
            storename = "store" + me.tableName;
7977
        }
7978
        var tableName = me.tableName;
7979
        Ext.applyIf(me, {
7980
            items: [{
7981
                layoutType: "MinovaGridCard",
7982
                //title: me.titlegrid,
7983
                xtype: "minovagrid",
7984
                tableName: tableName, // nama tebel/dataset
7985
                name: "MinovaGridCardGrid" + tableName, //name bebeas
7986
                param: me.param, // parameter filteran
7987
                pagesize: me.pagesize, // jumlah record yang muncul per page
7988
                storename: storename, //nama store bebas
7989
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7990
                height: 330,
7991
                bodyPadding: 0,
7992
                dockedItems: [{
7993
                    xtype: 'pagingtoolbar',
7994
                    store: storename, // harus sama dengan naa store diatas
7995
                    dock: 'bottom', //posisi paging
7996
                    pageSize: me.pagesize,
7997
                    displayInfo: true
7998
                }
7999
                ],
8000

    
8001
                listeners: {
8002
                    viewready: function () {
8003
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
8004
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
8005
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
8006
                        } else {
8007
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
8008
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
8009
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
8010
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
8011
                        }
8012
                        //case orm
8013
                        if (this.layoutType == "MinovaGridCard") {
8014
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8015
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8016
                            formDisplay.setHidden(true);
8017
                            formEdit.setHidden(true);
8018
                        } else if (this.layoutType == "MinovaGridForm") {
8019
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8020
                            formEdit.setHidden(true);
8021
                        } else {
8022
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8023
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8024
                            formDisplay.setHidden(true);
8025
                            formEdit.setHidden(true);
8026
                        }
8027

    
8028
                    },
8029
                    itemdblclick: function () {
8030
                        //alert('a')
8031
                        var me = this;
8032

    
8033
                        var formDisplay = undefined;
8034
                        var formEdit = undefined;
8035
                        //case md orm
8036

    
8037
                        if (this.layoutType == "MinovaGridCard") {
8038
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8039
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8040
                        } else if (this.layoutType == "MinovaGridForm") {
8041
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8042
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8043
                            // formDisplay.setHidden(true);
8044

    
8045
                        } else {
8046
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
8047
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
8048

    
8049
                        }
8050
                        var submit_ = formEdit.getSubmitProc();
8051
                        var selection = me.getView().getSelectionModel().getSelection()[0];
8052
                        if (submit_ == undefined) {
8053
                            submit_ = false;
8054
                        }
8055
                        if (submit_ == false) {
8056

    
8057
                            if (this.layoutType == "MinovaGridCard") {
8058

    
8059
                                formDisplay.getForm().setValues(selection.data);
8060
                                formEdit.getForm().setValues(selection.data);
8061
                                formDisplay.setHidden(false);
8062
                                formEdit.setHidden(true);
8063
                                this.setHidden(true);
8064
                            } else if (this.layoutType == "MinovaGridForm") {
8065
                                formEdit.setHidden(true);
8066
                                formDisplay.getForm().setValues(selection.data);
8067
                                formEdit.getForm().setValues(selection.data);
8068
                            } else {
8069
                                formDisplay.setHidden(true);
8070
                                formEdit.setHidden(true);
8071

    
8072
                                formDisplay.getForm().setValues(selection.data);
8073
                                formEdit.getForm().setValues(selection.data);
8074
                            }
8075
                            // untuk case ORM
8076
                            var display_ = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + tableName + ']')[0].getHeight();
8077
                            if (display_) {
8078
                                var pnlORM = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0]
8079
                                var pnlMD = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
8080
                                if (pnlORM) {
8081
                                    pnlORM.setHeight(pnl + 100);
8082
                                }
8083
                                if (pnlMD) {
8084
                                    Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0].setHeight(pnlMD + 600);
8085
                                    Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(pnlMD + 600);
8086
                                }
8087
                            }
8088
                            //end case ORM and MD
8089
                        } else {
8090
                            alert('still process')
8091
                        }
8092

    
8093
                    },
8094
                    beforeedit: function () {
8095
                        return false;
8096
                    }
8097
                }
8098
            }, {
8099
                xtype: 'minovaform',
8100
                name: "MinovaGridCardDisplay" + tableName,
8101
                tableName: tableName, // nama tabel /dataset
8102
                isLookup: '', // 1 or 'Y' for lookup
8103
                isDisplay: true, // true== form is displayfield
8104
                buttons: [{
8105
                    text: 'Edit',
8106
                    name: 'Edit' + tableName,
8107
                    iconCls: 'fa-edit',
8108
                    style: 'font-family: FontAwesome',
8109
                    handler: function () {
8110
                        f = this.up().up();
8111
                        f.setSubmitProc(false);
8112
                        f.setHidden(true);
8113
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8114
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(true);
8115
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(false);
8116

    
8117
                    }
8118
                }, {
8119
                    text: 'Back to Grid',
8120
                    name: 'Cancel' + tableName,
8121
                    iconCls: 'fa-reply',
8122
                    style: 'font-family: FontAwesome',
8123
                    handler: function () {
8124
                        f = this.up().up();
8125
                        f.setSubmitProc(false);
8126
                        f.setHidden(true);
8127
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8128
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
8129
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
8130

    
8131
                    }
8132
                }
8133
                ],
8134
            }, {
8135
                xtype: 'minovaform',
8136
                name: "MinovaGridCardEdit" + tableName,
8137
                tableName: tableName, // nama tabel /dataset
8138
                isLookup: '', // 1 or 'Y' for lookup
8139
                isDisplay: false, // true== form is displayfield
8140
                buttons: [{
8141
                    text: 'Save',
8142
                    name: 'Save' + tableName,
8143
                    iconCls: 'fa-save',
8144
                    style: 'font-family: FontAwesome',
8145
                    handler: function () {
8146
                        f = this.up().up();
8147
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0];
8148
                    }
8149
                }, {
8150
                    text: 'Delete',
8151
                    iconCls: 'fa-trash-o',
8152
                    name: 'Delete',
8153
                    style: 'font-family: FontAwesome',
8154
                    action: 'CRUDdelete'
8155
                }, {
8156
                    text: 'Back to Grid',
8157
                    name: 'EditForm' + tableName,
8158
                    iconCls: 'fa-reply',
8159
                    style: 'font-family: FontAwesome',
8160
                    handler: function () {
8161
                        f = this.up().up();
8162
                        f.setSubmitProc(false);
8163
                        f.setHidden(true);
8164
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8165
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
8166
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
8167

    
8168
                    }
8169
                }
8170
                ],
8171
            }
8172
            ]
8173
        });
8174
        me.callParent(arguments);
8175
    }
8176
});
8177

    
8178
Ext.define('MinovaUtil.MinovaES.MinovaFloatField', {
8179
    extend: 'Ext.form.field.Number',
8180
    alias: 'widget.minovafloatfield',
8181
    hideTrigger: true,
8182
    allowDecimals: true,
8183
    precision: undefined,
8184
    isValid: function () {
8185
        var b = this,
8186
		a = b.disabled,
8187
		c = b.forceValidation || !a;
8188
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8189
    },
8190
    setValue: function (v) {
8191
        this.setRawValue(this.getFormattedValue(v));
8192
    },
8193
    getValue: function () {
8194
        var val = this.removeFormat(this.getRawValue());
8195
        this.value = val;
8196
        return val;
8197
    },
8198
    getSubmitValue: function () {
8199
        return this.removeFormat(this.getRawValue());
8200
    },
8201
    removeFormat: function (v) {
8202
        if (Ext.isEmpty(v))
8203
            return v;
8204
        else {
8205
            v = v.replace(Ext.util.Format.currencySign, '');
8206
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8207
            return v;
8208
        }
8209
    },
8210
    onFocus: function () {
8211
        this.setRawValue(this.removeFormat(this.getRawValue()));
8212
    },
8213
    onBlur: function () {
8214
        this.setRawValue(this.getFormattedValue(this.getValue()));
8215
    },
8216
    getFormattedValue: function (v) {
8217
        var prec = '';
8218
        if (this.precision != '' && this.precision > 0) {
8219
            for (var i = 0; i < this.precision; i++) {
8220
                prec = prec + '0'
8221
            }
8222
        }
8223
        return Ext.util.Format.number(v, '0,000.' + prec);
8224
    }
8225
});
8226
Ext.define('MinovaUtil.MinovaES.MinovaNumberField', {
8227
    extend: 'Ext.form.field.Number',
8228
    alias: 'widget.minovanumberfield',
8229
    //hideTrigger: true,
8230
    isValid: function () {
8231
        var b = this,
8232
		a = b.disabled,
8233
		c = b.forceValidation || !a;
8234
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8235
    },
8236
    setValue: function (v) {
8237
        this.setRawValue(this.getFormattedValue(v));
8238
    },
8239
    getValue: function () {
8240
        var val = this.removeFormat(this.getRawValue());
8241
        this.value = val;
8242
        return val;
8243
    },
8244
    getSubmitValue: function () {
8245
        return this.removeFormat(this.getRawValue());
8246
    },
8247
    removeFormat: function (v) {
8248
        if (Ext.isEmpty(v))
8249
            return v;
8250
        else {
8251
            v = v.replace(Ext.util.Format.currencySign, '');
8252
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8253
            return v;
8254
        }
8255
    },
8256
    onFocus: function () {
8257
        this.setRawValue(this.removeFormat(this.getRawValue()));
8258
    },
8259
    onBlur: function () {
8260
        this.setRawValue(this.getFormattedValue(this.getValue()));
8261
    },
8262
    getFormattedValue: function (v) {
8263
        return Ext.util.Format.number(v, '0,000');
8264
    }
8265
});
8266

    
8267
Ext.define('MinovaUtil.MinovaES.SysDateTime', {
8268
    extend: 'Ext.form.field.Text',
8269
    alias: ['widget.minovasysdatetime'],
8270
    undefinedText: '&#160;',
8271
    setValue: function (v) {
8272
        var value = v;
8273
        var hasil = null;
8274
        /*
8275
		if (value === undefined) {
8276
		return this.undefinedText;
8277
		}
8278
		if (value === null) {
8279
		return this.setRawValue(null);
8280
		}
8281
		 */
8282
        //hamid 200916
8283
        //if (value != null || value != "" || value != undefined) {
8284
        //    return this.setRawValue(null);
8285
        if (value == "" || value == null) {
8286
            return this.setRawValue("");
8287
            //end
8288
        } else {
8289
            var d = value.substring(6, 8);
8290
            var m = value.substring(4, 6);
8291
            var y = value.substring(0, 4);
8292
            var h = value.substring(8, 10);
8293
            var mt = value.substring(10, 12);
8294
            var s = value.substring(12, 14);
8295
            hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
8296
        }
8297

    
8298
        this.setRawValue(hasil);
8299
    },
8300
    getRawValue: function () {
8301
        return this.getValue();
8302
    },
8303
    getValue: function () {
8304
        var value = this.rawValue;
8305
        var hasil = null;
8306
        if (value != undefined) {
8307
            var d = value.substring(0, 2);
8308
            var m = value.substring(3, 5);
8309
            var y = value.substring(6, 10);
8310
            var h = value.substring(14, 16);
8311
            var mt = value.substring(17, 19);
8312
            var s = value.substring(20, 22);
8313
            hasil = y + m + d + h + mt + s;
8314
        }
8315
        return hasil;
8316
    }
8317
});
8318
Ext.define('MinovaUtil.MinovaES.MinovaDateTime', {
8319
    extend: 'Ext.form.field.Trigger',
8320
    alias: ['widget.minovadatetime', 'widget.MinovaDateTime'],
8321
    tableName: undefined,
8322
    param: undefined,
8323
    anchor: '50%',
8324
    initComponent: function () {
8325
        var me = this;
8326
        Ext.applyIf(me, {});
8327
        me.callParent(arguments);
8328
    },
8329
    onTriggerClick: function () {
8330
        Ext.create('Ext.window.Window', {
8331
            title: 'Hello',
8332
            modal: true,
8333
            layout: 'fit',
8334
            dockedItems: [{
8335
                xtype: 'toolbar',
8336
                dock: 'bottom',
8337
                align: 'center',
8338
                items: [{
8339
                    xtype: 'tbspacer'
8340
                }, {
8341
                    xtype: 'button',
8342
                    text: 'Today'
8343
                }, {
8344
                    xtype: 'tbspacer'
8345
                }, ]
8346
            }
8347
            ],
8348
            items: [{
8349
                xtype: 'panel',
8350
                layout: 'hbox',
8351
                items: [{
8352
                    xtype: 'datepicker',
8353
                    name: 'date',
8354
                    showToday: false,
8355
                    handler: function (picker, date) {}
8356

    
8357
                }, {
8358
                    xtype: 'sliderfield',
8359
                    width: 60,
8360
                    name: 'hour',
8361
                    labelAlign: 'top',
8362
                    fieldLabel: 'Hour',
8363
                    value: 0,
8364
                    increment: 1,
8365
                    minValue: 0,
8366
                    maxValue: 24,
8367
                    margin: '10 5 3 20',
8368
                    renderTo: Ext.getBody(),
8369
                }, {
8370
                    xtype: 'sliderfield',
8371
                    width: 60,
8372
                    name: 'minute',
8373
                    labelAlign: 'top',
8374
                    fieldLabel: 'Minute',
8375
                    value: 0,
8376
                    increment: 1,
8377
                    minValue: 0,
8378
                    maxValue: 60,
8379
                    margin: '10 5 3 20',
8380
                    renderTo: Ext.getBody(),
8381
                }, {
8382
                    xtype: 'sliderfield',
8383
                    width: 60,
8384
                    name: 'second',
8385
                    labelAlign: 'top',
8386
                    fieldLabel: 'Second',
8387
                    value: 0,
8388
                    increment: 1,
8389
                    minValue: 0,
8390
                    maxValue: 60,
8391
                    margin: '10 5 3 20',
8392
                    renderTo: Ext.getBody(),
8393
                }
8394
                ]
8395
            }
8396
            ]
8397
        }).show();
8398
    }
8399
});
8400

    
8401
Ext.define('MinovaUtil.MinovaES.MinovaMDORM', {
8402
    extend: 'Ext.form.Panel',
8403
    alias: ['widget.minovamdorm'],
8404

    
8405
    //controller: 'sample',
8406
    controller: 'orm-manage-controller',
8407
    tableName: undefined, //nama tabel
8408
    param: undefined, //param query
8409
    pagesize: undefined,
8410
    storename: undefined,
8411
    titleform: undefined,
8412
    titlegrid: undefined,
8413
    heightgrid: undefined,
8414
    heightform: undefined,
8415
    iseditform: undefined,
8416
    lastheightform: undefined,
8417
    layoutType: undefined,
8418
    lastpage: undefined,
8419
    lastTitle: undefined,
8420
    getLastTitle: function () {
8421
        return this.lastTitle;
8422
    },
8423
    setLastTitle: function (value) {
8424
        var me = this;
8425
        me.lastTitle = value;
8426
        return me;
8427
    },
8428
    getLastpage: function () {
8429
        return this.lastpage;
8430
    },
8431
    setLastpage: function (value) {
8432
        var me = this;
8433
        me.lastpage = value;
8434
        return me;
8435
    },
8436
    getLayoutType: function () {
8437
        return this.layoutType;
8438
    },
8439
    setLayoutType: function (value) {
8440
        var me = this;
8441
        me.layoutType = value;
8442
        return me;
8443
    },
8444
    getLastheightform: function () {
8445
        return this.lastheightform;
8446
    },
8447
    setLastheightform: function (value) {
8448
        var me = this;
8449
        me.lastheightform = value;
8450
        return me;
8451
    },
8452

    
8453
    getIsEditform: function () {
8454
        return this.iseditform;
8455
    },
8456
    setIsEditform: function (value) {
8457
        var me = this;
8458
        me.iseditform = value;
8459
        return me;
8460
    },
8461
    initComponent: function () {
8462
        var me = this;
8463
        var userAction = MinovaUtil.GetActionMenu();
8464
        var crudBtn = true;
8465
        if (userAction == '1') {
8466
            crudBtn = false
8467
        }
8468
        var storename = me.storename;
8469
        if (storename == "" || storename == undefined) {
8470
            storename = "store" + me.tableName;
8471
        }
8472
        var tableName = me.tableName;
8473
        Ext.applyIf(me, {
8474
            items: [{
8475
                layoutType: "MinovaGridForm",
8476
                title: me.titlegrid,
8477
                xtype: "minovagridmd",
8478
                tableName: tableName, // nama tebel/dataset
8479
                name: "MinovaGridFormGrid", //name bebeas
8480
                param: me.param, // parameter filteran
8481
                pagesize: me.pagesize, // jumlah record yang muncul per page
8482
                storename: storename, //nama store bebas
8483
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
8484
                height: 330,
8485
                bodyPadding: 0,
8486
                tbar: [{
8487
                    xtype: 'button',
8488
                    text: 'Action',
8489
                    hidden: crudBtn,
8490
                    name: 'actionGrid',
8491
                    menu: [{
8492
                        text: 'Add',
8493
                        action: 'addGrid',
8494
                        name: 'addGridORM',
8495
                        action: 'CRUDaddNewRecord',
8496
                        style: 'font-family: FontAwesome',
8497
                        itemId: 'AddData',
8498
                        iconCls: 'fa-plus-circle',
8499

    
8500
                    }, {
8501
                        text: 'Copy',
8502
                        action: 'copyGrid',
8503
                        name: 'CopyGridORM',
8504
                        iconCls: 'fa-copy',
8505
                        style: 'font-family: FontAwesome',
8506
                    }, {
8507
                        text: 'Edit',
8508
                        action: 'editGrid',
8509
                        name: 'EditGridORM',
8510
                        iconCls: 'fa-edit',
8511
                        style: 'font-family: FontAwesome',
8512
                    }, {
8513
                        text: 'Delete',
8514
                        name: 'DeleteGridORM',
8515
                        hidden: true,
8516
                        iconCls: 'fa-trash-o',
8517
                        style: 'font-family: FontAwesome',
8518
                    }
8519
                    ]
8520
                }, {
8521
                    xtype: 'tbfill'
8522
                }, {
8523
                    text: 'Clear Filters',
8524
                    tooltip: 'Clear all filters',
8525
                    name: 'clearbtn',
8526
                    handler: function () {
8527
                        var tolbar = this.up()
8528
                        var grid_ = tolbar.up()
8529
                        grid_.filters.clearFilters()
8530
                    }
8531
                }, ],
8532

    
8533
                dockedItems: [{
8534
                    xtype: 'pagingtoolbar',
8535
                    store: storename, // harus sama dengan naa store diatas
8536
                    dock: 'bottom', //posisi paging
8537
                    pageSize: me.pagesize,
8538
                    displayInfo: true
8539
                }
8540
                ],
8541
                listeners: {
8542
                    afterrender: function (me) {
8543
                        if (MinovaUtil.GetActionMenu() == "1") {}
8544
                        else {}
8545
                    },
8546

    
8547
                },
8548

    
8549
            }, {
8550
                xtype: 'minovaform',
8551
                name: "MinovaGridFormDisplay",
8552
                //name: "MinovaGridFormEdit",
8553
                border: false,
8554
                tableName: tableName, // nama tabel /dataset
8555
                isLookup: '', // 1 or 'Y' for lookup
8556
                isDisplay: true, // true== form is displayfield
8557
                /*
8558
                buttons: [{
8559
                text: 'Edit',
8560
                name: 'EditDisplay',
8561
                iconCls: 'fa-edit',
8562
                style: 'font-family: FontAwesome',
8563
                }, {
8564
                text: 'Back to Grid',
8565
                name: 'BackGrid',
8566
                iconCls: 'fa-reply',
8567
                style: 'font-family: FontAwesome',
8568
                }
8569
                ],
8570
                 */
8571
            }, {
8572
                xtype: 'minovaform',
8573
                //name: "MinovaGridFormDisplay",
8574
                name: "MinovaGridFormEdit",
8575
                border: false,
8576
                tableName: tableName, // nama tabel /dataset
8577
                isLookup: '', // 1 or 'Y' for lookup
8578
                isDisplay: false, // true== form is displayfield
8579
                /*
8580
                buttons: [{
8581
                text: 'Save',
8582
                name: 'btnSaveMD',
8583
                iconCls: 'fa-save',
8584
                style: 'font-family: FontAwesome',
8585
                }, {
8586
                text: 'Delete',
8587
                iconCls: 'fa-trash-o',
8588
                name: 'btnDeleteMD',
8589
                style: 'font-family: FontAwesome',
8590
                action: 'CRUDdelete',
8591
                }, {
8592
                text: 'Cancel',
8593
                name: 'btnCancelMD',
8594
                iconCls: 'fa-reply',
8595
                style: 'font-family: FontAwesome',
8596
                }
8597
                ],
8598
                 */
8599
            }
8600
            ]
8601

    
8602
        });
8603
        me.callParent(arguments);
8604
    }
8605
});
8606

    
8607
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMD', {
8608
    extend: 'Ext.form.Panel',
8609
    alias: ['widget.MinovaHeadermd', 'widget.MinovaHeaderMD'],
8610
    allTableName: undefined,
8611
    param: undefined,
8612
    //frame: true,
8613
    resizable: true,
8614
    autoScroll: true,
8615
    minHeight: 20,
8616
    layout: 'column',
8617
    name: 'HeaderMD',
8618
    getAllTableName: function () {
8619
        return this.allTableName;
8620
    },
8621
    setAllTableName: function (value) {
8622
        var me = this;
8623
        me.allTableName = value;
8624
        return me;
8625
    },
8626
    listeners: {
8627
        afterrender: function (me) {
8628

    
8629
            var nowDate = MinovaUtil.GetNowDate()
8630
            var allTbl = me.getAllTableName();
8631
            //alert(allTbl);
8632
            var splitTable = allTbl.split(',')
8633
            splitTable.forEach(function (tbl) {
8634
                // console.log(tbl);
8635
                //set values form
8636
                var nowDate = MinovaUtil.GetNowDate();
8637
                parameter = null;
8638
                if (me.isEmployee == true) {
8639
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
8640
                } else {
8641
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8642
                }
8643
                Ext.Ajax.request({
8644
                    method: 'POST',
8645
                    //async: false,
8646
                    url: '/UserControl/GetStore',
8647
                    params: {
8648
                        tableName: tbl,
8649
                        param: parameter
8650
                    },
8651
                    success: function (response) {
8652
                        var results = Ext.decode(response.responseText);
8653
                        hasil = results.data;
8654
                        //console.log(hasil)
8655
                        if (hasil.length > 0) {
8656
                            me.getForm().setValues(hasil[0]);
8657

    
8658
                            //console.log(me)
8659
                        }
8660

    
8661
                    }
8662
                });
8663
            });
8664

    
8665
            //setTimeout(function () {
8666
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
8667
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
8668
            //}, 100);
8669

    
8670
        },
8671

    
8672
    },
8673

    
8674
    initComponent: function () {
8675
        var me = this;
8676
        var col1 = [];
8677
        var col2 = [];
8678
        var hasil = null;
8679
        //get moduletype
8680
        //var ModuleType = 'PA';
8681
        //var ModuleType = MinovaUtil.GetModuleType()
8682
        //get Lang
8683
        var LangId = localStorage.LangId;
8684
        var allTable = null;
8685
        var tbl = null;
8686
        var tblTemp = null;
8687
        var nowDate = MinovaUtil.GetNowDate();
8688
        //var Photo_ = 'nophoto.gif';
8689
        var Photo = 'nophoto.gif';
8690
        tableName = null;
8691
        parameter = null;
8692
        // get Photo
8693
        //hamid200916
8694
        if (me.isEmployee == true) {
8695
            tableName = 'PHRPA0001';
8696
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
8697
        } else {
8698
            tableName = 'PHRRC0001';
8699
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8700
        }
8701
        Ext.Ajax.request({
8702
            method: 'POST',
8703
            async: false,
8704
            url: '/UserControl/GetStore',
8705
            params: {
8706
                tableName: tableName,
8707
                param: parameter
8708
            },
8709
            success: function (response) {
8710
                var results = Ext.decode(response.responseText);
8711
                hasil = results.data;
8712
                if (hasil.length > 0) {
8713
                    dataPhoto = hasil[0].Picture
8714
                    if (dataPhoto != "") {
8715
                        Photo = dataPhoto;
8716
                    }
8717
                }
8718

    
8719
            }
8720
        });
8721

    
8722
        var hasil = undefined;
8723
        Ext.Ajax.request({
8724
            async: false,
8725
            method: 'POST',
8726
            url: '/UserControl/GetStore',
8727
            params: {
8728
                tableName: 'PDSBS0009',
8729
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8730
            },
8731
            success: function (response) {
8732
                hasil = Ext.decode(response.responseText).data;
8733

    
8734
            }
8735
        });
8736

    
8737
        //sorting results
8738
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8739
        if (hasil.length > 0) {
8740
            Ext.each(hasil, function (rec) {
8741
                tblTemp = rec.TableName;
8742
                if (tbl != tblTemp) {
8743
                    tbl = tblTemp;
8744
                    if (allTable == null) {
8745
                        allTable = tbl
8746
                    } else {
8747
                        allTable = allTable + ',' + tbl
8748
                    }
8749

    
8750
                }
8751
                // build form
8752
                if (rec.TableRef != '') {
8753
                    valueField = null;
8754
                    displayValue = null;
8755
                    Ext.Ajax.request({
8756
                        async: false,
8757
                        method: 'POST',
8758
                        url: '/UserControl/GetStore',
8759
                        params: {
8760
                            tableName: 'SDATATABLEFIELD',
8761
                            param: 'TableName[equal]' + rec.TableRef
8762
                        },
8763
                        success: function (response) {
8764
                            var results = Ext.decode(response.responseText);
8765
                            data_ = results.data;
8766
                            if (data_ != undefined) {
8767
                                valueField_ = $.grep(data_, function (r) {
8768
                                    return r.ValueField == '1'
8769
                                });
8770
                                if (valueField_.length > 0) {
8771
                                    valueField = valueField_[0].FieldName
8772
                                }
8773

    
8774
                                displayValue_ = $.grep(data_, function (r) {
8775
                                    return r.DisplayValue == '1'
8776
                                });
8777
                                if (displayValue_.length > 0) {
8778
                                    displayValue = displayValue_[0].FieldName
8779
                                }
8780
                            }
8781
                        }
8782
                    });
8783

    
8784
                    formfield = new Ext.form.Display({
8785
                        fieldLabel: rec.ScreenCaption,
8786
                        name: rec.FieldName,
8787
                        //value: rec.DefaultValue,
8788
                        padding: 0,
8789
                        labelCls: 'label-minova',
8790
                        labelWidth: 150,
8791
                        anchor: '80%',
8792
                        store: Ext.create('Ext.data.Store', {
8793
                            storeId: 'storeDisplay' + rec.FieldName,
8794
                            //autoLoad: true,
8795
                            proxy: {
8796
                                method: 'POST',
8797
                                type: 'ajax',
8798
                                extraParams: {
8799
                                    tableName: rec.TableRef,
8800
                                    param: ''
8801
                                },
8802
                                reader: {
8803
                                    type: 'json',
8804
                                    root: 'data',
8805
                                    totalProperty: 'data[0].TotalCount'
8806
                                }
8807
                            }
8808
                        }),
8809
                        listeners: {
8810
                            afterrender: function (f) {
8811
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8812
                                var ParamCombo = rec.ParamCombo;
8813
                                var param = '';
8814
                                //if (ParamCombo != '') {
8815
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
8816
                                    var splitParam = ParamCombo.split(']');
8817
                                    switch (rec.FieldName) {
8818
                                        case 'Position':
8819
                                            ParamCombo = 'P'
8820
                                            break;
8821
                                        case 'CostCenter':
8822
                                            ParamCombo = 'CC'
8823
                                            break;
8824
                                        case 'Organization':
8825
                                            ParamCombo = 'O'
8826
                                            break;
8827
                                        case 'Job':
8828
                                            ParamCombo = 'J'
8829
                                            break;
8830
                                    }
8831
                                    //if (splitParam.length == 1) {
8832
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
8833
                                    //} else {
8834
                                    //    param = ParamCombo;
8835
                                    //}
8836
                                }
8837
                                //}
8838
                                Ext.Ajax.request({
8839
                                    method: 'POST',
8840
                                    async: false,
8841
                                    url: '/UserControl/GetStore',
8842
                                    params: {
8843
                                        tableName: rec.TableRef,
8844
                                        param: param
8845
                                    },
8846
                                    success: function (response) {
8847
                                        var results = Ext.decode(response.responseText);
8848

    
8849
                                        //dt = results.data;
8850
                                        store.loadData(results.data);
8851

    
8852
                                    }
8853
                                });
8854
                            },
8855
                            change: function (f) {
8856
                                //alert(this.valueField, value);
8857
                                var display = this.displayField;
8858
                                var value = this.getValue();
8859
                                var st = f.store
8860
                                var r = st.findRecord(f.valueField, f.value)
8861
                                if (r != null) {
8862
                                    f.setRawValue(r.get(f.displayField))
8863
                                } else {
8864
                                    f.setRawValue(f.value);
8865

    
8866
                                }
8867
                            }
8868

    
8869
                        },
8870
                        queryMode: 'local',
8871
                        displayField: displayValue,
8872
                        valueField: valueField,
8873
                    });
8874
                } else {
8875
                    formfield = new Ext.form.Display({
8876
                        fieldLabel: rec.ScreenCaption,
8877
                        name: rec.FieldName,
8878
                        labelCls: 'label-minova',
8879
                        labelWidth: 150,
8880
                        //value: rec.DefaultValue,
8881
                        padding: 0,
8882
                        anchor: '80%'
8883
                    });
8884
                }
8885
                if (isDesk) {
8886
                    if (rec.Column == 1) {
8887
                        col1.push(formfield);
8888
                    } else {
8889
                        col2.push(formfield);
8890
                    }
8891
                } else {
8892
                    col1.push(formfield);
8893
                }
8894

    
8895
            });
8896
            //set allTable
8897
            this.setAllTableName(allTable);
8898
        }
8899

    
8900
        Ext.applyIf(me, {
8901
            items: [{
8902
                width: 150,
8903
                margin: '0 0 10 10',
8904
                items: [{
8905
                    xtype: 'image',
8906
                    id: 'imageusermd',
8907
                    name: 'imageusermd',
8908
                    width: 120,
8909
                    height: 150,
8910
                    padding: 5,
8911
                    border: true,
8912
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8913
                }
8914
                ]
8915
            },{
8916
                bodyPadding: 0,
8917
                width: 400,
8918
                margin: '10 5 3 10',
8919
                items: col1
8920
            }, {
8921
                bodyPadding: 0,
8922
                width: 400,
8923
                margin: '10 5 3 30',
8924
                items: col2
8925
            }
8926
            ],
8927
        });
8928
        me.callParent(arguments);
8929

    
8930
    }
8931
});
8932

    
8933

    
8934

    
8935

    
8936
/*Add Taufan (Header Master Data For ERP)*/
8937
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDLogistic', {
8938
    extend: 'Ext.form.Panel',
8939
    alias: ['widget.MinovaHeadermdLogistic', 'widget.MinovaHeaderMDLogistic', 'widget.minovaheadermdlogistic'],
8940
    tablenameheader: undefined,
8941
    keyid: undefined,
8942
    allTableName: undefined,
8943
    param: undefined,
8944
    resizable: true,
8945
    autoScroll: true,
8946
    minHeight: 20,
8947
    layout: 'column',
8948
    name: 'HeaderMDLogistic',
8949
    getAllTableName: function () {
8950
        return this.allTableName;
8951
    },
8952
    setAllTableName: function (value) {
8953
        var me = this;
8954
        me.allTableName = value;
8955
        return me;
8956
    },
8957
    listeners: {
8958
        afterrender: function (me) {
8959
            var nowDate = MinovaUtil.GetNowDate()
8960
            var allTbl = me.getAllTableName();
8961
            var splitTable = allTbl.split(',')
8962
            splitTable.forEach(function (tbl) {
8963
                var nowDate = MinovaUtil.GetNowDate();
8964
                var parameter = me.keyid + '[=]' + getParam("KeyValue");
8965
                Ext.Ajax.request({
8966
                    method: 'POST',
8967
                    url: '/UserControl/GetStore',
8968
                    params: {
8969
                        tableName: tbl,
8970
                        param: parameter
8971
                    },
8972
                    success: function (response) {
8973
                        var results = Ext.decode(response.responseText);
8974
                        hasil = results.data;
8975
                        if (hasil.length > 0) {
8976
                            me.getForm().setValues(hasil[0]);
8977
                        }
8978
                    }
8979
                });
8980
            });
8981
        }
8982
    },
8983
    initComponent: function () {
8984
        var me = this;
8985
        var col1 = [];
8986
        var col2 = [];
8987
        var hasil = null;
8988
        var LangId = localStorage.LangId;
8989
        var allTable = null;
8990
        var tbl = null;
8991
        var tblTemp = null;
8992
        var nowDate = MinovaUtil.GetNowDate();
8993
        var Photo = 'nophoto.gif';
8994
        var hasil = undefined;
8995
        var parameter = me.keyid + '[=]' + getParam("KeyValue");
8996
        Ext.Ajax.request({
8997
            method: 'POST',
8998
            async: false,
8999
            url: '/UserControl/GetStore',
9000
            params: {
9001
                tableName: me.tablenameheader,
9002
                param: parameter
9003
            },
9004
            success: function (response) {
9005
                var results = Ext.decode(response.responseText);
9006
                hasil = results.data;
9007
                if (hasil.length > 0) {
9008
                    dataPhoto = hasil[0].Photo
9009
                    if (dataPhoto != "") {
9010
                        Photo = dataPhoto;
9011
                    }
9012
                }
9013
            }
9014
        });
9015
        Ext.Ajax.request({
9016
            async: false,
9017
            method: 'POST',
9018
            url: '/UserControl/GetStore',
9019
            params: {
9020
                tableName: 'PDSBS0009',
9021
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
9022
            },
9023
            success: function (response) {
9024
                hasil = Ext.decode(response.responseText).data;
9025
            }
9026
        });
9027
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
9028
        if (hasil.length > 0) {
9029
            Ext.each(hasil, function (rec) {
9030
                tblTemp = rec.TableName;
9031
                if (tbl != tblTemp) {
9032
                    tbl = tblTemp;
9033
                    if (allTable == null) {
9034
                        allTable = tbl
9035
                    } else {
9036
                        allTable = allTable + ',' + tbl
9037
                    }
9038
                }
9039
                if (rec.TableRef != '') {
9040
                    valueField = null;
9041
                    displayValue = null;
9042
                    Ext.Ajax.request({
9043
                        async: false,
9044
                        method: 'POST',
9045
                        url: '/UserControl/GetStore',
9046
                        params: {
9047
                            tableName: 'SDATATABLEFIELD',
9048
                            param: 'TableName[equal]' + rec.TableRef
9049
                        },
9050
                        success: function (response) {
9051
                            var results = Ext.decode(response.responseText);
9052
                            data_ = results.data;
9053
                            if (data_ != undefined) {
9054
                                valueField_ = $.grep(data_, function (r) {
9055
                                    return r.ValueField == '1'
9056
                                });
9057
                                if (valueField_.length > 0) {
9058
                                    valueField = valueField_[0].FieldName
9059
                                }
9060
                                displayValue_ = $.grep(data_, function (r) {
9061
                                    return r.DisplayValue == '1'
9062
                                });
9063
                                if (displayValue_.length > 0) {
9064
                                    displayValue = displayValue_[0].FieldName
9065
                                }
9066
                            }
9067
                        }
9068
                    });
9069

    
9070
                    formfield = new Ext.form.Display({
9071
                        fieldLabel: rec.ScreenCaption,
9072
                        name: rec.FieldName,
9073
                        padding: 0,
9074
                        labelCls: 'label-minova',
9075
                        labelWidth: 150,
9076
                        anchor: '80%',
9077
                        store: Ext.create('Ext.data.Store', {
9078
                            storeId: 'storeDisplay' + rec.FieldName,
9079
                            proxy: {
9080
                                method: 'POST',
9081
                                type: 'ajax',
9082
                                extraParams: {
9083
                                    tableName: rec.TableRef,
9084
                                    param: ''
9085
                                },
9086
                                reader: {
9087
                                    type: 'json',
9088
                                    root: 'data',
9089
                                    totalProperty: 'data[0].TotalCount'
9090
                                }
9091
                            }
9092
                        }),
9093
                        listeners: {
9094
                            afterrender: function (f) {
9095
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
9096
                                var ParamCombo = rec.ParamCombo;
9097
                                var param = '';
9098
                                Ext.Ajax.request({
9099
                                    method: 'POST',
9100
                                    async: false,
9101
                                    url: '/UserControl/GetStore',
9102
                                    params: {
9103
                                        tableName: rec.TableRef,
9104
                                        param: param
9105
                                    },
9106
                                    success: function (response) {
9107
                                        var results = Ext.decode(response.responseText);
9108
                                        store.loadData(results.data);
9109
                                    }
9110
                                });
9111
                            },
9112
                            change: function (f) {
9113
                                var display = this.displayField;
9114
                                var value = this.getValue();
9115
                                var st = f.store
9116
                                var r = st.findRecord(f.valueField, f.value)
9117
                                if (r != null) {
9118
                                    f.setRawValue(r.get(f.displayField))
9119
                                } else {
9120
                                    f.setRawValue(f.value);
9121
                                }
9122
                            }
9123
                        },
9124
                        queryMode: 'local',
9125
                        displayField: displayValue,
9126
                        valueField: valueField,
9127
                    });
9128
                } else {
9129
                    formfield = new Ext.form.Display({
9130
                        fieldLabel: rec.ScreenCaption,
9131
                        name: rec.FieldName,
9132
                        labelCls: 'label-minova',
9133
                        labelWidth: 150,
9134
                        padding: 0,
9135
                        anchor: '80%'
9136
                    });
9137
                }
9138
                if (isDesk) {
9139
                    if (rec.Column == 1) {
9140
                        col1.push(formfield);
9141
                    } else {
9142
                        col2.push(formfield);
9143
                    }
9144
                } else {
9145
                    col1.push(formfield);
9146
                }
9147

    
9148
            });
9149
            this.setAllTableName(allTable);
9150
        }
9151
        Ext.applyIf(me, {
9152
            items: [{
9153
                width: 150,
9154
                items: [{
9155
                    xtype: 'image',
9156
                    id: 'imageusermd',
9157
                    name: 'imageusermd',
9158
                    width: 120,
9159
                    height: 150,
9160
					margin: '10 20 3 30',
9161
                    border: true,
9162
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
9163
                }
9164
                ]
9165
            },{
9166
                bodyPadding: 0,
9167
                width: 400,
9168
                margin: '10 5 3 50',
9169
                items: col1
9170
            }, {
9171
                bodyPadding: 0,
9172
                width: 400,
9173
                margin: '10 5 3 30',
9174
                items: col2
9175
            }, 
9176
            ]
9177
        });
9178
        me.callParent(arguments);
9179
    }
9180
});
9181
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateTimeColumn', {
9182
    extend: 'Ext.grid.column.Column',
9183
    alias: ['widget.minovadatetimecolumn'],
9184
    alternateClassName: 'Ext.grid.MinovaDateTimeColumn',
9185
    undefinedText: '&#160;',
9186
    defaultRenderer: function (value) {
9187
        //hamid200916
9188
        //if (value === undefined) {
9189
        if (value === "") {
9190
            return this.undefinedText;
9191
            //end
9192
        }
9193

    
9194
        var d = value.substring(6, 8);
9195
        var m = value.substring(4, 6);
9196
        var y = value.substring(0, 4);
9197
        var h = value.substring(8, 10);
9198
        var mt = value.substring(10, 12);
9199
        var s = value.substring(12, 14);
9200
        var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
9201
        return hasil;
9202
    }
9203
});
9204
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateColumn', {
9205
    extend: 'Ext.grid.column.Column',
9206
    alias: ['widget.minovadatecolumn'],
9207
    alternateClassName: 'Ext.grid.MinovaDateColumn',
9208
    undefinedText: '&#160;',
9209
    defaultRenderer: function (value) {
9210
        if (value === "" || value === undefined || value === null) {
9211
            return "";
9212
        }
9213
        var d = value.substring(6, 8);
9214
        var m = value.substring(4, 6);
9215
        var y = value.substring(0, 4);
9216
        var hasil = d + '/' + m + '/' + y;
9217
        return hasil;
9218
    }
9219
});
9220
Ext.define('MinovaUtil.MinovaES.MinovaComboColumn', {
9221
    extend: 'Ext.grid.column.Column',
9222
    alias: ['widget.minovacombocolumn'],
9223
    initComponent: function () {
9224
        this.callParent(arguments);
9225
    },
9226
    defaultRenderer: function (value) {
9227
        if (typeof(this.store) !== 'object') {
9228
            Ext.data.StoreManager.lookup(this.store).load();
9229
            this.store = Ext.data.StoreManager.lookup(this.store);
9230
        }
9231
        var idx = this.store.findExact(this.valueField, value);
9232
        if (this.store.getAt(idx)) {
9233
            var result = this.store.getAt(idx).get(this.displayField);
9234
            value = result ? result : value;
9235
        }
9236
        return value;
9237
    }
9238
});
9239
//atien
9240
Ext.define('MinovaUtil.MinovaES.MinovaAmountColumn', {
9241
    extend: 'Ext.grid.column.Column',
9242
    alias: ['widget.minovaamountcolumn'],
9243
    initComponent: function () {
9244
        this.callParent(arguments);
9245
    },
9246
    defaultRenderer: function (value) {
9247
        if (value != "") {
9248
            Ext.Ajax.request({
9249
                async: false,
9250
                method: 'POST',
9251
                url: '/Devt/DecryptData',
9252
                params: {
9253
                    dt: value
9254

    
9255
                },
9256
                success: function (response) {
9257
                    var results = Ext.decode(response.responseText);
9258
                    value = results.data;
9259
                    Ext.util.Format.thousandSeparator = "."
9260

    
9261
                    value = Ext.util.Format.number(value, '0,000');
9262
                }
9263
            });
9264
        }
9265

    
9266
        return value;
9267
    }
9268
});
9269
//end amount column
9270
//hamid200916
9271
Ext.define('MinovaUtil.MinovaES.MinovaMDApplicant', {
9272
    extend: 'Ext.form.Panel',
9273
    alias: ['widget.minovamdApp', 'widget.MinovaMDApplicant'],
9274
    controller: 'recruitment-controller',
9275
    tableName: undefined, //nama tabel
9276
    param: undefined, //param query
9277
    pagesize: undefined,
9278
    storename: undefined,
9279
    titleform: undefined,
9280
    titlegrid: undefined,
9281
    heightgrid: undefined,
9282
    heightform: undefined,
9283
    iseditform: undefined,
9284
    lastheightform: undefined,
9285
    layoutType: undefined,
9286
    lastpage: undefined,
9287
    lastTitle: undefined,
9288
    getLastTitle: function () {
9289
        return this.lastTitle;
9290
    },
9291
    setLastTitle: function (value) {
9292
        var me = this;
9293
        me.lastTitle = value;
9294
        return me;
9295
    },
9296
    getLastpage: function () {
9297
        return this.lastpage;
9298
    },
9299
    setLastpage: function (value) {
9300
        var me = this;
9301
        me.lastpage = value;
9302
        return me;
9303
    },
9304
    getLayoutType: function () {
9305
        return this.layoutType;
9306
    },
9307
    setLayoutType: function (value) {
9308
        var me = this;
9309
        me.layoutType = value;
9310
        return me;
9311
    },
9312
    getLastheightform: function () {
9313
        return this.lastheightform;
9314
    },
9315
    setLastheightform: function (value) {
9316
        var me = this;
9317
        me.lastheightform = value;
9318
        return me;
9319
    },
9320

    
9321
    getIsEditform: function () {
9322
        return this.iseditform;
9323
    },
9324
    setIsEditform: function (value) {
9325
        var me = this;
9326
        me.iseditform = value;
9327
        return me;
9328
    },
9329
    initComponent: function () {
9330
        var me = this;
9331
        var storename = me.storename;
9332
        if (storename == "" || storename == undefined) {
9333
            storename = "store" + me.tableName;
9334
        }
9335
        var isHired = false;
9336
        nowDate = MinovaUtil.GetNowDate();
9337
        Ext.Ajax.request({
9338
            async: false,
9339
            method: 'POST',
9340
            url: '/UserControl/GetStore',
9341
            params: {
9342
                tableName: 'PHRRC0002',
9343
                param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
9344

    
9345
            },
9346
            success: function (response) {
9347
                var results = Ext.decode(response.responseText);
9348
                dataForm = results.data;
9349
                //cek is hired or blacklist
9350
                dataForm_ = $.grep(dataForm, function (r) {
9351
                    return r.ApplicantStatus == '05'
9352
                });
9353
                if (dataForm_.length == 0) {
9354
                    dataForm_ = $.grep(dataForm, function (r) {
9355
                        return r.ApplicantStatus == '99'
9356
                    });
9357
                }
9358
                if (dataForm_ != null && dataForm_.length > 0) {
9359
                    isHired = true;
9360
                }
9361
            }
9362
        });
9363

    
9364
        var tableName = me.tableName;
9365
        Ext.applyIf(me, {
9366
            items: [{
9367
                layoutType: "MinovaGridForm",
9368
                title: me.titlegrid,
9369
                xtype: "minovagrid1",
9370
                tableName: tableName, // nama tebel/dataset
9371
                name: "MinovaGridFormGrid",
9372
                param: me.param, // parameter filteran
9373
                pagesize: me.pagesize, // jumlah record yang muncul per page
9374
                storename: storename, //nama store bebas
9375
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9376
                height: 330,
9377
                bodyPadding: 0,
9378
                tbar: [{
9379

    
9380
                    xtype: 'button',
9381
                    text: 'Action',
9382
                    name: 'actionGrid',
9383
                    hidden: isHired,
9384
                    menu: [{
9385
                        text: 'Add',
9386
                        name: 'addGrid',
9387
                        action: 'CRUDaddNewRecord',
9388
                        style: 'font-family: FontAwesome',
9389
                        itemId: 'AddData',
9390
                        iconCls: 'fa-plus-circle',
9391
                        hidden: isHired
9392

    
9393
                    }, {
9394
                        text: 'Copy',
9395
                        name: 'CopyGrid',
9396
                        iconCls: 'fa-copy',
9397
                        style: 'font-family: FontAwesome',
9398
                        hidden: isHired
9399
                    }, {
9400
                        text: 'Edit',
9401
                        name: 'EditGrid',
9402
                        iconCls: 'fa-edit',
9403
                        style: 'font-family: FontAwesome',
9404
                        hidden: isHired
9405
                    }, {
9406
                        text: 'Delete',
9407
                        name: 'DeleteGrid',
9408
                        hidden: true,
9409
                        iconCls: 'fa-trash-o',
9410
                        style: 'font-family: FontAwesome',
9411
                    }
9412
                    ],
9413
                    listeners: {
9414
                        afterender: function () {
9415
                            var me = this;
9416
                            nowDate = MinovaUtil.GetNowDate();
9417
                            var isHired = false;
9418
                            Ext.Ajax.request({
9419
                                async: false,
9420
                                method: 'POST',
9421
                                url: '/UserControl/GetStore',
9422
                                params: {
9423
                                    tableName: 'PHRRC0027',
9424
                                    param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID") + ',ActivityType[=]8'
9425

    
9426
                                },
9427
                                success: function (response) {
9428
                                    var results = Ext.decode(response.responseText);
9429
                                    dataForm = results.data;
9430
                                    if (dataForm != null) {
9431
                                        isHired = true;
9432
                                    }
9433
                                }
9434
                            });
9435
                            if (isHired) {
9436
                                me.setHidden(true);
9437
                            } else {
9438
                                me.setHidden(false);
9439
                            }
9440

    
9441
                        },
9442

    
9443
                    },
9444
                }, {
9445
                    xtype: 'tbfill'
9446
                }, {
9447
                    text: 'Clear Filters',
9448
                    tooltip: 'Clear all filters',
9449
                    name: 'clearbtn',
9450
                    handler: function () {
9451
                        var tolbar = this.up()
9452
                        var grid_ = tolbar.up()
9453
                        grid_.filters.clearFilters()
9454
                    }
9455
                }, ],
9456

    
9457
                dockedItems: [{
9458
                    xtype: 'pagingtoolbar',
9459
                    store: storename, // harus sama dengan naa store diatas
9460
                    dock: 'bottom', //posisi paging
9461
                    pageSize: me.pagesize,
9462
                    displayInfo: true
9463
                }
9464
                ],
9465

    
9466
            }, {
9467
                xtype: 'minovaform',
9468
                name: "MinovaGridFormDisplay",
9469
                tableName: tableName, // nama tabel /dataset
9470
                isLookup: '', // 1 or 'Y' for lookup
9471
                isDisplay: true, // true== form is displayfield
9472
            }, {
9473
                xtype: 'minovaform',
9474
                name: "MinovaGridFormEdit",
9475
                tableName: tableName, // nama tabel /dataset
9476
                isLookup: '', // 1 or 'Y' for lookup
9477
                isDisplay: false, // true== form is displayfield
9478
            }
9479
            ]
9480
        });
9481
        me.callParent(arguments);
9482
    }
9483
});
9484
//end
9485

    
9486
Ext.define('MinovaUtil.MinovaES.MinovaMD', {
9487
    extend: 'Ext.form.Panel',
9488
    alias: ['widget.minovamd', 'widget.MinovaMD'],
9489
    controller: 'pa-controller',
9490
    tableName: undefined, //nama tabel
9491
    param: undefined, //param query
9492
    pagesize: undefined,
9493
    storename: undefined,
9494
    titleform: undefined,
9495
    titlegrid: undefined,
9496
    heightgrid: undefined,
9497
    heightform: undefined,
9498
    iseditform: undefined,
9499
    lastheightform: undefined,
9500
    layoutType: undefined,
9501
    lastpage: undefined,
9502
    lastTitle: undefined,
9503
    getLastTitle: function () {
9504
        return this.lastTitle;
9505
    },
9506
    setLastTitle: function (value) {
9507
        var me = this;
9508
        me.lastTitle = value;
9509
        return me;
9510
    },
9511
    getLastpage: function () {
9512
        return this.lastpage;
9513
    },
9514
    setLastpage: function (value) {
9515
        var me = this;
9516
        me.lastpage = value;
9517
        return me;
9518
    },
9519
    getLayoutType: function () {
9520
        return this.layoutType;
9521
    },
9522
    setLayoutType: function (value) {
9523
        var me = this;
9524
        me.layoutType = value;
9525
        return me;
9526
    },
9527
    getLastheightform: function () {
9528
        return this.lastheightform;
9529
    },
9530
    setLastheightform: function (value) {
9531
        var me = this;
9532
        me.lastheightform = value;
9533
        return me;
9534
    },
9535

    
9536
    getIsEditform: function () {
9537
        return this.iseditform;
9538
    },
9539
    setIsEditform: function (value) {
9540
        var me = this;
9541
        me.iseditform = value;
9542
        return me;
9543
    },
9544
    initComponent: function () {
9545
        var me = this;
9546
        var storename = me.storename;
9547
        if (storename == "" || storename == undefined) {
9548
            storename = "store" + me.tableName;
9549
        }
9550
        var tableName = me.tableName;
9551
        Ext.applyIf(me, {
9552
            items: [{
9553
                layoutType: "MinovaGridForm",
9554
                title: me.titlegrid,
9555
                xtype: "minovagrid1",
9556
                tableName: tableName, // nama tebel/dataset
9557
                name: "MinovaGridFormGrid",
9558
                param: me.param, // parameter filteran
9559
                pagesize: me.pagesize, // jumlah record yang muncul per page
9560
                storename: storename, //nama store bebas
9561
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9562
                height: 330,
9563
                bodyPadding: 0,
9564
                tbar: [{
9565
                    xtype: 'button',
9566
                    text: 'Action',
9567
                    name: 'actionGrid',
9568
                    menu: [{
9569
                        text: 'Add',
9570
                        name: 'addGrid',
9571
                        action: 'CRUDaddNewRecord',
9572
                        style: 'font-family: FontAwesome',
9573
                        itemId: 'AddData',
9574
                        iconCls: 'fa-plus-circle',
9575

    
9576
                    }, {
9577
                        text: 'Copy',
9578
                        name: 'CopyGrid',
9579
                        iconCls: 'fa-copy',
9580
                        style: 'font-family: FontAwesome',
9581
                    }, {
9582
                        text: 'Edit',
9583
                        name: 'EditGrid',
9584
                        iconCls: 'fa-edit',
9585
                        style: 'font-family: FontAwesome',
9586
                    }, {
9587
                        text: 'Delete',
9588
                        name: 'DeleteGrid',
9589
                        hidden: true,
9590
                        iconCls: 'fa-trash-o',
9591
                        style: 'font-family: FontAwesome',
9592
                    }
9593
                    ]
9594
                }, {
9595
                    xtype: 'tbfill'
9596
                }, {
9597
                    text: 'Clear Filters',
9598
                    tooltip: 'Clear all filters',
9599
                    name: 'clearbtn',
9600
                    handler: function () {
9601
                        var tolbar = this.up()
9602
                        var grid_ = tolbar.up()
9603
                        grid_.filters.clearFilters()
9604
                    }
9605
                }, ],
9606

    
9607
                dockedItems: [{
9608
                    xtype: 'pagingtoolbar',
9609
                    store: storename, // harus sama dengan naa store diatas
9610
                    dock: 'bottom', //posisi paging
9611
                    pageSize: me.pagesize,
9612
                    displayInfo: true
9613
                }
9614
                ],
9615

    
9616
            }, {
9617
                xtype: 'minovaform',
9618
                name: "MinovaGridFormDisplay",
9619
                tableName: tableName, // nama tabel /dataset
9620
                isLookup: '', // 1 or 'Y' for lookup
9621
                isDisplay: true, // true== form is displayfield
9622
            }, {
9623
                xtype: 'minovaform',
9624
                name: "MinovaGridFormEdit",
9625
                tableName: tableName, // nama tabel /dataset
9626
                isLookup: '', // 1 or 'Y' for lookup
9627
                isDisplay: false, // true== form is displayfield
9628
            }
9629
            ]
9630
        });
9631
        me.callParent(arguments);
9632
    }
9633
});
9634

    
9635
Ext.define('MinovaUtil.MinovaES.MinovaCustomization', {
9636
    extend: 'Ext.form.Panel',
9637
    alias: ['widget.minovacustomization', 'widget.MinovaCustomization'],
9638
    controller: 'treeCustomization',
9639
    tableName: undefined, //nama tabel
9640
    param: undefined, //param query
9641
    pagesize: undefined,
9642
    storename: undefined,
9643
    titleform: undefined,
9644
    titlegrid: undefined,
9645
    heightgrid: undefined,
9646
    heightform: undefined,
9647
    iseditform: undefined,
9648
    lastheightform: undefined,
9649
    layoutType: undefined,
9650
    lastpage: undefined,
9651
    lastTitle: undefined,
9652
    collapsibleForm: undefined,
9653
    getLastTitle: function () {
9654
        return this.lastTitle;
9655
    },
9656
    setLastTitle: function (value) {
9657
        var me = this;
9658
        me.lastTitle = value;
9659
        return me;
9660
    },
9661
    getLastpage: function () {
9662
        return this.lastpage;
9663
    },
9664
    setLastpage: function (value) {
9665
        var me = this;
9666
        me.lastpage = value;
9667
        return me;
9668
    },
9669
    getLayoutType: function () {
9670
        return this.layoutType;
9671
    },
9672
    setLayoutType: function (value) {
9673
        var me = this;
9674
        me.layoutType = value;
9675
        return me;
9676
    },
9677
    getLastheightform: function () {
9678
        return this.lastheightform;
9679
    },
9680
    setLastheightform: function (value) {
9681
        var me = this;
9682
        me.lastheightform = value;
9683
        return me;
9684
    },
9685

    
9686
    getIsEditform: function () {
9687
        return this.iseditform;
9688
    },
9689
    setIsEditform: function (value) {
9690
        var me = this;
9691
        me.iseditform = value;
9692
        return me;
9693
    },
9694
    initComponent: function () {
9695
        var me = this;
9696
        var storename = me.storename;
9697
        if (storename == "" || storename == undefined) {
9698
            storename = "store" + me.tableName;
9699
        }
9700
        var tableName = me.tableName;
9701
        var collapsibleForm_ = me.collapsibleForm;
9702
        // if (!collapsibleForm_) {
9703
        //  collapsibleForm_ = false;
9704
        //}
9705
        Ext.applyIf(me, {
9706
            items: [{
9707
                layoutType: "MinovaGridForm",
9708
                title: me.titlegrid,
9709
                xtype: "minovagrid1",
9710
                tableName: tableName, // nama tebel/dataset
9711
                name: "MinovaGridFormGrid",
9712
                param: me.param, // parameter filteran
9713
                pagesize: me.pagesize, // jumlah record yang muncul per page
9714
                storename: storename, //nama store bebas
9715
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9716
                height: 480,
9717
                bodyPadding: 0,
9718
                tbar: [{
9719
                    xtype: 'button',
9720
                    text: 'Action',
9721
                    name: 'actionGrid',
9722
                    menu: [{
9723
                        text: 'Add',
9724
                        name: 'addGrid',
9725
                        action: 'CRUDaddNewRecord',
9726
                        style: 'font-family: FontAwesome',
9727
                        itemId: 'AddData',
9728
                        iconCls: 'fa-plus-circle',
9729

    
9730
                    }, {
9731
                        text: 'Copy',
9732
                        name: 'CopyGrid',
9733
                        iconCls: 'fa-copy',
9734
                        style: 'font-family: FontAwesome',
9735
                    }, {
9736
                        text: 'Edit',
9737
                        name: 'EditGrid',
9738
                        iconCls: 'fa-edit',
9739
                        style: 'font-family: FontAwesome',
9740
                    }, {
9741
                        text: 'Delete',
9742
                        name: 'DeleteGrid',
9743
                        hidden: true,
9744
                        iconCls: 'fa-trash-o',
9745
                        style: 'font-family: FontAwesome',
9746
                    }
9747
                    ]
9748
                }, {
9749
                    xtype: 'tbfill'
9750
                }, {
9751
                    text: 'Search',
9752
                    tooltip: 'Search',
9753
                    tableName: tableName,
9754
                    name: 'btnSearchCust',
9755
                    handler: function () {
9756
                        //var tolbar = this.up()
9757
                        //var grid_ = tolbar.up()
9758
                        //alert(this.tableName)
9759

    
9760
                    }
9761

    
9762
                }, {
9763
                    text: 'Import/Export',
9764
                    tooltip: 'Import/Export',
9765
                    name: 'Import/Exportbtn',
9766

    
9767
                }, {
9768
                    text: 'Clear Filters',
9769
                    tooltip: 'Clear all filters',
9770
                    name: 'clearbtn',
9771
                    handler: function () {
9772
                        var tolbar = this.up()
9773
                        var grid_ = tolbar.up()
9774
                        grid_.filters.clearFilters()
9775
                    }
9776
                }
9777
                ],
9778

    
9779
                dockedItems: [{
9780
                    xtype: 'pagingtoolbar',
9781
                    store: storename, // harus sama dengan naa store diatas
9782
                    dock: 'bottom', //posisi paging
9783
                    pageSize: me.pagesize,
9784
                    displayInfo: true
9785
                }
9786
                ],
9787

    
9788
            }, {
9789
                xtype: 'minovaform',
9790
                //layout: 'anchor',
9791
                height: '200',
9792
                collapsible: collapsibleForm_,
9793
                name: "MinovaGridFormDisplay",
9794
                tableName: tableName, // nama tabel /dataset
9795
                isLookup: '', // 1 or 'Y' for lookup
9796
                isDisplay: true, // true== form is displayfield
9797
            }, {
9798
                xtype: 'minovaform',
9799
                //layout:'anchor',
9800
                collapsible: collapsibleForm_,
9801
                name: "MinovaGridFormEdit",
9802
                tableName: tableName, // nama tabel /dataset
9803
                isLookup: '', // 1 or 'Y' for lookup
9804
                isDisplay: false, // true== form is displayfield
9805
            }
9806
            ]
9807
        });
9808
        me.callParent(arguments);
9809
    }
9810
});
9811

    
9812
Ext.define('MinovaUtil.view.override.Panel', {
9813
    override: 'Ext.panel.Panel',
9814

    
9815
    print: function (pnl) {
9816

    
9817
        if (!pnl) {
9818
            pnl = this;
9819
        }
9820

    
9821
        // instantiate hidden iframe
9822

    
9823
        var iFrameId = "printerFrame";
9824
        var printFrame = Ext.get(iFrameId);
9825

    
9826
        if (printFrame == null) {
9827
            printFrame = Ext.getBody().appendChild({
9828
                id: iFrameId,
9829
                tag: 'iframe',
9830
                cls: 'x-hidden',
9831
                style: {
9832
                    display: "none"
9833
                }
9834
            });
9835
        }
9836

    
9837
        var cw = printFrame.dom.contentWindow;
9838

    
9839
        // instantiate application stylesheets in the hidden iframe
9840

    
9841
        var stylesheets = "";
9842
        for (var i = 0; i < document.styleSheets.length; i++) {
9843
            stylesheets += Ext.String.format('<link rel="stylesheet" href="{0}" />', document.styleSheets[i].href);
9844
        }
9845

    
9846
        // various style overrides
9847
        stylesheets += ''.concat(
9848
			"<style>",
9849
			".x-panel-body {overflow: visible !important;}",
9850
			// experimental - page break after embedded panels
9851
			// .x-panel {page-break-after: always; margin-top: 10px}",
9852
			"</style>");
9853

    
9854
        // get the contents of the panel and remove hardcoded overflow properties
9855
        var markup = pnl.getEl().dom.innerHTML;
9856
        while (markup.indexOf('overflow: auto;') >= 0) {
9857
            markup = markup.replace('overflow: auto;', '');
9858
        }
9859

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

    
9862
        // output to the iframe
9863
        cw.document.open();
9864
        cw.document.write(str);
9865
        cw.document.close();
9866

    
9867
        // remove style attrib that has hardcoded height property
9868
        cw.document.getElementsByTagName('DIV')[0].removeAttribute('style');
9869

    
9870
        // print the iframe
9871
        cw.print();
9872

    
9873
        // destroy the iframe
9874
        Ext.fly(iFrameId).destroy();
9875

    
9876
    }
9877
});
9878

    
9879
Ext.define('MinovaUtil.MinovaES.MinovaRptForm', {
9880
    extend: 'Ext.form.Panel',
9881
    alias: ['widget.MinovaRptForm', 'widget.minovarptform'],
9882
    ReportID: undefined,
9883
    SelectionType: undefined,
9884
    layout: 'column',
9885
    //frame : true,
9886
    defaults: {
9887
        layout: 'form',
9888
        xtype: 'container',
9889
        defaultType: 'textfield',
9890
        style: 'width: 50%',
9891
        //height: 1000
9892
    },
9893
    initComponent: function () {
9894
        var col1 = [];
9895
        var col2 = [];
9896
        var me = this;
9897
        var hasil = null;
9898
        var hideButton_ = me.hideButton;
9899
        Ext.Ajax.request({
9900
            async: false,
9901
            method: 'POST',
9902
            url: '/UserControl/GetStore',
9903
            params: {
9904
                tableName: 'PDSBS0006',
9905
                //param : "ReportID='" + me.ReportID + "' and SelectionType='" + me.SelectionType + "' and LangId='" + localStorage.LangId + "'"
9906
                param: "ReportID='" + me.ReportID + "',SelectionType='" + me.SelectionType + "',LangId='" + localStorage.LangId + "'"
9907
            },
9908
            success: function (response) {
9909
                var results = Ext.decode(response.responseText);
9910
                hasil = results.data;
9911
                //count = hasil.length
9912
            }
9913
        });
9914
        if (hasil.length > 0) {
9915
            hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
9916
            var me = this;
9917
            Ext.each(hasil, function (rec) {
9918
                var null_ = true;
9919
                if (rec.IsRequired == '1') {
9920
                    null_ = false;
9921
                } else {
9922
                    null_ = true;
9923
                }
9924
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, false, me.tableName, me.isLookup);
9925
                if (isDesk) {
9926
                    if (rec.ColumnNo == 1) {
9927
                        col1.push(formfield);
9928
                    } else {
9929
                        col2.push(formfield);
9930
                    }
9931
                } else {
9932
                    col1.push(formfield);
9933
                }
9934
            });
9935

    
9936
        }
9937
        Ext.applyIf(me, {
9938
            items: [{
9939
                style: 'width: 50%',
9940
                items: col1
9941
            }, {
9942
                style: 'width: 50%',
9943
                items: col2
9944
            }
9945
            ],
9946
        });
9947
        this.callParent();
9948
    }
9949
});
9950

    
9951
Ext.define('MinovaUtil.MinovaES.MinovaRptSimple', {
9952
    extend: 'Ext.form.Panel',
9953
    alias: ['widget.MinovaRptSimple', 'widget.minovarptsimple'],
9954
    //layout: 'column',
9955
    controller: 'basereports-controller',
9956
    ReportID: undefined,
9957
    hideButton: undefined,
9958
    reportLayout: 'simple',
9959
    getReportLayout: function () {
9960
        return this.reportLayout;
9961
    },
9962
    setReportLayout: function (value) {
9963
        var me = this;
9964
        me.reportLayout = value;
9965
        return me;
9966
    },
9967

    
9968
    initComponent: function () {
9969
        var me = this;
9970
        var ReportID = me.ReportID;
9971
        var hideButton_ = me.hideButton;
9972
        var hide_ = false;
9973
        if (hideButton_) {
9974
            hide_ = true;
9975
        }
9976
        Ext.applyIf(me, {
9977
            items: [{
9978
                //title: 'Report Selection',
9979
                xtype: 'minovarptform',
9980
                hideButton: hide_,
9981
                name: 'minovarptsimple',
9982
                ReportID: ReportID,
9983
                SelectionType: '1',
9984
                bodyPadding: 10,
9985
                buttons: [{
9986
                    text: 'Search',
9987
                    name: 'SearchRpt',
9988
                    hidden: hide_
9989
                }, {
9990
                    text: 'Variant',
9991
                    style: 'font-family: FontAwesome',
9992
                    hidden: hide_,
9993
                    menu: [{
9994
                        text: 'Load Variant',
9995
                        name: 'loadvariant',
9996

    
9997
                    }, {
9998
                        text: 'Save Variant',
9999
                        name: 'savevariant',
10000

    
10001
                    }
10002
                    ],
10003

    
10004
                }
10005
                ],
10006

    
10007
            },
10008
				//{
10009
				//    title: 'Result',
10010
				//    height: 530,
10011
				//    collapsible: false,
10012
				//    name: 'resultPanel',
10013
				//    layout: 'fit',
10014
				//    html: '<div  id="formMdDiv"></div>',
10015
				//}
10016
            ],
10017
        });
10018
        this.callParent();
10019
    }
10020
});
10021

    
10022
Ext.define('MinovaUtil.MinovaES.MinovaRptAdvance', {
10023
    extend: 'Ext.form.Panel',
10024
    alias: ['widget.MinovaRptAdvance', 'widget.minovarptadvance'],
10025
    //layout: 'column',
10026
    controller: 'basereports-controller',
10027
    ReportID: undefined,
10028
    reportLayout: 'advance',
10029
    hideButton: undefined,
10030
    getReportLayout: function () {
10031
        return this.reportLayout;
10032
    },
10033
    setReportLayout: function (value) {
10034
        var me = this;
10035
        me.reportLayout = value;
10036
        return me;
10037
    },
10038

    
10039
    initComponent: function () {
10040
        var me = this;
10041
        var ReportID = me.ReportID;
10042
        var hideButton_ = me.hideButton;
10043
        var hide_ = false;
10044
        if (hideButton_) {
10045
            hide_ = true;
10046
        }
10047
        Ext.applyIf(me, {
10048
            items: [{
10049
                //title: 'Report Selection',
10050
                xtype: 'minovarptform',
10051
                hideButton: hide_,
10052
                name: 'minovarptadvance',
10053
                ReportID: ReportID,
10054
                SelectionType: '2',
10055
                bodyPadding: 10,
10056
                buttons: [{
10057
                    text: 'Search',
10058
                    name: 'SearchRpt',
10059
                    hidden: hide_
10060
                }, {
10061
                    text: 'Variant',
10062
                    hidden: hide_,
10063
                    style: 'font-family: FontAwesome',
10064
                    menu: [{
10065
                        text: 'Load Variant',
10066
                        name: 'loadvariant',
10067

    
10068
                    }, {
10069
                        text: 'Save Variant',
10070
                        name: 'savevariant',
10071

    
10072
                    }
10073
                    ],
10074

    
10075
                }
10076
                ],
10077

    
10078
            },
10079
				//{
10080
				//    title: 'Result',
10081
				//    height: 530,
10082
				//    collapsible: false,
10083
				//    name: 'resultPanel',
10084
				//    layout: 'fit',
10085
				//    html: '<div  id="formMdDiv"></div>',
10086
				//}
10087
            ],
10088
        });
10089
        this.callParent();
10090
    }
10091
});
10092

    
10093
Ext.define('MinovaUtil.MinovaES.MinovaRptAll', {
10094
    extend: 'Ext.form.Panel',
10095
    alias: ['widget.MinovaRptAll', 'widget.minovarptall'],
10096
    //layout: 'column',
10097
    controller: 'basereports-controller',
10098
    ReportID: undefined,
10099
    titleSimle: undefined,
10100
    titleAdvance: undefined,
10101
    reportLayout: 'all',
10102
    hideButton: undefined,
10103
    getReportLayout: function () {
10104
        return this.reportLayout;
10105
    },
10106
    setReportLayout: function (value) {
10107
        var me = this;
10108
        me.reportLayout = value;
10109
        return me;
10110
    },
10111

    
10112
    initComponent: function () {
10113
        var me = this;
10114
        var ReportID = me.ReportID;
10115
        var hideButton_ = me.hideButton;
10116
        var hide_ = false;
10117
        if (hideButton_) {
10118
            hide_ = true;
10119
        }
10120
        Ext.applyIf(me, {
10121
            items: [{
10122
                xtype: 'tabpanel',
10123
                name: 'mainTab',
10124
                buttons: [{
10125
                    text: 'Search',
10126
                    name: 'SearchRpt',
10127
                    hidden: hide_,
10128
                }, {
10129
                    text: 'Variant',
10130
                    hidden: hide_,
10131
                    style: 'font-family: FontAwesome',
10132
                    menu: [{
10133
                        text: 'Load Variant',
10134
                        name: 'loadvariant',
10135

    
10136
                    }, {
10137
                        text: 'Save Variant',
10138
                        name: 'savevariant',
10139

    
10140
                    }
10141
                    ],
10142

    
10143
                }
10144
                ],
10145

    
10146
                items: [{
10147
                    title: 'Simple',
10148
                    xtype: 'minovarptform',
10149
                    hideButton: hide_,
10150
                    name: 'simpleForm',
10151
                    ReportID: ReportID,
10152
                    SelectionType: '1',
10153
                    bodyPadding: 10,
10154

    
10155
                }, {
10156
                    title: 'Advance',
10157
                    xtype: 'minovarptform',
10158
                    hideButton: hide_,
10159
                    name: 'advanceForm',
10160
                    ReportID: ReportID,
10161
                    SelectionType: '2',
10162
                    bodyPadding: 10,
10163

    
10164
                }
10165
                ]
10166
            },
10167
				//{
10168
				//    title: 'Result',
10169
				//    height: 530,
10170
				//    collapsible: false,
10171
				//    name: 'resultPanel',
10172
				//    layout: 'fit',
10173
				//    html: '<div  id="formMdDiv"></div>',
10174
				//}
10175

    
10176
            ],
10177
        });
10178
        this.callParent();
10179
    }
10180
});
10181

    
10182
Ext.define('MinovaUtil.MinovaES.MinovaGridRpt', {
10183
    extend: 'Ext.grid.Panel',
10184
    requires: ['Ext.grid.RowNumberer'],
10185
    alias: 'widget.minovagridrpt',
10186
    alternateClassName: 'Ext.grid.MinovaGridRpt',
10187
    features: [{ftype:'grouping'}],
10188
    tableName: undefined,
10189
    param: undefined,
10190
    //pagesize: undefined,
10191
    storename: undefined,
10192
    //layoutType: undefined,
10193
    enableLocking: true,
10194
    tbar: [{
10195
        xtype: 'tbfill'
10196
    }, {
10197
        text: 'Clear Filters',
10198
        tooltip: 'Clear all filters',
10199
        name: 'clearbtn',
10200
        handler: function () {
10201
            var tolbar = this.up()
10202
            var grid_ = tolbar.up()
10203
            grid_.filters.clearFilters()
10204
        }
10205
    }, ],
10206
    getTableName: function () {
10207
        return this.tableName;
10208
    },
10209

    
10210
    initComponent: function () {
10211
        var me = this;
10212
        var cols_ = [];
10213
        var fieldeditor = {};
10214
        var hasil = null;
10215
        var autoLoad = true;
10216
        var _url = 'GetAllField';
10217

    
10218
        Ext.Ajax.request({
10219
            async: false,
10220
            method: 'POST',
10221
            url: '/Devt/' + _url + '?tableName=' + me.tableName,
10222
            success: function (response) {
10223
                var results = Ext.decode(response.responseText);
10224
                hasil = results.data;
10225
            }
10226
        });
10227
        var structure = undefined;
10228
        Ext.Ajax.request({
10229
            async: false,
10230
            method: 'POST',
10231
            url: '/UserControl/GetStore',
10232
            params: {
10233
                tableName: 'SDATATABLEFIELD',
10234
                param: 'TableName[equal]' + me.tableName
10235

    
10236
            },
10237
            success: function (response) {
10238
                var results = Ext.decode(response.responseText);
10239
                data_ = results.data;
10240
                if (data_ != undefined) {
10241
                    structure = data_;
10242
                }
10243
            }
10244
        });
10245
        if (hasil.length > 0) {
10246
            Ext.each(hasil, function (rec) {
10247
                // get field will be summary
10248

    
10249
                var summaryType = undefined;
10250
                if (structure != undefined) {
10251
                    _field = $.grep(structure, function (r) {
10252
                        return r.FieldName == rec.FieldName
10253
                    });
10254
                    summaryType = _field[0].SummaryType
10255
                }
10256

    
10257
                var null_ = null;
10258
                if (rec.IsPrimaryKey == true) {
10259
                    null_ = false;
10260
                }
10261
                if (rec.IsRequired == true) {
10262
                    null_ = false;
10263
                } else {
10264
                    null_ = true;
10265
                }
10266
                if (rec.GridView == 1) {
10267
                    switch (rec.FormatRef) {
10268
                        case "date":
10269
                            cols_.push({
10270
                                xtype: 'minovadatecolumn',
10271
                                text: rec.HeaderTitle,
10272
                                dataIndex: rec.FieldName,
10273
                                summaryType: summaryType,
10274
                                width: 100,
10275
                                filter: {
10276
                                    type: 'date',
10277
                                    itemDefaults: {
10278
                                        emptyText: 'Search for...'
10279
                                    }
10280
                                }
10281
                            });
10282
                            break
10283
                        case "amount":
10284
                            cols_.push({
10285
                                xtype: 'minovacurrancycolumn',
10286
                                align: 'right',
10287
                                text: rec.HeaderTitle,
10288
                                dataIndex: rec.FieldName,
10289
                                summaryType: summaryType,
10290
                                width: 100,
10291
                                filter: {
10292
                                    type: 'number',
10293
                                    itemDefaults: {
10294
                                        emptyText: 'Search for...'
10295
                                    }
10296
                                }
10297
                            });
10298
                            break
10299
                        case "datetime":
10300
                            cols_.push({
10301
                                xtype: 'minovadatetimecolumn',
10302
                                text: rec.HeaderTitle,
10303
                                dataIndex: rec.FieldName,
10304
                                summaryType: summaryType,
10305
                                width: 140,
10306
                                filter: {
10307
                                    type: 'string',
10308
                                    itemDefaults: {
10309
                                        emptyText: 'Search for...'
10310
                                    }
10311
                                }
10312
                            });
10313
                            break
10314
                        default:
10315
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
10316
                                cols_.push({
10317
                                    text: rec.HeaderTitle,
10318
                                    dataIndex: rec.FieldName,
10319
                                    summaryType: summaryType,
10320
                                    width: 100,
10321
                                    filter: {
10322
                                        type: 'string',
10323
                                        itemDefaults: {
10324
                                            emptyText: 'Search for...'
10325
                                        }
10326
                                    }
10327
                                });
10328
                            } else if (rec.TableRef != "") {
10329
                                if (rec.TableRef != null) {
10330
                                    var valueField = null;
10331
                                    var displayValue = null;
10332
                                    Ext.Ajax.request({
10333
                                        async: false,
10334
                                        method: 'POST',
10335
                                        url: '/UserControl/GetStore',
10336
                                        params: {
10337
                                            tableName: 'SDATATABLEFIELD',
10338
                                            param: 'TableName[equal]' + rec.TableRef
10339
                                        },
10340
                                        success: function (response) {
10341
                                            var results = Ext.decode(response.responseText);
10342
                                            data_ = results.data;
10343
                                            if (data_ != undefined) {
10344
                                                valueField_ = $.grep(data_, function (r) {
10345
                                                    return r.ValueField == '1'
10346
                                                });
10347
                                                valueField = valueField_[0].FieldName
10348
                                                displayValue_ = $.grep(data_, function (r) {
10349
                                                    return r.DisplayValue == '1'
10350
                                                });
10351
                                                displayValue = displayValue_[0].FieldName
10352

    
10353
                                            }
10354
                                        }
10355
                                    });
10356
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
10357
                                    var count_ = 0;
10358
                                    if (store_) {
10359
                                        count_ = store_.count();
10360
                                    }
10361
                                    if (count_ == 0) {
10362
                                        Ext.create('Ext.data.Store', {
10363
                                            storeId: 'store_' + rec.FieldName,
10364
                                            autoLoad: true,
10365
                                            proxy: {
10366
                                                method: 'POST',
10367
                                                type: 'ajax',
10368
                                                url: '/UserControl/GetStore',
10369
                                                extraParams: {
10370
                                                    tableName: rec.TableRef,
10371
                                                    param: rec.ParamCombo
10372
                                                },
10373
                                                reader: {
10374
                                                    type: 'json',
10375
                                                    root: 'data',
10376
                                                    totalProperty: 'data[0].TotalCount'
10377
                                                }
10378
                                            }
10379
                                        })
10380
                                    }
10381
                                    cols_.push({
10382
                                        xtype: 'minovacombocolumn',
10383
                                        TableRef: rec.TableRef,
10384
                                        text: rec.HeaderTitle,
10385
                                        summaryType: summaryType,
10386
                                        dataIndex: rec.FieldName,
10387
                                        valueField: valueField,
10388
                                        displayField: displayValue,
10389
                                        store: 'store_' + rec.FieldName,
10390
										renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
10391
											if(value != undefined || value!=null){
10392
												return '<a href="' + value + '" target = "_blank">' + value + '</a>';
10393
											}
10394
										},											
10395
                                        filter: {
10396
                                            type: 'list',
10397
                                            itemDefaults: {
10398
                                                emptyText: 'Search for...'
10399
                                            }
10400
                                        }
10401
                                    });
10402
                                }
10403

    
10404
                            } else {
10405
                                cols_.push({
10406
                                    text: rec.HeaderTitle,
10407
                                    dataIndex: rec.FieldName,
10408
                                    summaryType: summaryType,
10409
									renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
10410
										if(value != undefined || value!=null){
10411
											return '<a href="' + value + '" target = "_blank">' + value + '</a>';
10412
										}
10413
									},									
10414
                                    filter: {
10415
                                        itemDefaults: {
10416
                                            emptyText: 'Search for...'
10417
                                        }
10418
                                    }
10419
                                });
10420
                            }
10421
                            break
10422
                    }
10423
                } else {
10424
                    cols_.push({
10425
                        text: rec.HeaderTitle,
10426
                        dataIndex: rec.FieldName,
10427
                        hidden: true,
10428
                        filter: {
10429
                            itemDefaults: {
10430
                                emptyText: 'Search for...'
10431
                            }
10432
                        }
10433
                    });
10434
                }
10435
            });
10436
        };
10437
        var param_ = me.param;
10438
        if (param_ == undefined) {
10439
            param_ = ''
10440
        }
10441
        var jsStoreGrid = new Ext.data.Store({
10442
            storeId: me.storename,
10443
            autoLoad: false,
10444
            //pageSize: me.pagesize,
10445
            proxy: {
10446
                method: 'POST',
10447
                type: 'ajax',
10448
                url: '/UserControl/GetStore',
10449
                //extraParams: {
10450
                //    tableName: me.tableName,
10451
                //    param: param_
10452
                //},
10453
                reader: {
10454
                    type: 'json',
10455
                    root: 'data',
10456
                    totalProperty: 'totalRecords'
10457
                }
10458
            }
10459
        });
10460
        Ext.applyIf(me, {
10461
            autoScroll: true,
10462
            enableLocking: true,
10463
            lockedGridConfig: {
10464
                header: false,
10465
                collapsible: true,
10466
                width: 250,
10467
                forceFit: true,
10468
                listeners: {
10469
                    render: function (grid) {
10470
                        var pagingToolbar = grid.child('pagingtoolbar');
10471
                        if (pagingToolbar) {
10472
                            grid.remove(pagingToolbar, true);
10473
                        }
10474
                    }
10475
                }
10476
            },
10477
            listeners: {
10478
                viewready: function () {
10479
                    if (autoLoad == true) {
10480
                        this.getStore().loadPage(1);
10481
                    }
10482

    
10483
                },
10484
                beforeedit: function () {
10485
                    return false;
10486
                }
10487
            },
10488
            lockedViewConfig: {
10489
                scroll: 'horizontal'
10490
            },
10491
            viewConfig: {
10492
                emptyText: 'No Data Display',
10493
                deferEmptyText: false
10494
            },
10495
            //features: [{
10496
            //    ftype: 'summary'
10497
            //}],
10498
            columns: cols_,
10499

    
10500
            store: jsStoreGrid,
10501

    
10502
            plugins: [{
10503
                ptype: 'gridfilters'
10504
            },
10505

    
10506
            ],
10507

    
10508
        });
10509
        me.callParent(arguments);
10510
    }
10511

    
10512
});
10513

    
10514
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGrid', {
10515
    extend: 'Ext.form.Panel',
10516
    alias: ['widget.MinovaEditAbleGrid', 'widget.Minovaeditablegrid', 'widget.minovaeditablegrid'],
10517
    requires: [
10518
		'Ext.grid.plugin.CellEditing',
10519
		'Ext.grid.RowNumberer',
10520
		'Ext.grid.Panel',
10521
    ],
10522

    
10523
    //renderTo: 'panel-extjs',
10524
    anchor: '100%',
10525
    tableName: undefined,
10526
    hideButton: undefined,
10527
    multiSelect: undefined,
10528
    initComponent: function () {
10529
        var me = this;
10530
        var isLookup = me.isLookup;
10531
        var hide_ = false;
10532
        var widthLock = 250;
10533
        var checkSelection = '';
10534

    
10535
        if (me.hideButton == true) {
10536
            hide_ = true;
10537
        }
10538
        if (me.multiSelect) {
10539
            locking = false;
10540
            checkSelection = 'checkboxmodel';
10541
            widthLock = 40;
10542
        }
10543
        var tableName = me.tableName;
10544
        var cols = [];
10545
        var fieldStore = [];
10546
        var _url = 'GetAllField';
10547
        var hasil = null;
10548
        var height = me.height;
10549
        var storeID = 'store' + me.tableName;
10550
        var gridName = 'grid' + me.name;
10551
        if (me.storeName) {
10552
            storeID = me.storeName;
10553
        }
10554
        var LangID = MinovaUtil.GetLangID();
10555
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
10556
        Ext.Ajax.request({
10557
            async: false,
10558
            method: 'POST',
10559
            url: '/UserControl/GetStore',
10560
            params: {
10561
                tableName: 'PDSBS0007',
10562
                param: parameter
10563
            },
10564
            success: function (response) {
10565
                var results = Ext.decode(response.responseText);
10566
                hasil = results.data;
10567
            }
10568
        });
10569
        cols.push({
10570
            xtype: 'rownumberer'
10571
        });
10572
        var addData = 'var data={';
10573
        if (hasil.length > 0) {
10574
            Ext.each(hasil, function (rec) {
10575
                fieldStore.push(rec.FieldName);
10576
                if (rec.FieldName != 'Sequence') {
10577
                    addData = addData + rec.FieldName + ":" + "'',";
10578
                }
10579

    
10580
                var null_ = null;
10581
                var ReadOnly_ = false;
10582
                if (rec.IsPrimaryKey == true) {
10583
                    null_ = false;
10584
                }
10585
                if (rec.IsRequired == true) {
10586
                    null_ = false;
10587
                } else {
10588
                    null_ = true;
10589
                }
10590
                if (rec.ReadOnly == '1') {
10591
                    ReadOnly_ = true;
10592
                }
10593
                var Hidden_ = false;
10594
                if (rec.ReadOnly == '1') {
10595
                    ReadOnly_ = true;
10596
                }
10597

    
10598
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
10599
                    Hidden_ = true;
10600
                    null_ = true;
10601
                }
10602

    
10603
                if (rec.GridView == 1) {
10604
                    switch (rec.FormatRef) {
10605
                        case "date":
10606
                            cols.push({
10607
                                xtype: 'minovadatecolumn',
10608
                                hidden: Hidden_,
10609
                                text: rec.HeaderTitle,
10610
                                dataIndex: rec.FieldName,
10611
                                filter: {
10612
                                    itemDefaults: {
10613
                                        emptyText: 'Search for...',
10614

    
10615
                                    }
10616
                                },
10617
                                editor: {
10618
                                    allowBlank: null_,
10619
                                    xtype: 'datefield',
10620
                                    hideMode: 'visibility',
10621
                                    readOnly: ReadOnly_,
10622
                                    id: tableName + rec.FieldName,
10623
                                    fieldGrid: rec.FieldName,
10624
                                    nameTable: rec.TableName,
10625
                                }
10626
                            });
10627
                            break
10628
                        case "amount":
10629
                            cols.push({
10630
                                xtype: 'minovacurrancycolumn',
10631
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
10632
                                text: rec.HeaderTitle,
10633
                                align: 'right',
10634
                                dataIndex: rec.FieldName,
10635
                                hidden: Hidden_,
10636
                                filter: {
10637
                                    itemDefaults: {
10638
                                        emptyText: 'Search for...'
10639
                                    }
10640
                                },
10641
                                editor: {
10642
                                    allowBlank: null_,
10643
                                    xtype: 'minovacurrencyfield',
10644
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
10645
                                    //vtype: 'validateDecimal',
10646
                                    readOnly: ReadOnly_,
10647
                                    id: tableName + rec.FieldName,
10648
                                    nameTable: rec.TableName,
10649
                                    fieldGrid: rec.FieldName,
10650
                                    fieldStyle: 'text-align:right;',
10651
                                    value: '0',
10652
									listeners: { //// add by Tri nwh 20220711
10653
										change: function (val, recs) {
10654
											var fvalue = val.getValue();
10655
											var custumFunc = rec.SelectFunction;
10656
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10657
												Ext.Ajax.request({
10658
													async: false,
10659
													method: 'POST',
10660
													url: '/UserControl/GetStore',
10661
													params: {
10662
														tableName: 'PCMFUNC',
10663
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
10664
													},
10665
													success: function (response) {
10666
														var results = Ext.decode(response.responseText);
10667
														var dt = results.data[0];
10668
														if (dt != undefined) {
10669
															custumFunc = dt.FunctionCode;
10670
														}
10671
													}
10672
												});
10673
											}
10674
											if (custumFunc) {
10675
												eval(custumFunc)
10676
											}
10677
										}
10678
									}
10679
                                }
10680
                            });
10681
                            break
10682
                        case "time":
10683
                            var DefaultValue = rec.DefaultValue;
10684
                            if (DefaultValue == '') {
10685
                                defaultValue = '00:00';
10686
                            }
10687
                            cols.push({
10688
                                //xtype: 'minovatimecolumn',
10689
                                xtype: 'timefield',
10690
                                format: 'H:i',
10691
                                submitFormat: 'Hi',
10692
                                text: rec.HeaderTitle,
10693
                                dataIndex: rec.FieldName,
10694
                                hidden: Hidden_,
10695
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
10696
                                filter: {
10697
                                    itemDefaults: {
10698
                                        emptyText: 'Search for...'
10699
                                    }
10700
                                },
10701
                                editor: {
10702
                                    allowBlank: null_,
10703
                                    xtype: 'timefield',
10704
                                    readOnly: ReadOnly_,
10705
                                    id: tableName + rec.FieldName,
10706
                                    format: 'H:i',
10707
                                    submitFormat: 'Hi',
10708
                                    increment: 5,
10709
                                    value: DefaultValue,
10710
                                    anchor: '100%',
10711
                                    listeners: {}
10712
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
10713
                                }
10714
                            });
10715
                            break
10716
                            //case "datetime":
10717
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
10718
                            //        cols.push({
10719
                            //            xtype: 'minovadatetimecolumn',
10720
                            //            text: rec.HeaderTitle,
10721
                            //            dataIndex: rec.FieldName,
10722
                            //            filter: {
10723
                            //                itemDefaults: {
10724
                            //                    emptyText: 'Search for...'
10725
                            //                }
10726
                            //            },
10727
                            //            editor: {
10728
                            //                allowBlank: null_,
10729
                            //                xtype: 'textfield',
10730
                            //            }
10731
                            //        });
10732
                            //    }
10733
                            //    break
10734
                        default:
10735
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
10736
                                cols.push({
10737
                                    text: rec.HeaderTitle,
10738
                                    dataIndex: rec.FieldName,
10739
                                    width: 100,
10740
                                    filter: {
10741
                                        type: 'string',
10742
                                        itemDefaults: {
10743
                                            emptyText: 'Search for...'
10744
                                        }
10745
                                    }
10746
                                });
10747
                            } else if (rec.SearchType == '0') {
10748
                                var valueField = null;
10749
                                var displayValue = null;
10750
                                var TableRef = undefined;
10751
                                if (rec.TableRef != '') {
10752
                                    TableRef = rec.TableRef;
10753

    
10754
                                    Ext.Ajax.request({
10755
                                        async: false,
10756
                                        method: 'POST',
10757
                                        url: '/UserControl/GetStore',
10758
                                        params: {
10759
                                            tableName: 'SDATATABLEFIELD',
10760
                                            param: 'TableName[equal]' + rec.TableRef
10761
                                        },
10762
                                        success: function (response) {
10763
                                            var results = Ext.decode(response.responseText);
10764
                                            data_ = results.data;
10765
                                            if (data_ != undefined) {
10766
                                                valueField_ = $.grep(data_, function (r) {
10767
                                                    return r.ValueField == '1'
10768
                                                });
10769
                                                valueField = valueField_[0].FieldName
10770
                                                displayValue_ = $.grep(data_, function (r) {
10771
                                                    return r.DisplayValue == '1'
10772
                                                });
10773
                                                displayValue = displayValue_[0].FieldName
10774
                                            }
10775
                                        }
10776
                                    });
10777

    
10778
                                    //create Store
10779
                                    Ext.create('Ext.data.Store', {
10780
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10781
                                        autoLoad: true,
10782
                                        proxy: {
10783
                                            method: 'POST',
10784
                                            type: 'ajax',
10785
                                            url: '/UserControl/GetStoreAuth',
10786
                                            extraParams: {
10787
                                                tableName: TableRef,
10788
                                                param: rec.ParamCombo,
10789
                                                menuId: MinovaUtil.GetMenuID()
10790
                                            },
10791
                                            reader: {
10792
                                                type: 'json',
10793
                                                root: 'data',
10794
                                                totalProperty: 'data[0].TotalCount'
10795
                                            }
10796
                                        }
10797
                                    });
10798
                                } else if (rec.FixedValue != '') {
10799
                                    var storeData = [];
10800
                                    var str = rec.FixedValue;
10801
                                    var hasil = str.split('||');
10802
                                    hasil.forEach(function (h) {
10803
                                        store_ = h.split('=')
10804
                                        storeData.push({
10805
                                            code: store_[0],
10806
                                            desc: store_[1],
10807

    
10808
                                        });
10809
                                    });
10810

    
10811
                                    valueField = 'code';
10812
                                    displayValue = 'desc';
10813

    
10814
                                    Ext.create('Ext.data.Store', {
10815
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10816
                                        autoLoad: true,
10817
                                        data: storeData
10818
                                    })
10819
                                }
10820

    
10821
                                cols.push({
10822
                                    xtype: 'minovacombocolumn',
10823
                                    hidden: Hidden_,
10824
                                    text: rec.HeaderTitle,
10825
                                    dataIndex: rec.FieldName,
10826
                                    valueField: valueField,
10827
                                    displayField: displayValue,
10828
                                    store: 'store_' + me.tableName + rec.FieldName,
10829
                                    editor: {
10830
                                        allowBlank: null_,
10831
                                        xtype: 'combobox',
10832
                                        readOnly: ReadOnly_,
10833
                                        id: tableName + rec.FieldName,
10834
                                        nameTable: rec.TableName,
10835
                                        fieldGrid: rec.FieldName,
10836
                                        valueField: valueField,
10837
                                        displayField: displayValue,
10838
                                        vtype: 'validateCombobox',
10839
                                        store: 'store_' + me.tableName + rec.FieldName,
10840
                                    },
10841
                                    filter: {
10842
                                        type: 'list',
10843
                                        itemDefaults: {
10844
                                            emptyText: 'Search for...'
10845
                                        }
10846
                                    }
10847
                                });
10848

    
10849
                            } else if (rec.SearchType == '5') {							
10850
                                var valueField = null;
10851
                                var displayValue = null;
10852
                                var AdditionaldisplayValue = null;
10853
                                var TableRef = undefined;
10854
                                if (rec.TableRef != '') {
10855
                                    TableRef = rec.TableRef;
10856
                                    Ext.Ajax.request({
10857
                                        async: false,
10858
                                        method: 'POST',
10859
                                        url: '/UserControl/GetStore',
10860
                                        params: {
10861
                                            tableName: 'SDATATABLEFIELD',
10862
                                            param: 'TableName[equal]' + rec.TableRef
10863
                                        },
10864
                                        success: function (response) {
10865
                                            var results = Ext.decode(response.responseText);
10866
                                            data_ = results.data;
10867
                                            if (data_ != undefined) {
10868
                                                valueField_ = $.grep(data_, function (r) {
10869
                                                    return r.ValueField == '1'
10870
                                                });
10871
                                                if (valueField_.length > 0) {
10872
                                                    valueField = valueField_[0].FieldName
10873
                                                }
10874

    
10875
                                                displayValue_ = $.grep(data_, function (r) {
10876
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
10877
                                                });
10878
                                                if (displayValue_.length > 0) {
10879
                                                    displayValue = displayValue_[0].FieldName;
10880
                                                }
10881
                                                if (displayValue_.length >= 2) {
10882
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
10883
                                                }
10884
                                            }
10885
                                        }
10886
                                    });
10887
                                }
10888
                                Ext.create('Ext.data.Store', {
10889
                                    storeId: 'store_' + me.tableName + rec.FieldName,
10890
                                    autoLoad: true,
10891
                                    proxy: {
10892
                                        method: 'POST',
10893
                                        type: 'ajax',
10894
                                        url: '/UserControl/GetStoreAuth',
10895
                                        extraParams: {
10896
                                            tableName: TableRef,
10897
                                            param: rec.ParamCombo,
10898
                                            menuId: MinovaUtil.GetMenuID()
10899
                                        },
10900
                                        reader: {
10901
                                            type: 'json',
10902
                                            root: 'data',
10903
                                            totalProperty: 'data[0].TotalCount'
10904
                                        }
10905
                                    }
10906
                                });
10907
                                cols.push({
10908
                                    xtype : 'minovacombocolumn',
10909
                                    hidden: Hidden_,
10910
                                    text: rec.HeaderTitle,
10911
                                    dataIndex: rec.FieldName,
10912
                                    valueField : valueField,
10913
                                    displayField : displayValue,
10914
                                    store : 'store_' + me.tableName + rec.FieldName,
10915
                                    tpl: Ext.create('Ext.XTemplate',
10916
                                            '<ul class="x-list-plain"><tpl for=".">',
10917
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10918
                                            '</tpl></ul>'),
10919
                                    displayTpl: Ext.create('Ext.XTemplate',
10920
                                        '<tpl for=".">',
10921
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10922
                                        '</tpl>'),
10923
                                    editor: {
10924
                                        allowBlank: null_,
10925
                                        xtype: 'combobox',
10926
                                        readOnly: ReadOnly_,
10927
                                        id: rec.TableName + rec.FieldName,
10928
                                        nameTable: rec.TableName,
10929
                                        fieldGrid: rec.FieldName,
10930
                                        valueField: valueField,
10931
                                        displayField: displayValue,
10932
                                        store: 'store_' + me.tableName + rec.FieldName,
10933
                                        value: rec.DefaultValue,
10934
                                        tpl: Ext.create('Ext.XTemplate',
10935
                                            '<ul class="x-list-plain"><tpl for=".">',
10936
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10937
                                            '</tpl></ul>'),
10938
                                        displayTpl: Ext.create('Ext.XTemplate',
10939
                                            '<tpl for=".">',
10940
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10941
                                            '</tpl>')
10942
                                    },
10943
                                    renderer: function (value) {
10944
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
10945
                                        var index = store.find(valueField, value);
10946
                                        var val = "";
10947
                                        if (index != -1) {
10948
                                            var rc = store.getAt(index);
10949
                                            //val = rc.get(displayValue);
10950
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
10951
                                        } else {
10952
                                            val = value;
10953
                                        }
10954
                                        return val;
10955
                                    },
10956
                                    filter: {
10957
                                        type: 'list',
10958
                                        itemDefaults: {
10959
                                            emptyText: 'Search for...'
10960
                                        }
10961
                                    }
10962
                                });
10963
                            } else if (rec.SearchType == '2') {
10964
                                var triger = (rec.TriggerCombo).split('$');
10965
                                var targetField_ = triger[0];
10966
                                var fieldValue_ = triger[1];
10967
                                cols.push({
10968
                                    text: rec.HeaderTitle,
10969
                                    hidden: Hidden_,
10970
                                    dataIndex: rec.FieldName,
10971
                                    filter: {
10972
                                        itemDefaults: {
10973
                                            emptyText: 'Search for...'
10974
                                        }
10975
                                    },
10976
                                    editor: {
10977
                                        allowBlank: null_,
10978
                                        xtype: 'minovalookupgrid',
10979
                                        readOnly: ReadOnly_,
10980
                                        isGrid: true,
10981
                                        fieldTarget: targetField_,
10982
                                        fieldValue: fieldValue_,
10983
                                        isGrid: true,
10984
                                        id: tableName + rec.FieldName,
10985
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10986
                                        triggerCls: 'x-form-search-trigger',
10987
                                        vtype: 'alphanum', // disable space
10988
                                        nameTable: rec.TableName,
10989
                                        fieldGrid: rec.FieldName,
10990
                                        LookupFunction: rec.LookupFunction,
10991
                                        listeners: {
10992
                                            change: function (val) {
10993
                                                var custumFunc = rec.SelectFunction;
10994
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10995
                                                    Ext.Ajax.request({
10996
                                                        async: false,
10997
                                                        method: 'POST',
10998
                                                        url: '/UserControl/GetStore',
10999
                                                        params: {
11000
                                                            tableName: 'PCMFUNC',
11001
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11002
                                                        },
11003
                                                        success: function (response) {
11004
                                                            var results = Ext.decode(response.responseText);
11005
                                                            data_ = results.data[0];
11006
                                                            if (data_ != undefined) {
11007
                                                                custumFunc = data_.FunctionCode;
11008
                                                            }
11009
                                                        }
11010
                                                    });
11011
                                                }
11012
                                                if (custumFunc) {
11013
                                                    eval(custumFunc)
11014
                                                }
11015
                                            }
11016
                                        }
11017
                                    }
11018
                                });
11019
                            } else if (rec.SearchType == '3') {
11020
                                cols.push({
11021
                                    text: rec.HeaderTitle,
11022
                                    hidden: Hidden_,
11023
                                    dataIndex: rec.FieldName,
11024
                                    filter: {
11025
                                        itemDefaults: {
11026
                                            emptyText: 'Search for...'
11027
                                        }
11028
                                    },
11029
                                    editor: {
11030
                                        allowBlank: null_,
11031
										formname: gridName, //YN 220718
11032
                                        // xtype: 'minovalookuptreePopup',
11033
                                        xtype: 'MinovaLookupTree',
11034
                                        readOnly: ReadOnly_,
11035
                                        id: tableName + rec.FieldName,
11036
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11037
                                        triggerCls: 'x-form-search-trigger',
11038
                                        //vtype: 'alphanum', // disable space
11039
                                        treeSructure: rec.SearchFunction, //'O-O-P',
11040
                                        objClassValue: rec.ParamCombo, //'O',
11041
                                        nameTable: rec.TableName,
11042
                                        fieldGrid: rec.FieldName,
11043
                                        listeners: {
11044
                                            change: function (val) {
11045
                                                var custumFunc = rec.SelectFunction;
11046
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11047
                                                    Ext.Ajax.request({
11048
                                                        async: false,
11049
                                                        method: 'POST',
11050
                                                        url: '/UserControl/GetStore',
11051
                                                        params: {
11052
                                                            tableName: 'PCMFUNC',
11053
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11054
                                                        },
11055
                                                        success: function (response) {
11056
                                                            var results = Ext.decode(response.responseText);
11057
                                                            data_ = results.data[0];
11058
                                                            if (data_ != undefined) {
11059
                                                                custumFunc = data_.FunctionCode;
11060
                                                            }
11061
                                                        }
11062
                                                    });
11063
                                                }
11064
                                                if (custumFunc) {
11065
                                                    eval(custumFunc)
11066
                                                }
11067
                                            }
11068
                                        }
11069
                                    }
11070
                                });
11071
                            } 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) {
11072
                                var triger = (rec.TriggerCombo).split('&');
11073
                                var targetField_ = triger[0];
11074
                                var fieldValue_ = triger[0];
11075
                                cols.push({
11076
                                    text: rec.HeaderTitle,
11077
                                    hidden: Hidden_,
11078
                                    dataIndex: rec.FieldName,
11079
                                    filter: {
11080
                                        itemDefaults: {
11081
                                            emptyText: 'Search for...'
11082
                                        }
11083
                                    },
11084
                                    editor: {
11085
                                        allowBlank: null_,
11086
                                        xtype: 'lookupemployee',
11087
                                        readOnly: ReadOnly_,
11088
                                        isGrid: true,
11089
                                        fieldTarget: targetField_,
11090
                                        fieldValue: fieldValue_,
11091
                                        isGrid: true,
11092
                                        id: tableName + rec.FieldName,
11093
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11094
                                        triggerCls: 'x-form-search-trigger',
11095
                                        vtype: 'alphanum', // disable space
11096
                                        nameTable: rec.TableName,
11097
                                        fieldGrid: rec.FieldName,
11098
                                        listeners: {
11099
                                            change: function (val) {
11100
                                                var custumFunc = rec.SelectFunction;
11101
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11102
                                                    Ext.Ajax.request({
11103
                                                        async: false,
11104
                                                        method: 'POST',
11105
                                                        url: '/UserControl/GetStore',
11106
                                                        params: {
11107
                                                            tableName: 'PCMFUNC',
11108
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11109
                                                        },
11110
                                                        success: function (response) {
11111
                                                            var results = Ext.decode(response.responseText);
11112
                                                            data_ = results.data[0];
11113
                                                            if (data_ != undefined) {
11114
                                                                custumFunc = data_.FunctionCode;
11115
                                                            }
11116
                                                        }
11117
                                                    });
11118
                                                }
11119
                                                if (custumFunc) {
11120
                                                    eval(custumFunc)
11121
                                                }
11122
                                            }
11123
                                        }
11124
                                    }
11125
                                });
11126
                            } else if (rec.SearchType == '4' && isLookup != true) {
11127
                                cols.push({
11128

    
11129
                                    text: rec.HeaderTitle,
11130
                                    hidden: Hidden_,
11131
                                    dataIndex: rec.FieldName,
11132
                                    filter: {
11133
                                        itemDefaults: {
11134
                                            emptyText: 'Search for...'
11135
                                        }
11136
                                    },
11137
                                    editor: {
11138
                                        allowBlank: null_,
11139
                                        xtype: 'lookupemployee',
11140
                                        readOnly: ReadOnly_,
11141
                                        isGrid: true,
11142
                                        fieldTarget: targetField_,
11143
                                        fieldValue: fieldValue_,
11144
                                        isGrid: true,
11145
                                        id: tableName + rec.FieldName,
11146
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11147
                                        triggerCls: 'x-form-search-trigger',
11148
                                        vtype: 'alphanum', // disable space
11149
                                        nameTable: rec.TableName,
11150
                                        fieldGrid: rec.FieldName,
11151
                                        listeners: {
11152
                                            change: function (val) {
11153
                                                var custumFunc = rec.SelectFunction;
11154
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11155
                                                    Ext.Ajax.request({
11156
                                                        async: false,
11157
                                                        method: 'POST',
11158
                                                        url: '/UserControl/GetStore',
11159
                                                        params: {
11160
                                                            tableName: 'PCMFUNC',
11161
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11162
                                                        },
11163
                                                        success: function (response) {
11164
                                                            var results = Ext.decode(response.responseText);
11165
                                                            data_ = results.data[0];
11166
                                                            if (data_ != undefined) {
11167
                                                                custumFunc = data_.FunctionCode;
11168
                                                            }
11169
                                                        }
11170
                                                    });
11171
                                                }
11172
                                                if (custumFunc) {
11173
                                                    eval(custumFunc)
11174
                                                }
11175
                                            }
11176
                                        }
11177
                                    }
11178
                                });
11179
                            } else {
11180
                                if (rec.FieldDataType == 3) { //add by taufan
11181
                                    cols.push({
11182
                                        text: rec.HeaderTitle,
11183
                                        hidden: Hidden_,
11184
                                        dataIndex: rec.FieldName,
11185
                                        filter: {
11186
                                            itemDefaults: {
11187
                                                emptyText: 'Search for...'
11188
                                            }
11189
                                        },
11190
                                        editor: {
11191
                                            allowBlank: null_,
11192
                                            xtype: 'textfield',
11193
                                            readOnly: ReadOnly_,
11194
                                            id: tableName + rec.FieldName,
11195
                                            nameTable: rec.TableName,
11196
                                            fieldGrid: rec.FieldName,
11197
                                            vtype: 'validateDecimal',
11198
                                            maxLength: rec.Length,
11199
                                            precision: rec.Prec,
11200
                                            fieldStyle: 'text-align:right;',
11201
                                            listeners: {
11202
                                                change: function (val) {
11203
                                                    var custumFunc = null;
11204
                                                    Ext.Ajax.request({
11205
                                                        async: false,
11206
                                                        method: 'POST',
11207
                                                        url: '/UserControl/GetStore',
11208
                                                        params: {
11209
                                                            tableName: 'SDATATABLEFIELD',
11210
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11211
                                                        },
11212
                                                        success: function (response) {
11213
                                                            var results = Ext.decode(response.responseText);
11214
                                                            data_ = results.data[0];
11215
                                                            if (data_ != undefined) {
11216
                                                                custumFunc = data_.SelectFunction;
11217
                                                                //console.log(data_)
11218
                                                            }
11219
                                                        }
11220
                                                    });
11221

    
11222
                                                    if (custumFunc) {
11223
                                                        eval(custumFunc)
11224
                                                    }
11225
                                                }
11226
                                            }
11227
                                        }
11228
                                    });
11229
                                } else {
11230
                                    cols.push({
11231
                                        text: rec.HeaderTitle,
11232
                                        hidden: Hidden_,
11233
                                        dataIndex: rec.FieldName,
11234
                                        filter: {
11235
                                            itemDefaults: {
11236
                                                emptyText: 'Search for...'
11237
                                            }
11238
                                        },
11239
                                        editor: {
11240
                                            allowBlank: null_,
11241
                                            xtype: 'textfield',
11242
                                            readOnly: ReadOnly_,
11243
                                            id: tableName + rec.FieldName,
11244
                                            nameTable: rec.TableName,
11245
                                            fieldGrid: rec.FieldName,
11246
                                            listeners: {
11247
                                                change: function (val) {
11248
                                                    var custumFunc = null;
11249
                                                    Ext.Ajax.request({
11250
                                                        async: false,
11251
                                                        method: 'POST',
11252
                                                        url: '/UserControl/GetStore',
11253
                                                        params: {
11254
                                                            tableName: 'SDATATABLEFIELD',
11255
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11256
                                                        },
11257
                                                        success: function (response) {
11258
                                                            var results = Ext.decode(response.responseText);
11259
                                                            data_ = results.data[0];
11260
                                                            if (data_ != undefined) {
11261
                                                                custumFunc = data_.SelectFunction;
11262
                                                                //console.log(data_)
11263
                                                            }
11264
                                                        }
11265
                                                    });
11266

    
11267
                                                    if (custumFunc) {
11268
                                                        eval(custumFunc)
11269
                                                    }
11270
                                                }
11271
                                            }
11272
                                        }
11273
                                    });
11274
                                }
11275
                            }
11276

    
11277
                            break
11278

    
11279
                    }
11280
                } else {
11281
                    cols.push({
11282
                        text: rec.HeaderTitle,
11283
                        hidden: Hidden_,
11284
                        dataIndex: rec.FieldName,
11285
                        hidden: true,
11286
                        editor: {
11287
                            allowBlank: true,
11288
                            xtype: 'textfield',
11289
                            readOnly: ReadOnly_,
11290
                            id: tableName + rec.FieldName,
11291
                            nameTable: rec.TableName,
11292
                            fieldGrid: rec.FieldName,
11293
                        },
11294
                        filter: {
11295
                            itemDefaults: {
11296
                                emptyText: 'Search for...'
11297
                            }
11298
                        }
11299
                    });
11300
                }
11301
            });
11302

    
11303
        };
11304
        addData = addData + "}";
11305
        Ext.applyIf(me, {
11306
            items: [{
11307
                xtype: 'grid',
11308
                id: gridName,
11309
                name: gridName,
11310
                height: height,
11311
                viewConfig: {
11312
                    emptyText: 'No Data Display',
11313
                    deferEmptyText: false,
11314
                    //Add Nana For Autosize Column Mode
11315
                    listeners: {
11316
                        refresh: function (dataview) {
11317
                            Ext.each(dataview.panel.columns, function (column) {
11318
                                //if (column.autoSizeColumn == false)
11319
                                //	column.autoSizeColumn = true;
11320
                                column.autoSize();
11321
                                //dataview.store.reload();
11322
                            })
11323
                        }
11324
                    },
11325
                    render: function (comp) {
11326
                        comp.getStore().reload();
11327
                        console.log(comp);
11328
                    }
11329
                },
11330
                //store: 'gridStore',
11331
                store: Ext.create('Ext.data.Store', {
11332
                    storeId: storeID,
11333
                    fields: fieldStore,
11334
                    proxy: {
11335
                        method: 'POST',
11336
                        type: 'ajax',
11337
                        url: '',
11338
                        reader: {
11339
                            type: 'json',
11340
                            root: 'data'
11341
                        }
11342
                    }
11343
                }),
11344
                dockedItems: [{
11345
                    xtype: 'toolbar',
11346
                    items: [{
11347
                        text: 'Add',
11348
                        hidden: hide_,
11349
                        name: tableName + 'Add',
11350
                        iconCls: 'fa-plus-circle',
11351
                        style: 'font-family: FontAwesome',
11352
                        handler: function () {
11353
                            var store = Ext.StoreMgr.lookup(storeID)
11354
                            idx = store.getCount();
11355
                            var action = getParam('action');
11356
                            var data = '';
11357
                            var Sequence = 0;
11358
                            if (idx == 0) {
11359
                                Sequence = 1;
11360
                            } else {
11361
                                Sequence = 1 + idx;
11362
                            }
11363
                            //data = {
11364
                            //    Sequence: Sequence
11365
                            //};
11366

    
11367
                            var seq = 'Sequence';
11368
                            var SequenceValue = Sequence;
11369
                            eval(addData);
11370
                            data[seq] = SequenceValue;
11371

    
11372
                            store.insert(idx, data);
11373
                        }
11374

    
11375
                    }, {
11376
                        text: 'Delete',
11377
                        hidden: hide_,
11378
                        name: tableName + 'DeleteText',
11379
                        iconCls: 'fa-trash-o',
11380
                        style: 'font-family: FontAwesome',
11381
                        //disabled: true
11382
                        handler: function () {
11383
                            var me = this,
11384
                            store = Ext.StoreMgr.lookup(storeID)
11385

    
11386
                            var grid = Ext.getCmp(gridName);
11387

    
11388
                            Ext.MessageBox.show({
11389
                                title: 'Remove tab',
11390
                                msg: "This will remove. Do you want to continue?",
11391
                                buttons: Ext.MessageBox.YESNO,
11392
                                fn: function (choice) {
11393
                                    console.log(choice);
11394
                                    if (choice === 'yes') {
11395
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11396
                                        if (selection) {
11397
                                            store.remove(selection);
11398
                                        }
11399
                                    }
11400
                                    //delete panel.pendingClose;
11401
                                }
11402
                            });
11403
                        }
11404

    
11405
                    }
11406
                    ]
11407
                }
11408
                ],
11409
                columns: cols,
11410
                selType: checkSelection,
11411
                //selType: 'rowmodel',
11412
                plugins: {
11413
                    ptype: 'rowediting',
11414
                    pluginId: 'rowEditing',
11415
                    clicksToEdit: 0,
11416
                    listeners: {
11417
                        //edit: 'onGridEditorEdit'
11418
                    }
11419
                }
11420
            }, ]
11421

    
11422
        });
11423

    
11424
        me.callParent(arguments);
11425
    }
11426
});
11427

    
11428
Ext.define('MinovaUtil.MinovaES.MinovaCellEditGrid', {
11429
    extend: 'Ext.form.Panel',
11430
    alias: ['widget.MinovaCellEditGrid', 'widget.minovacelleditgrid'],
11431
    requires: [
11432
		'Ext.grid.plugin.CellEditing',
11433
		'Ext.grid.Panel',
11434
    ],
11435

    
11436
    //renderTo: 'panel-extjs',
11437
    anchor: '100%',
11438
    tableName: undefined,
11439
    hideButton: undefined,
11440
    multiSelect: undefined,
11441
    initComponent: function () {
11442
        var me = this;
11443
        var isLookup = me.isLookup;
11444
        var hide_ = false;
11445
        var widthLock = 250;
11446
        var checkSelection = '';
11447

    
11448
        if (me.hideButton == true) {
11449
            hide_ = true;
11450
        }
11451
        if (me.multiSelect) {
11452
            locking = false;
11453
            checkSelection = 'checkboxmodel';
11454
            widthLock = 40;
11455
        }
11456
        var tableName = me.tableName;
11457
        var cols = [];
11458
        var fieldStore = [];
11459
        var _url = 'GetAllField';
11460
        var hasil = null;
11461
        var height = me.height;
11462
        var storeID = 'store' + me.tableName;
11463
        var gridName = 'grid' + me.name;
11464
        if (me.storeName) {
11465
            storeID = me.storeName;
11466
        }
11467
        var LangID = MinovaUtil.GetLangID();
11468
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
11469
        Ext.Ajax.request({
11470
            async: false,
11471
            method: 'POST',
11472
            url: '/UserControl/GetStore',
11473
            params: {
11474
                tableName: 'PDSBS0007',
11475
                param: parameter
11476
            },
11477
            success: function (response) {
11478
                var results = Ext.decode(response.responseText);
11479
                hasil = results.data;
11480
            }
11481
        });
11482
        if (hasil.length > 0) {
11483
            Ext.each(hasil, function (rec) {
11484
                fieldStore.push(rec.FieldName)
11485

    
11486
                var null_ = null;
11487
                var ReadOnly_ = false;
11488
                if (rec.IsPrimaryKey == true) {
11489
                    null_ = false;
11490
                }
11491
                if (rec.IsRequired == true) {
11492
                    null_ = false;
11493
                } else {
11494
                    null_ = true;
11495
                }
11496
                if (rec.ReadOnly == '1') {
11497
                    ReadOnly_ = true;
11498
                }
11499
                var Hidden_ = false;
11500
                if (rec.ReadOnly == '1') {
11501
                    ReadOnly_ = true;
11502
                }
11503

    
11504
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
11505
                    Hidden_ = true;
11506
                    null_ = true;
11507
                }
11508

    
11509
                if (rec.GridView == 1) {
11510
                    switch (rec.FormatRef) {
11511
                        case "date":
11512
                            cols.push({
11513
                                xtype: 'minovadatecolumn',
11514
                                hidden: Hidden_,
11515
                                text: rec.HeaderTitle,
11516
                                dataIndex: rec.FieldName,
11517
                                filter: {
11518
                                    itemDefaults: {
11519
                                        emptyText: 'Search for...',
11520

    
11521
                                    }
11522
                                },
11523
                                editor: {
11524
                                    allowBlank: null_,
11525
                                    xtype: 'datefield',
11526
                                    hideMode: 'visibility',
11527
                                    readOnly: ReadOnly_,
11528
                                    id: tableName + rec.FieldName,
11529
                                }
11530
                            });
11531
                            break
11532
                        case "amount":
11533
                            cols.push({
11534
                                xtype: 'minovacurrancycolumn',
11535
                                text: rec.HeaderTitle,
11536
                                align: 'right',
11537
                                dataIndex: rec.FieldName,
11538
                                hidden: Hidden_,
11539
                                filter: {
11540
                                    itemDefaults: {
11541
                                        emptyText: 'Search for...'
11542
                                    }
11543
                                },
11544
                                editor: {
11545
                                    allowBlank: null_,
11546
                                    xtype: 'textfield',
11547
                                    readOnly: ReadOnly_,
11548
                                    id: tableName + rec.FieldName,
11549
                                }
11550
                            });
11551
                            break
11552
                            //case "datetime":
11553
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
11554
                            //        cols.push({
11555
                            //            xtype: 'minovadatetimecolumn',
11556
                            //            text: rec.HeaderTitle,
11557
                            //            dataIndex: rec.FieldName,
11558
                            //            filter: {
11559
                            //                itemDefaults: {
11560
                            //                    emptyText: 'Search for...'
11561
                            //                }
11562
                            //            },
11563
                            //            editor: {
11564
                            //                allowBlank: null_,
11565
                            //                xtype: 'textfield',
11566
                            //            }
11567
                            //        });
11568
                            //    }
11569
                            //    break
11570
                        default:
11571
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
11572
                                cols.push({
11573
                                    text: rec.HeaderTitle,
11574
                                    dataIndex: rec.FieldName,
11575
                                    width: 100,
11576
                                    filter: {
11577
                                        type: 'string',
11578
                                        itemDefaults: {
11579
                                            emptyText: 'Search for...'
11580
                                        }
11581
                                    }
11582
                                });
11583
                            } else if (rec.SearchType == '0') {
11584
                                var valueField = null;
11585
                                var displayValue = null;
11586
                                var TableRef = undefined;
11587
                                if (rec.TableRef != '') {
11588
                                    TableRef = rec.TableRef;
11589

    
11590
                                    Ext.Ajax.request({
11591
                                        async: false,
11592
                                        method: 'POST',
11593
                                        url: '/UserControl/GetStore',
11594
                                        params: {
11595
                                            tableName: 'SDATATABLEFIELD',
11596
                                            param: 'TableName[equal]' + rec.TableRef
11597
                                        },
11598
                                        success: function (response) {
11599
                                            var results = Ext.decode(response.responseText);
11600
                                            data_ = results.data;
11601
                                            if (data_ != undefined) {
11602
                                                valueField_ = $.grep(data_, function (r) {
11603
                                                    return r.ValueField == '1'
11604
                                                });
11605
                                                valueField = valueField_[0].FieldName
11606
                                                displayValue_ = $.grep(data_, function (r) {
11607
                                                    return r.DisplayValue == '1'
11608
                                                });
11609
                                                displayValue = displayValue_[0].FieldName
11610
                                            }
11611
                                        }
11612
                                    });
11613

    
11614
                                    //create Store
11615
                                    Ext.create('Ext.data.Store', {
11616
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11617
                                        autoLoad: true,
11618
                                        proxy: {
11619
                                            method: 'POST',
11620
                                            type: 'ajax',
11621
                                            url: '/UserControl/GetStoreAuth',
11622
                                            extraParams: {
11623
                                                tableName: TableRef,
11624
                                                param: rec.ParamCombo,
11625
                                                menuId: MinovaUtil.GetMenuID()
11626
                                            },
11627
                                            reader: {
11628
                                                type: 'json',
11629
                                                root: 'data',
11630
                                                totalProperty: 'data[0].TotalCount'
11631
                                            }
11632
                                        }
11633
                                    });
11634

    
11635
                                } else if (rec.FixedValue != '') {
11636
                                    var storeData = [];
11637
                                    var str = rec.FixedValue;
11638
                                    var hasil = str.split('||');
11639
                                    hasil.forEach(function (h) {
11640
                                        store_ = h.split('=')
11641
                                        storeData.push({
11642
                                            code: store_[0],
11643
                                            desc: store_[1],
11644

    
11645
                                        });
11646
                                    });
11647

    
11648
                                    valueField = 'code';
11649
                                    displayValue = 'desc';
11650

    
11651
                                    Ext.create('Ext.data.Store', {
11652
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11653
                                        autoLoad: true,
11654
                                        data: storeData
11655
                                    })
11656
                                }
11657

    
11658
                                cols.push({
11659
                                    xtype: 'minovacombocolumn',
11660
                                    hidden: Hidden_,
11661
                                    text: rec.HeaderTitle,
11662
                                    dataIndex: rec.FieldName,
11663
                                    valueField: valueField,
11664
                                    displayField: displayValue,
11665
                                    store: 'store_' + me.tableName + rec.FieldName,
11666
                                    editor: {
11667
                                        allowBlank: null_,
11668
                                        xtype: 'combobox',
11669
                                        readOnly: ReadOnly_,
11670
                                        id: tableName + rec.FieldName,
11671
                                        valueField: valueField,
11672
                                        displayField: displayValue,
11673
                                        store: 'store_' + me.tableName + rec.FieldName,
11674
                                    },
11675
                                    filter: {
11676
                                        type: 'list',
11677
                                        itemDefaults: {
11678
                                            emptyText: 'Search for...'
11679
                                        }
11680
                                    }
11681
                                });
11682

    
11683
                            } else if (rec.SearchType == '5') {							
11684
                                var valueField = null;
11685
                                var displayValue = null;
11686
                                var AdditionaldisplayValue = null;
11687
                                var TableRef = undefined;
11688
                                if (rec.TableRef != '') {
11689
                                    TableRef = rec.TableRef;
11690
                                    Ext.Ajax.request({
11691
                                        async: false,
11692
                                        method: 'POST',
11693
                                        url: '/UserControl/GetStore',
11694
                                        params: {
11695
                                            tableName: 'SDATATABLEFIELD',
11696
                                            param: 'TableName[equal]' + rec.TableRef
11697
                                        },
11698
                                        success: function (response) {
11699
                                            var results = Ext.decode(response.responseText);
11700
                                            data_ = results.data;
11701
                                            if (data_ != undefined) {
11702
                                                valueField_ = $.grep(data_, function (r) {
11703
                                                    return r.ValueField == '1'
11704
                                                });
11705
                                                if (valueField_.length > 0) {
11706
                                                    valueField = valueField_[0].FieldName
11707
                                                }
11708

    
11709
                                                displayValue_ = $.grep(data_, function (r) {
11710
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
11711
                                                });
11712
                                                if (displayValue_.length > 0) {
11713
                                                    displayValue = displayValue_[0].FieldName;
11714
                                                }
11715
                                                if (displayValue_.length >= 2) {
11716
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
11717
                                                }
11718
                                            }
11719
                                        }
11720
                                    });
11721
                                }
11722
                                Ext.create('Ext.data.Store', {
11723
                                    storeId: 'store_' + me.tableName + rec.FieldName,
11724
                                    autoLoad: true,
11725
                                    proxy: {
11726
                                        method: 'POST',
11727
                                        type: 'ajax',
11728
                                        url: '/UserControl/GetStoreAuth',
11729
                                        extraParams: {
11730
                                            tableName: TableRef,
11731
                                            param: rec.ParamCombo,
11732
                                            menuId: MinovaUtil.GetMenuID()
11733
                                        },
11734
                                        reader: {
11735
                                            type: 'json',
11736
                                            root: 'data',
11737
                                            totalProperty: 'data[0].TotalCount'
11738
                                        }
11739
                                    }
11740
                                });
11741
                                cols.push({
11742
                                    xtype : 'minovacombocolumn',
11743
                                    hidden: Hidden_,
11744
                                    text: rec.HeaderTitle,
11745
                                    dataIndex: rec.FieldName,
11746
                                    valueField : valueField,
11747
                                    displayField : displayValue,
11748
                                    store : 'store_' + me.tableName + rec.FieldName,
11749
                                    tpl: Ext.create('Ext.XTemplate',
11750
                                            '<ul class="x-list-plain"><tpl for=".">',
11751
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11752
                                            '</tpl></ul>'),
11753
                                    displayTpl: Ext.create('Ext.XTemplate',
11754
                                        '<tpl for=".">',
11755
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11756
                                        '</tpl>'),
11757
                                    editor: {
11758
                                        allowBlank: null_,
11759
                                        xtype: 'combobox',
11760
                                        readOnly: ReadOnly_,
11761
                                        id: rec.TableName + rec.FieldName,
11762
                                        nameTable: rec.TableName,
11763
                                        fieldGrid: rec.FieldName,
11764
                                        valueField: valueField,
11765
                                        displayField: displayValue,
11766
                                        store: 'store_' + me.tableName + rec.FieldName,
11767
                                        value: rec.DefaultValue,
11768
                                        tpl: Ext.create('Ext.XTemplate',
11769
                                            '<ul class="x-list-plain"><tpl for=".">',
11770
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11771
                                            '</tpl></ul>'),
11772
                                        displayTpl: Ext.create('Ext.XTemplate',
11773
                                            '<tpl for=".">',
11774
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11775
                                            '</tpl>')
11776
                                    },
11777
                                    renderer: function (value) {
11778
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
11779
                                        var index = store.find(valueField, value);
11780
                                        var val = "";
11781
                                        if (index != -1) {
11782
                                            var rc = store.getAt(index);
11783
                                            //val = rc.get(displayValue);
11784
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
11785
                                        } else {
11786
                                            val = value;
11787
                                        }
11788
                                        return val;
11789
                                    },
11790
                                    filter: {
11791
                                        type: 'list',
11792
                                        itemDefaults: {
11793
                                            emptyText: 'Search for...'
11794
                                        }
11795
                                    }
11796
                                });
11797
                            } else if (rec.SearchType == '2') {
11798
                                var triger = (rec.TriggerCombo).split('$');
11799
                                var targetField_ = triger[0];
11800
                                var fieldValue_ = triger[1];
11801
                                cols.push({
11802
                                    text: rec.HeaderTitle,
11803
                                    hidden: Hidden_,
11804
                                    dataIndex: rec.FieldName,
11805
                                    filter: {
11806
                                        itemDefaults: {
11807
                                            emptyText: 'Search for...'
11808
                                        }
11809
                                    },
11810
                                    editor: {
11811
                                        allowBlank: null_,
11812
                                        xtype: 'minovalookupgrid',
11813
                                        readOnly: ReadOnly_,
11814
                                        isGrid: true,
11815
                                        fieldTarget: targetField_,
11816
                                        fieldValue: fieldValue_,
11817
                                        isGrid: true,
11818
                                        id: tableName + rec.FieldName,
11819
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11820
                                        triggerCls: 'x-form-search-trigger',
11821
                                        vtype: 'alphanum', // disable space
11822

    
11823
                                        listeners: {
11824
                                            change: function (val) {
11825
                                                var custumFunc = rec.SelectFunction;
11826
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11827
                                                    Ext.Ajax.request({
11828
                                                        async: false,
11829
                                                        method: 'POST',
11830
                                                        url: '/UserControl/GetStore',
11831
                                                        params: {
11832
                                                            tableName: 'PCMFUNC',
11833
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11834
                                                        },
11835
                                                        success: function (response) {
11836
                                                            var results = Ext.decode(response.responseText);
11837
                                                            data_ = results.data[0];
11838
                                                            if (data_ != undefined) {
11839
                                                                custumFunc = data_.FunctionCode;
11840
                                                            }
11841
                                                        }
11842
                                                    });
11843
                                                }
11844
                                                if (custumFunc) {
11845
                                                    eval(custumFunc)
11846
                                                }
11847
                                            }
11848
                                        }
11849
                                    }
11850
                                });
11851
                            } else if (rec.SearchType == '3') {
11852
                                cols.push({
11853
                                    text: rec.HeaderTitle,
11854
                                    hidden: Hidden_,
11855
                                    dataIndex: rec.FieldName,
11856
                                    filter: {
11857
                                        itemDefaults: {
11858
                                            emptyText: 'Search for...'
11859
                                        }
11860
                                    },
11861
                                    editor: {
11862
                                        allowBlank: null_,
11863
                                        // xtype: 'minovalookuptreePopup',
11864
                                        xtype: 'MinovaLookupTree',
11865
                                        readOnly: ReadOnly_,
11866
                                        id: tableName + rec.FieldName,
11867
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11868
                                        triggerCls: 'x-form-search-trigger',
11869
                                        vtype: 'alphanum', // disable space
11870
                                        treeSructure: rec.SearchFunction, //'O-O-P',
11871
                                        objClassValue: rec.ParamCombo, //'O',
11872
                                        listeners: {
11873
                                            change: function (val) {
11874
                                                var custumFunc = rec.SelectFunction;
11875
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11876
                                                    Ext.Ajax.request({
11877
                                                        async: false,
11878
                                                        method: 'POST',
11879
                                                        url: '/UserControl/GetStore',
11880
                                                        params: {
11881
                                                            tableName: 'PCMFUNC',
11882
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11883
                                                        },
11884
                                                        success: function (response) {
11885
                                                            var results = Ext.decode(response.responseText);
11886
                                                            data_ = results.data[0];
11887
                                                            if (data_ != undefined) {
11888
                                                                custumFunc = data_.FunctionCode;
11889
                                                            }
11890
                                                        }
11891
                                                    });
11892
                                                }
11893
                                                if (custumFunc) {
11894
                                                    eval(custumFunc)
11895
                                                }
11896
                                            }
11897
                                        }
11898
                                    }
11899
                                });
11900
                            } 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) {
11901
                                var triger = (rec.TriggerCombo).split('&');
11902
                                var targetField_ = triger[0];
11903
                                var fieldValue_ = triger[0];
11904
                                cols.push({
11905
                                    text: rec.HeaderTitle,
11906
                                    hidden: Hidden_,
11907
                                    dataIndex: rec.FieldName,
11908
                                    filter: {
11909
                                        itemDefaults: {
11910
                                            emptyText: 'Search for...'
11911
                                        }
11912
                                    },
11913
                                    editor: {
11914
                                        allowBlank: null_,
11915
                                        xtype: 'lookupemployee',
11916
                                        readOnly: ReadOnly_,
11917
                                        isGrid: true,
11918
                                        fieldTarget: targetField_,
11919
                                        fieldValue: fieldValue_,
11920
                                        isGrid: true,
11921
                                        id: tableName + rec.FieldName,
11922
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11923
                                        triggerCls: 'x-form-search-trigger',
11924
                                        vtype: 'alphanum', // disable space
11925
                                        listeners: {
11926
                                            change: function (val) {
11927
                                                var custumFunc = rec.SelectFunction;
11928
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11929
                                                    Ext.Ajax.request({
11930
                                                        async: false,
11931
                                                        method: 'POST',
11932
                                                        url: '/UserControl/GetStore',
11933
                                                        params: {
11934
                                                            tableName: 'PCMFUNC',
11935
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11936
                                                        },
11937
                                                        success: function (response) {
11938
                                                            var results = Ext.decode(response.responseText);
11939
                                                            data_ = results.data[0];
11940
                                                            if (data_ != undefined) {
11941
                                                                custumFunc = data_.FunctionCode;
11942
                                                            }
11943
                                                        }
11944
                                                    });
11945
                                                }
11946
                                                if (custumFunc) {
11947
                                                    eval(custumFunc)
11948
                                                }
11949
                                            }
11950
                                        }
11951
                                    }
11952
                                });
11953
                            } else if (rec.SearchType == '4' && isLookup != true) {
11954
                                cols.push({
11955

    
11956
                                    text: rec.HeaderTitle,
11957
                                    hidden: Hidden_,
11958
                                    dataIndex: rec.FieldName,
11959
                                    filter: {
11960
                                        itemDefaults: {
11961
                                            emptyText: 'Search for...'
11962
                                        }
11963
                                    },
11964
                                    editor: {
11965
                                        allowBlank: null_,
11966
                                        xtype: 'lookupemployee',
11967
                                        readOnly: ReadOnly_,
11968
                                        isGrid: true,
11969
                                        fieldTarget: targetField_,
11970
                                        fieldValue: fieldValue_,
11971
                                        isGrid: true,
11972
                                        id: tableName + rec.FieldName,
11973
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11974
                                        triggerCls: 'x-form-search-trigger',
11975
                                        vtype: 'alphanum', // disable space
11976
                                        listeners: {
11977
                                            change: function (val) {
11978
                                                var custumFunc = rec.SelectFunction;
11979
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11980
                                                    Ext.Ajax.request({
11981
                                                        async: false,
11982
                                                        method: 'POST',
11983
                                                        url: '/UserControl/GetStore',
11984
                                                        params: {
11985
                                                            tableName: 'PCMFUNC',
11986
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11987
                                                        },
11988
                                                        success: function (response) {
11989
                                                            var results = Ext.decode(response.responseText);
11990
                                                            data_ = results.data[0];
11991
                                                            if (data_ != undefined) {
11992
                                                                custumFunc = data_.FunctionCode;
11993
                                                            }
11994
                                                        }
11995
                                                    });
11996
                                                }
11997
                                                if (custumFunc) {
11998
                                                    eval(custumFunc)
11999
                                                }
12000
                                            }
12001
                                        }
12002
                                    }
12003
                                });
12004
                            } else {
12005
                                cols.push({
12006
                                    text: rec.HeaderTitle,
12007
                                    hidden: Hidden_,
12008
                                    dataIndex: rec.FieldName,
12009
                                    filter: {
12010
                                        itemDefaults: {
12011
                                            emptyText: 'Search for...'
12012
                                        }
12013
                                    },
12014
                                    editor: {
12015
                                        allowBlank: null_,
12016
                                        xtype: 'textfield',
12017
                                        readOnly: ReadOnly_,
12018
                                        id: tableName + rec.FieldName,
12019
                                        listeners: {
12020
                                            change: function (val) {
12021
                                                var custumFunc = null;
12022
                                                Ext.Ajax.request({
12023
                                                    async: false,
12024
                                                    method: 'POST',
12025
                                                    url: '/UserControl/GetStore',
12026
                                                    params: {
12027
                                                        tableName: 'SDATATABLEFIELD',
12028
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
12029
                                                    },
12030
                                                    success: function (response) {
12031
                                                        var results = Ext.decode(response.responseText);
12032
                                                        data_ = results.data[0];
12033
                                                        if (data_ != undefined) {
12034
                                                            custumFunc = data_.SelectFunction;
12035
                                                            //console.log(data_)
12036
                                                        }
12037
                                                    }
12038
                                                });
12039

    
12040
                                                if (custumFunc) {
12041
                                                    eval(custumFunc)
12042
                                                }
12043
                                            }
12044
                                        }
12045
                                    }
12046
                                });
12047
                            }
12048

    
12049
                            break
12050

    
12051
                    }
12052
                } else {
12053
                    cols.push({
12054
                        text: rec.HeaderTitle,
12055
                        hidden: Hidden_,
12056
                        dataIndex: rec.FieldName,
12057
                        hidden: true,
12058
                        editor: {
12059
                            allowBlank: true,
12060
                            xtype: 'textfield',
12061
                            readOnly: ReadOnly_,
12062
                            id: tableName + rec.FieldName,
12063
                        },
12064
                        filter: {
12065
                            itemDefaults: {
12066
                                emptyText: 'Search for...'
12067
                            }
12068
                        }
12069
                    });
12070
                }
12071
            });
12072
        };
12073

    
12074
        this.cellEditing = new Ext.grid.plugin.CellEditing({
12075
            clicksToEdit: 1
12076
        });
12077
        Ext.applyIf(me, {
12078
            items: [{
12079
                xtype: 'grid',
12080
                id: gridName,
12081
                name: gridName,
12082
                height: height,
12083
                //store: 'gridStore',
12084
                store: Ext.create('Ext.data.Store', {
12085
                    storeId: storeID,
12086
                    fields: fieldStore,
12087
                    proxy: {
12088
                        method: 'POST',
12089
                        type: 'ajax',
12090
                        url: '',
12091
                        reader: {
12092
                            type: 'json',
12093
                            root: 'data'
12094
                        }
12095
                    }
12096
                }),
12097
                viewConfig: {
12098
                    emptyText: 'No Data Display',
12099
                    deferEmptyText: false,
12100
                    //Add Nana For Autosize Column Mode
12101
                    listeners: {
12102
                        refresh: function (dataview) {
12103
                            Ext.each(dataview.panel.columns, function (column) {
12104
                                if (column.autoSizeColumn == false)
12105
                                    column.autoSizeColumn = true;
12106
                                column.autoSize();
12107
                                //dataview.store.reload();
12108
                            })
12109
                        }
12110
                    },
12111
                    render: function (comp) {
12112
                        comp.getStore().reload();
12113
                        console.log(comp);
12114
                    }
12115
                },
12116
                dockedItems: [{
12117
                    xtype: 'toolbar',
12118
                    items: [{
12119
                        text: 'Add',
12120
                        hidden: hide_,
12121
                        name: tableName + 'Add',
12122
                        iconCls: 'fa-plus-circle',
12123
                        style: 'font-family: FontAwesome',
12124
                        handler: function () {
12125
                            var store = Ext.StoreMgr.lookup(storeID)
12126
                            idx = store.getCount();
12127
                            var action = getParam('action');
12128
                            var data = '';
12129
                            var Sequence = 0;
12130
                            if (idx == 0) {
12131
                                Sequence = 1;
12132
                            } else {
12133
                                Sequence = 1 + idx;
12134
                            }
12135
                            data = {
12136
                                Sequence: Sequence
12137
                            };
12138

    
12139
                            store.insert(idx, data);
12140
                        }
12141

    
12142
                    }, {
12143
                        text: 'Delete',
12144
                        hidden: hide_,
12145
                        name: tableName + 'DeleteText',
12146
                        iconCls: 'fa-trash-o',
12147
                        style: 'font-family: FontAwesome',
12148
                        //disabled: true
12149
                        handler: function () {
12150
                            var me = this,
12151
                            store = Ext.StoreMgr.lookup(storeID)
12152

    
12153
                            var grid = Ext.getCmp(gridName);
12154

    
12155
                            Ext.MessageBox.show({
12156
                                title: 'Remove tab',
12157
                                msg: "This will remove. Do you want to continue?",
12158
                                buttons: Ext.MessageBox.YESNO,
12159
                                fn: function (choice) {
12160
                                    console.log(choice);
12161
                                    if (choice === 'yes') {
12162
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
12163
                                        if (selection) {
12164
                                            store.remove(selection);
12165
                                        }
12166
                                    }
12167
                                    //delete panel.pendingClose;
12168
                                }
12169
                            });
12170
                        }
12171

    
12172
                    }
12173
                    ]
12174
                }
12175
                ],
12176
                columns: cols,
12177
                selModel: {
12178
                    type: 'cellmodel'
12179
                },
12180
                plugins: [this.cellEditing],
12181
            }, ]
12182

    
12183
        });
12184

    
12185
        me.callParent(arguments);
12186
    }
12187
});
12188
//hamid200916
12189
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployeelama', {
12190
    extend: 'Ext.panel.Panel',
12191
    alias: 'widget.lookupemployeelama',
12192
    requires: [
12193
		'Ext.data.*',
12194
		'Ext.grid.*',
12195
		'Ext.tree.*',
12196
		'Ext.ux.CheckColumn',
12197
		//'MinovaES.View.sample.samplepopupEMPID'
12198

    
12199
    ],
12200
    formname: undefined,
12201
    fieldname: undefined,
12202
    allowBlank: undefined,
12203
    width: undefined,
12204
    tableName: undefined,
12205
    //bodyStyle: 'padding-left: -20px; padding-bottom: -20px; padding-top: -20px; padding-right: -20px;',
12206
    //padding: '-40px',
12207
    //bodyStyle: 'margin:-20px;',
12208
    //margin: '-20 -20 -20 -20',
12209
    //fieldLabel: undefined,
12210
    //name: undefined,
12211
    //pnl: this.name,
12212
    initComponent: function () {
12213
        var me = this;
12214
        targetField_ = me.fieldname;
12215
        //var nameField_ = me.name;
12216
        //var panelform = this.pnl;
12217
        var nameField_ = me.fieldname;
12218
        var blank = me.allowBlank;
12219
        var width_ = me.width;
12220
        var tableName_ = me.tableName;
12221
        var panelform = "form" + me.name;
12222
        //var fieldLabel_ = me.fieldLabel;
12223
        Ext.applyIf(me, {
12224
            items: [{
12225
                xtype: 'form',
12226
                name: panelform,
12227
                items: [{
12228
                    xtype: 'fieldcontainer',
12229
                    layout: 'hbox',
12230
                    fieldLabel: me.fieldLabel,
12231
                    items: [{
12232
                        xtype: "triggerfield",
12233
                        name: nameField_,
12234
                        width: width_,
12235
                        //anchor: '50%',
12236
                        //editable: true,
12237
                        allowBlank: blank,
12238
                        triggerCls: 'x-form-search-trigger',
12239
                        onTriggerClick: function (e) {
12240
                            //var tableName_ = this.tableName;
12241
                            var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12242
                            var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12243
                            var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12244
                            var EmployeeID_ = EmployeeID.getValue();
12245
                            //var params = "EmployeeID[=]" + EmployeeID.getValue();
12246
                            //var Url = "sample?EmployeeID=" + EmployeeID.getValue();
12247
                            //window.open(Url, "_self");
12248
                            //var selection_ = selection.getValue();
12249
                            //var EmployeeSearch = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12250
                            //var lokup = EmployeeSearch.setValue(selection_);
12251

    
12252
                            var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12253
                            if (count_lookup == 1) {
12254
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12255
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12256
                            } else {
12257
                                //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12258
                                Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12259
                                    //    tableName: tableName_,
12260

    
12261
                                    //}).show()
12262
                                    //_popUploadView.tableName = tableName_;
12263
                                    tableName: tableName_,
12264
                                    targetField: this.name,
12265
                                }).show()
12266
                            }
12267

    
12268
                            //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12269
                            //var a = _popUploadView.show();
12270
                            var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12271
                            text.setValue(EmployeeID_);
12272

    
12273
                            if (EmployeeID_ !== "") {
12274
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12275
                                var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12276
                                store.proxy.extraParams = {
12277
                                    tableName: tableName_, //'PDSEMP0002',
12278
                                    param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12279
                                };
12280
                                store.reload();
12281
                            }
12282
                        },
12283
                        listeners: {
12284
                            specialkey: function (f, e) {
12285
                                if (e.getKey() == e.ENTER) {
12286
                                    //alert("about to submit");
12287
                                    var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12288
                                    var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12289
                                    var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12290
                                    var EmployeeID_ = EmployeeID.getValue();
12291

    
12292
                                    var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12293
                                    if (count_lookup == 1) {
12294
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12295
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12296
                                    } else {
12297
                                        Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12298
                                            tableName: tableName_,
12299
                                            targetField: this.name,
12300
                                        }).show()
12301
                                        //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12302
                                        //_popUploadView.targetField = this.name;
12303
                                        //_popUploadView.show();
12304

    
12305
                                    }
12306
                                    //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12307
                                    //var a = _popUploadView.show();
12308
                                    var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12309
                                    text.setValue(EmployeeID_);
12310

    
12311
                                    if (EmployeeID_ !== "") {
12312
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12313
                                        var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12314
                                        store.proxy.extraParams = {
12315
                                            tableName: tableName_, //'PDSEMP0002',
12316
                                            param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12317
                                        };
12318
                                        store.reload();
12319
                                    }
12320
                                    //myform.getForm().submit();
12321
                                }
12322
                            }
12323
                        }
12324

    
12325
                    }, {
12326
                        xtype: 'tbspacer',
12327
                        width: 5
12328
                    }, {
12329
                        xtype: 'button',
12330
                        name: nameField_,
12331
                        anchor: '50%',
12332
                        text: 'Advance',
12333
                        listeners: {
12334
                            click: function () {
12335
                                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEmployee]').length;
12336
                                if (count_lookup == 1) {
12337
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField = this.name;
12338
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].show();
12339
                                } else {
12340
                                    Ext.create('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12341
                                        tableName: tableName_,
12342
                                        targetField: this.name,
12343
                                    }).show()
12344
                                    //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeAdvance");
12345
                                    //_popUploadView.targetField = this.name;
12346
                                    //_popUploadView.show();
12347

    
12348
                                }
12349
                            }
12350
                        },
12351
                    }
12352
                    ]
12353
                }
12354
                ]
12355
            }
12356
            ]
12357
        });
12358
        me.callParent(arguments);
12359
    }
12360
});
12361

    
12362
Ext.define('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12363
    extend: 'Ext.window.Window',
12364
    alias: 'widget.popup_employeequicksearch',
12365
    requires: [
12366
		// 'MinovaES.controller.sample.ctrlsample',
12367
		//'MinovaES.store.data.TableType',
12368
    ],
12369
    //controller: 'ctrlsample',
12370
    height: '85%',
12371
    width: '42%',
12372
    minWidth: '50%',
12373
    maxWidth: '100%',
12374
    bodyPadding: 0,
12375
    formname: undefined,
12376
    //modal: true,
12377
    title: 'Lookup - EmployeeID',
12378
    name: 'popup_lookupEMPID',
12379
    test: undefined,
12380
    targetField: undefined,
12381
    tableName: undefined,
12382
    afterender: function () {
12383
        test = nameform;
12384
    },
12385
    initComponent: function () {
12386

    
12387
        var me = this;
12388
        var targetField_ = me.targetField;
12389
        var form = me.test;
12390
        var tableName_ = me.tableName;
12391
        Ext.applyIf(me, {
12392
            items: [{
12393
                xtype: 'form',
12394
                name: 'frmSearch',
12395
                width: '100%',
12396
                height: 'auto',
12397
                dockedItems: [{
12398
                    xtype: 'toolbar',
12399
                    dock: 'top',
12400
                    layout: 'vbox',
12401
                    bodyPadding: 10,
12402
                    border: 0,
12403
                    items: [{
12404
                        xtype: 'fieldset',
12405
                        layout: 'hbox',
12406
                        width: '100%',
12407
                        border: 0,
12408
                        padding: 0,
12409
                        items: [{
12410
                            xtype: 'textfield',
12411
                            name: 'EmployeeSearch',
12412
                            fieldLabel: 'Emp ID/ External ID/ Full Name',
12413
                            width: 475,
12414
                            labelWidth: 185,
12415
                            enableKeyEvents: true,
12416
                            listeners: {
12417
                                specialkey: function (f, e) {
12418
                                    if (e.getKey() == e.ENTER) {
12419
                                        var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12420
                                        var emp_ = emp.getValue();
12421
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12422
                                        var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12423
                                        store.proxy.extraParams = {
12424
                                            tableName: tableName_, //'PDSEMP0002',
12425
                                            param: 'EmpID_ExternalID_FullName[like]' + emp_
12426
                                        };
12427
                                        store.reload();
12428
                                    }
12429
                                }
12430
                            }
12431
                        }, {
12432
                            xtype: 'tbspacer',
12433
                            width: 5
12434
                        }, {
12435
                            xtype: 'button',
12436
                            name: 'Search',
12437
                            text: 'Search',
12438
                            handler: function () {
12439
                                var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12440
                                var emp_ = emp.getValue();
12441
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12442
                                var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12443
                                store.proxy.extraParams = {
12444
                                    tableName: tableName_, //'PDSEMP0002',
12445
                                    param: 'EmpID_ExternalID_FullName[like]' + emp_
12446
                                };
12447
                                store.reload();
12448
                            },
12449

    
12450
                        }
12451
                        ]
12452
                    }
12453
                    ]
12454
                }
12455
                ],
12456
            }, {
12457
                items: [{
12458
                    xtype: "minovagrid1",
12459
                    name: "GridEmployeeID",
12460
                    storename: 'lookupEMPID',
12461
                    tableName: tableName_, //'PDSEMP0002',
12462
                    param: '',
12463
                    isLookup: true,
12464
                    pagesize: 25,
12465
                    height: 425,
12466
                    listeners: {
12467
                        beforeedit: function () {
12468
                            return false;
12469
                        },
12470
                        itemdblclick: function () {
12471
                            var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
12472
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12473
                            var Emp_ = selection.data.EmployeeID;
12474
                            //var formSelection = Ext.ComponentQuery.query('[name=' + form + ']')[0];
12475
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12476

    
12477
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
12478
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12479
                            //Ext.ComponentQuery.query('[name=EmployeeiD]')[0].setValue(selection.data.EmployeeID);;
12480
                            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
12481
                        }
12482
                    },
12483
                }, {
12484
                    xtype: 'pagingtoolbar',
12485
                    store: 'lookupEMPID',
12486
                    dock: 'bottom',
12487
                    displayInfo: true
12488
                }
12489
                ]
12490
            }
12491
            ]
12492
        });
12493
        me.callParent(arguments);
12494
    }
12495
});
12496
Ext.define('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12497
    extend: 'Ext.window.Window',
12498
    alias: 'widget.popup_employeeadvance',
12499
    requires: [
12500
		//'MinovaES.controller.sample.ctrlsample',
12501
		//'MinovaES.store.data.TableType',
12502
    ],
12503
    //controller: 'ctrlsample',
12504
    height: '85%',
12505
    width: '42%',
12506
    minWidth: '50%',
12507
    maxWidth: '100%',
12508
    bodyPadding: 10,
12509
    anchor: '50%',
12510
    formname: undefined,
12511
    //modal: true,
12512
    title: 'Lookup - EmployeeID',
12513
    name: 'popup_lookupEmployee',
12514
    test: undefined,
12515
    targetField: undefined,
12516
    tableName: undefined,
12517
    initComponent: function () {
12518
        var me = this;
12519
        var targetField_ = me.targetField;
12520
        var form = me.test;
12521
        var tableName_ = me.tableName;
12522
        Ext.applyIf(me, {
12523
            items: [{
12524
                xtype: 'form',
12525
                name: 'formlookup',
12526
                items: [{
12527
                    xtype: 'minovaform',
12528
                    name: 'frmlookup',
12529
                    tableName: tableName_, //'PDSEMP0001',
12530
                    param: '',
12531
                    isLookup: true,
12532
                    listeners: {
12533
                        onStockFormKeyPress: function (textfield, event, options) {
12534
                            if (event.getKey() == event.ENTER) {
12535
                                alert("test");
12536
                                //Ext.Msg.alert('Keys', 'You pressed the Enter key');
12537
                            }
12538
                        }
12539
                    },
12540
                    buttons: [{
12541
                        text: 'Search',
12542
                        //iconCls : 'fa-edit',
12543
                        //style : 'font-family: FontAwesome',
12544
                        listeners: {
12545
                            click: function () {
12546
                                var store = Ext.data.StoreManager.lookup('lookupStore');
12547
                                var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
12548
                                grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12549
                                var values_ = form.getValues();
12550
                                var fields_ = form.getFields().items;
12551
                                var param_ = '';
12552
                                for (var i = 0; i < fields_.length; i++) {
12553
                                    var val_ = form.getFields().items[i].getValue();
12554
                                    var xtype_ = form.getFields().items[i].xtype;
12555
                                    var oprator_ = '[like]';
12556
                                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
12557
                                        oprator_ = '[Equal]';
12558
                                    }
12559
                                    if (xtype_ == 'datefield') {
12560
                                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
12561
                                            oprator_ = '[LessThanEqual]';
12562
                                        } else {
12563
                                            oprator_ = '[GreaterThanEqual]';
12564
                                        }
12565
                                    }
12566
                                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
12567
                                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
12568
                                    }
12569
                                }
12570
                                store.proxy.extraParams = {
12571
                                    tableName: grid.tableName,
12572
                                    param: param_
12573
                                };
12574
                                store.removeAll();
12575
                                store.reload();
12576
                                store.loadPage(1);
12577
                            },
12578

    
12579
                        }
12580
                    }
12581
                    ]
12582
                }, {
12583
                    xtype: 'minovagrid',
12584
                    name: 'gridlookup',
12585
                    minHeight: 320,
12586
                    height: 250,
12587
                    tableName: tableName_, //'PDSEMP0001',
12588
                    param: '',
12589
                    isLookup: true,
12590
                    storename: 'lookupStore',
12591
                    pagesize: 25,
12592
                    listeners: {
12593
                        beforeedit: function () {
12594
                            return false;
12595
                        },
12596
                        itemdblclick: function () {
12597
                            var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12598
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12599
                            var Emp_ = selection.data.EmployeeID;
12600
                            //var formSelection = Ext.ComponentQuery.query('[name=EmployeeSelection]')[0];
12601
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12602
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField;
12603
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12604
                            Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].hide();
12605

    
12606
                        }
12607
                    },
12608
                    dockedItems: [{
12609
                        xtype: 'pagingtoolbar',
12610
                        store: 'lookupStore',
12611
                        dock: 'bottom',
12612
                        displayInfo: true
12613
                    }
12614
                    ]
12615
                }
12616
                ]
12617
            }
12618
            ]
12619
        });
12620
        me.callParent(arguments);
12621
    }
12622
});
12623
//end hamid
12624

    
12625

    
12626
// lookup tree
12627
Ext.define('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12628
    extend: 'Ext.window.Window',
12629
    alias: 'widget.minovalookuptreePopup',
12630
    requires: [
12631

    
12632
    ],
12633
    //height: '50%',
12634
    width: '40%',
12635
    minWidth: '50%',
12636
    maxWidth: '100%',
12637
    bodyPadding: 5,
12638
    modal: true,
12639
    name: 'mainlookupTree',
12640
    objFilter: undefined,
12641
    treeSructure: undefined, // object relationship
12642
    objClassValue: undefined, // object yang akan di input ke field
12643
    formname: undefined, // nama form
12644
    targetField: undefined, // nama field yang akan diset value
12645
    //title:'judul',
12646
    bodyPadding: 0,
12647
    initComponent: function () {
12648
        var me = this;
12649
        var objFilter_ = me.objFilter;
12650
        var treeSructure_ = me.treeSructure;
12651
        var formname_ = me.formname;
12652
        var objClassValue_ = me.objClassValue;
12653
        var targetField_ = me.targetField;
12654
        var AllObjectClass = treeSructure_.split('-');
12655
        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0];
12656
        var StartDate_ = MinovaUtil.GetNowDate();
12657
        if (form_) {
12658
		  if(form_.getForm=='undefined'){
12659
            if (form_.getForm().findField('StartDate')) {
12660
                StartDate_ = form_.getForm().findField('StartDate').getValue();
12661
            } 
12662
		  }
12663
        }
12664

    
12665
        Ext.applyIf(me, {
12666
            items: [{
12667
                //xtype : 'panel',
12668
                items: [{
12669
                    xtype: 'tabpanel',
12670
                    items: [{
12671

    
12672
                        xtype: 'form',
12673
                        title: 'Structured Search',
12674
                        //height: '70%',
12675
                        tabConfig: {
12676
                            tooltip: 'Search by tree'
12677
                        },
12678
                        items: [{
12679
                            xtype: 'form',
12680
                            items: [{
12681

    
12682
                                xtype: 'treepanel',
12683
                                rootVisible: false,
12684
                                //height: 400,
12685

    
12686
                                name: 'searchByTreePopUp',
12687
                                useArrows: true,
12688
                                animate: false,
12689
                                targetField: targetField_,
12690
                                formname: formname_,
12691
                                root: {
12692
                                    expanded: true,
12693
                                    nodeType: 'async',
12694
                                    ext: 'Favorites',
12695
                                    id: 'null'
12696
                                },
12697
                                listeners: {
12698
                                    afterrender: function (me_) {
12699
                                        me_.mask();
12700
                                        if (treeSructure_ != 'O-O-P') {
12701
                                            var countCol = me_.columns.length;
12702
                                            me_.columns[countCol - 1].setHidden(true);
12703

    
12704
                                        }
12705
                                        if (StartDate_ != '') {
12706
                                            var node = "root";
12707
                                            var ObjectClass_ = treeSructure_.split('-');
12708
                                            //Ext.Ajax.request({
12709
                                            //    method: 'POST',
12710
                                            //    async: false,
12711
                                            //    url: '/UserControl/GetStoreAuth',
12712
                                            //    params: {
12713
                                            //        tableName: "PHROM0001",
12714
                                            //        param: "ObjectClass[=]" + ObjectClass_[0],
12715
                                            //        menuId: MinovaUtil.GetMenuID()
12716
                                            //    },
12717
                                            //    success: function (response) {
12718
                                            //        var results = Ext.decode(response.responseText);
12719
                                            //        var data_ = results.data;
12720
                                            //        if (data_.length > 0 && data_.length == 1) {
12721
                                            //            node = ObjectClass_[0] + data_[0].ObjectID;
12722
                                            //        }
12723

    
12724
                                            //    }
12725
                                            //});
12726

    
12727
                                            Ext.Ajax.request({
12728
                                                async: false,
12729
                                                //url: '/ORM/GetRelObjectTreeAsync?node=' + node + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12730
                                                url: '/ORM/GetRelObjectTreeAsyncAuth?node=' + 'root' + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_ + '&ObjectClass=' + ObjectClass_[0] + '&MenuID=' + /*MinovaUtil.GetMenuID()*/'PM01',
12731
                                                success: function (response) {
12732
                                                    var results = Ext.decode(response.responseText);
12733
                                                    var data_ = results.results;
12734
                                                    //console.log(data_)
12735
                                                    var pnl = Ext.ComponentQuery.query('[name=searchByTreePopUp]')[0];
12736
                                                    pnl.store.setRootNode({
12737
                                                        expanded: true,
12738
                                                        nodetype: 'async',
12739
                                                        children: data_
12740
                                                        //[]
12741
                                                    });
12742
                                                }
12743
                                            });
12744

    
12745
                                        }
12746
                                        me_.unmask();
12747
                                    },
12748
                                    afteritemexpand: function (node, index, item, eOpts) {
12749
                                        var me = this;
12750
                                        var data_ = null;
12751
                                        var idx = 0;
12752
                                        var tree_ = Ext.ComponentQuery.query('treepanel[name=searchByTreePopUp]')[0];
12753
                                        var v = tree_.getView();
12754
                                        tree_.mask('Expanding tree...');
12755
                                        var main_ = Ext.ComponentQuery.query('[name=ORMMain]')[0];
12756
                                        Ext.Ajax.request({
12757
                                            async: false,
12758
                                            url: '/ORM/GetRelObjectTreeAsync?node=' + node.get('Id') + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12759
                                            success: function (response) {
12760
                                                var results = Ext.decode(response.responseText);
12761
                                                data_ = results.results;
12762
                                                console.log(data_)
12763
                                            }
12764
                                        });
12765

    
12766
                                        if (data_.length > 0) {
12767
                                            data_.forEach(function (rec) {
12768

    
12769
                                                console.log(rec.Id)
12770
                                                if (v.store.data.find('Id', rec.Id) == null) {
12771
                                                    node.appendChild(data_[idx])
12772
                                                }
12773
                                                idx++;
12774
                                            })
12775
                                        }
12776

    
12777
                                        setTimeout(function () {
12778

    
12779
                                            tree_.unmask();
12780
                                        }, 200);
12781

    
12782
                                    },
12783
                                    itemdblclick: function (this_, record, item, index, e, eOpts) {
12784
                                        var cek = false;
12785
                                        var class_ = objClassValue_;
12786
                                        var classDt = class_.split(']');
12787
                                        var classVal = "";
12788
                                        if (classDt.length == 1) {
12789
                                            classVal = classDt[0];
12790
                                        }
12791
                                        if (classDt.length > 1) {
12792
                                            classVal = classDt[1];
12793
                                        }
12794
                                        if (classVal == record.data.ObjectType) {
12795
											
12796
											if(formname_ != undefined && formname_.substring(0,4)!='grid')
12797
											{
12798
												var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12799
												var type = 'rc';
12800
												if (form_.findField(targetField_).nameTable) {
12801
													type = form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase();
12802
												}
12803
												if (type != "rc") {
12804
													if (classVal == 'P' && (MinovaUtil.GetMenuID() == 'PA02' || MinovaUtil.GetMenuID() == 'ESS_MUTATION' || MinovaUtil.GetMenuID() == 'ESS_PROMOTION')) {
12805
														// cek apakah posisis sudah di assign
12806
														var hasil = null;
12807
														Ext.Ajax.request({
12808
															async: false,
12809
															method: 'POST',
12810
															url: '/UserControl/GetStore',
12811
															params: {
12812
																tableName: 'PHROM0002',
12813
																param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[LessThanEqual]' + StartDate_ + ',EndDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectId
12814
															},
12815
															success: function (response) {
12816
																var results = Ext.decode(response.responseText);
12817
																//hasil = results.data[0].RelationshipObject;
12818
																hasil = results.data.length;
12819
																if (hasil == 0) {
12820
																	cek = true;
12821
																} else {
12822
																	//Ext.Msg.show({
12823
																	//    title: 'Warning',
12824
																	//    message: MinovaMessageData('OM0001', ''),
12825
																	//    buttons: Ext.Msg.OK,
12826
																	//     fn: function (choice) {
12827
																	//        console.log(choice);
12828
																	//        if (choice === 'ok') {
12829
																	//        }
12830

    
12831
																	//    }
12832
																	//});
12833
																	//alert(MinovaMessageData('OM0001', ''))
12834
																	MinovaMessageError("Position Occupied", "OM0001", "");
12835
																}
12836
																//count = hasil.length
12837
															}
12838
														});
12839
													} else {
12840
														cek = true;
12841
													}
12842
												} else {
12843
													cek = true;
12844
												}
12845
												if (cek) {
12846
													// set value to form
12847
													var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12848
													form_.findField(targetField_).setValue('a');
12849
													form_.findField(targetField_).valData = 'a';
12850
													form_.findField(targetField_).setValue(record.data.Text);
12851
													form_.findField(targetField_).valData = record.data.ObjectId;
12852
													form_.findField(targetField_).focus();
12853
													if (form_.findField(targetField_).nextSibling()) {
12854
														form_.findField(targetField_).nextSibling().focus();
12855
													} else {
12856
														form_.findField(targetField_).blur();
12857
													}
12858
													Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12859
												}												
12860
											}else{
12861
												Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12862
												Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(record.data.Text);
12863
												
12864
												// for (var i = 0; i < 5; ++i) {
12865
													// task(i);
12866
												// }
12867
												// function task(i) {
12868
												// var task = new Ext.util.DelayedTask(function(){
12869
												// Ext.ComponentQuery.query('[name=maingeneralbgt]')[0].items.items[0].items.map.gridPHRBU0004.getSelectionModel().getSelection()[0].set('CostElement',record.data.ObjectId);	
12870
												// });
12871
												// task.delay(1000*i);												
12872
												// }
12873
											}
12874
                                        }
12875
                                    }
12876
                                },
12877

    
12878
                                columns: [{
12879
                                    xtype: 'treecolumn',
12880
                                    text: 'Organization Structure',
12881
                                    flex: 2,
12882
                                    sortable: true,
12883
                                    dataIndex: 'TextObject'
12884
                                }, {
12885
                                    text: 'Object ID',
12886
                                    flex: 1,
12887
                                    sortable: true,
12888
                                    dataIndex: 'ObjectId',
12889
                                }, {
12890
                                    text: 'Object Class',
12891
                                    flex: 1,
12892
                                    sortable: true,
12893
                                    dataIndex: 'ObjectType',
12894
                                }, {
12895
                                    text: 'Object Abbr',
12896
                                    flex: 1,
12897
                                    sortable: true,
12898
                                    dataIndex: 'TextObject',
12899
                                }, {
12900
                                    text: 'Start Date',
12901
                                    flex: 1,
12902
                                    sortable: true,
12903
                                    dataIndex: 'StartDate',
12904
                                }, {
12905
                                    text: 'End Date',
12906
                                    flex: 1,
12907
                                    sortable: true,
12908
                                    dataIndex: 'EndDate',
12909
                                }, {
12910
                                    xtype: 'actioncolumn',
12911
                                    text: 'Vacant Status',
12912
                                    flex: 1,
12913
                                    dataIndex: 'IsVacant',
12914
                                    sortable: true,
12915
                                    iconCls: 'fa-child',
12916
                                    renderer: function (value, metadata, record) {
12917
                                        if (record.data.ObjectType == "P") {
12918
                                            var Vacant = record.data.IsVacant;
12919
                                            if (!Vacant) {
12920
                                                metadata.tdStyle = 'font-family: FontAwesome';
12921
                                            }
12922

    
12923
                                        }
12924

    
12925
                                    },
12926
                                }
12927
                                ]
12928

    
12929
                            }
12930
                            ]
12931
                        }
12932
                        ]
12933
                    }, {
12934
                        title: 'Search by Object',
12935
                        //height: 400,
12936
                        autoScroll: true,
12937
                        items: [{
12938
                            xtype: 'form',
12939
                            name: 'filterbyObj',
12940
                            margin: '5 5 5 5',
12941
                            buttons: [{
12942
                                text: 'Search',
12943
                                name: 'SearchAssign',
12944
                                handler: function () {
12945
                                    var storeGrid = Ext.StoreMgr.lookup("gridObj");
12946
                                    var form = Ext.ComponentQuery.query('[name=filterbyObj]')[0].getForm();
12947
                                    if (form.isValid()) {
12948
                                        var values_ = form.getValues();
12949
                                        storeGrid.proxy.url = '/ORM/SearchByObject?StartDate=' + values_.StartDate + "&EndDate=99991231" + "&ObjectID=" + values_.ObjectID + "&ObjectClass=" + values_.ObjectClass +
12950
                                            "&ObjectClassTarget=" + values_.ObjectClassTarget + "&ObjectDescription=" + values_.ObjectDescription +
12951
                                            "&Abbreviation=" + values_.Abbreviation + "&MenuID=" + MinovaUtil.GetMenuID() +
12952
                                            "&TreeStructCode=" + values_.TreeStructCode;
12953
                                        storeGrid.load({});
12954
                                        storeGrid.loadPage(1);
12955

    
12956
                                    }
12957

    
12958
                                }
12959
                            }
12960
                            ],
12961
                            items: [{
12962
                                xtype: "datefield",
12963
                                fieldLabel: "Date",
12964
                                name: 'StartDate',
12965
                                submitFormat: 'Ymd',
12966
                                format: 'd/m/Y',
12967
                                value: new Date(),
12968
                                anchor: '50%',
12969
                            }, {
12970
                                xtype: "hidden",
12971
                                fieldLabel: "Date",
12972
                                name: 'ObjectClass',
12973
                                value: AllObjectClass[0],
12974
                                anchor: '50%',
12975
                            }, {
12976
                                xtype: "hidden",
12977
                                fieldLabel: "Date",
12978
                                name: 'EndDate',
12979
                                value: '99991231',
12980
                                anchor: '50%',
12981
                            }, {
12982
                                xtype: "combobox",
12983
                                fieldLabel: "Object Class",
12984
                                name: 'ObjectClassTarget',
12985
                                allowBlank: false,
12986
                                anchor: '50%',
12987
                                displayField: 'desc',
12988
                                valueField: 'code',
12989
                                store: Ext.create('Ext.data.Store', {
12990
                                    storeId: 'storeYesNo',
12991
                                    fields: ['code', 'desc'],
12992
                                    data: [{
12993
                                        "desc": AllObjectClass[0],
12994
                                        "code": AllObjectClass[0]
12995
                                    }, {
12996
                                        "desc": AllObjectClass[2],
12997
                                        "code": AllObjectClass[2]
12998
                                    }
12999
                                    ]
13000
                                }),
13001
                                queryMode: 'local',
13002
                            }, {
13003
                                xtype: "textfield",
13004
                                fieldLabel: "Object ID",
13005
                                name: 'ObjectID',
13006
                                anchor: '50%',
13007
                            }, {
13008
                                xtype: "textfield",
13009
                                fieldLabel: "Object Description",
13010
                                name: 'ObjectDescription',
13011
                                anchor: '50%',
13012
                            }, {
13013
                                xtype: "textfield",
13014
                                fieldLabel: "Abbreviation",
13015
                                name: 'Abbreviation',
13016
                                anchor: '50%',
13017
                            }, {
13018
                                xtype: "hidden",
13019
                                fieldLabel: "MenuID",
13020
                                name: 'MenuID',
13021
                                anchor: '50%',
13022
                                value: MinovaUtil.GetMenuID()
13023
                            }, {
13024
                                xtype: "hidden",
13025
                                fieldLabel: "TreeStructCode",
13026
                                name: 'TreeStructCode',
13027
                                anchor: '50%',
13028
                                value: treeSructure_
13029
                            },
13030
                            ],
13031
                        }, {
13032
                            xtype: "minovagrid1",
13033
                            tableName: 'PDSBS0008',
13034
                            name: "gridbyObject",
13035
                            param: '',
13036
                            autoLoad: false,
13037
                            pagesize: 5,
13038
                            storename: 'gridObj',
13039
                            isLookup: true,
13040
                            //height: 250,
13041
                            targetField: targetField_,
13042
                            formname: formname_,
13043
                            bodyPadding: 0,
13044
                            listeners: {
13045
                                afterrender: function (me_) {
13046
                                    if (treeSructure_ != 'O-O-P') {
13047
                                        var countCol = me_.columns.length;
13048
                                        me_.columns[countCol - 1].setHidden(true);
13049

    
13050
                                    }
13051
                                },
13052
                                itemdblclick: function (this_, record, item, index, e, eOpts) {
13053
                                    console.log(record.data);
13054
                                    var cek = false;
13055
                                    if (objClassValue_ == record.data.ObjectClass) {
13056
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
13057
                                        if (form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase() != "rc") {
13058
                                            if (objClassValue_ == 'P') {
13059
                                                // cek apakah posisis sudah di assign
13060
                                                var hasil = null;
13061
                                                Ext.Ajax.request({
13062
                                                    async: false,
13063
                                                    method: 'POST',
13064
                                                    url: '/UserControl/GetStore',
13065
                                                    params: {
13066
                                                        tableName: 'PHROM0002',
13067
                                                        param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectID
13068
                                                    },
13069
                                                    success: function (response) {
13070
                                                        var results = Ext.decode(response.responseText);
13071
                                                        //hasil = results.data[0].RelationshipObject;
13072
                                                        hasil = results.data.length;
13073
                                                        if (hasil == 0) {
13074
                                                            cek = true;
13075
                                                        }
13076
                                                        //count = hasil.length
13077
                                                    }
13078
                                                });
13079

    
13080
                                            } else {
13081
                                                cek = true;
13082
                                            }
13083
                                        } else {
13084
                                            cek = true;
13085
                                        }
13086
                                    }
13087
                                    if (cek) {
13088
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
13089
                                        //form_.findField(targetField_).setValue(record.data.ObjectID);
13090
                                        //form_.findField(targetField_).valData = record.data.ObjectID + ' - ' + record.data.ObjectDescription;
13091
                                        form_.findField(targetField_).setValue('-');
13092
                                        form_.findField(targetField_).valData = '-';
13093
                                        form_.findField(targetField_).setValue(record.data.ObjectID);
13094
                                        form_.findField(targetField_).valData = record.data.ObjectID;
13095
                                        form_.findField(targetField_).setRawValue(record.data.ObjectID + ' - ' + record.data.ObjectDescription);
13096
                                        Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
13097
                                    } else {
13098
                                        alert(MinovaMessageData('OM0001', ''))
13099
                                    }
13100
                                },
13101
                                beforeclick: function () {
13102
                                    return false;
13103
                                }
13104

    
13105
                            },
13106
                            dockedItems: [{
13107
                                xtype: 'pagingtoolbar',
13108
                                store: 'gridObj',
13109
                                dock: 'bottom',
13110
                                displayInfo: true
13111
                            }
13112

    
13113
                            ]
13114
                        },
13115
                        ]
13116

    
13117
                    }
13118
                    ]
13119

    
13120
                }
13121
                ]
13122
            },
13123
            ]
13124

    
13125
        });
13126
        me.callParent(arguments);
13127
    }
13128
});
13129

    
13130

    
13131
Ext.define('MinovaUtil.MinovaES.MinovaLookupTree', {
13132
    extend: 'Ext.form.field.Trigger',
13133
    alias: ['widget.minovalookuptree', 'widget.MinovaLookupTree'],
13134
    treeSructure: undefined, // object relationship
13135
    objClassValue: undefined, // object yang akan di input ke field
13136
    formname: undefined, // nama form
13137
    targetField: undefined, // nama field yang akan diset value
13138
    initComponent: function () {
13139

    
13140
        this.callParent();
13141
    },
13142
    getValue: function () {
13143
        var me = this;
13144
        var hasil = '';
13145
        if (this.valData) {
13146
            hasil = this.valData.split('-')[0].replace(' ', '');
13147

    
13148
        } else {
13149
            if (me.rawValue != '' && me.rawValue != undefined) {
13150
                hasil = me.rawValue.split('-')[0].replace(' ', '');
13151
            }
13152
        }
13153

    
13154
        return hasil;
13155
    },
13156
    getSubmitValue: function () {
13157
        var me = this;
13158
        var hasil = '';
13159
        if (this.valData) {
13160
            hasil = this.valData.split('-')[0].replace(' ', '');
13161
        } else {
13162
            if (me.rawValue != '' && me.rawValue != undefined) {
13163
                hasil = me.rawValue.split('-')[0].replace(' ', '');
13164
            }
13165
        }
13166

    
13167
        return hasil;
13168
    },
13169
    onTriggerClick: function () {
13170
        var _treeSructure = this.treeSructure;
13171
        var _objClassValue = this.objClassValue;
13172
        var _formname = this.formname;
13173
        var _targetField = this.name;
13174
        var _fieldLabel = this.fieldLabel;
13175
        var _objFilter = this.objFilter;
13176
        var Mainform = Ext.ComponentQuery.query('[name=' + _formname + ']')[0];
13177
        var _StartDate = MinovaUtil.GetNowDate();
13178
        if (Mainform) {
13179
			if(Mainform.getForm=='undefined'){
13180
            if (Mainform.getForm().findField('StartDate')) {
13181
                _StartDate = Mainform.getForm().findField('StartDate').getValue();
13182
            }				
13183
			}
13184
        }
13185
        //alert(treeSructure_ + ',' + objClassValue_ + ',' + formname_ + ',' + targetField_)
13186
        if (_StartDate != "") {
13187
            Ext.create('MinovaES.view.orm.lookup.minovalookuptreePopup', {
13188
                name: _targetField + 'lookUp',
13189
                treeSructure: _treeSructure, // object relationship
13190
                objClassValue: _objClassValue, // object yang akan di input ke field
13191
                formname: _formname, // nama form
13192
                targetField: _targetField,
13193
                objFilter: _objFilter,
13194
                title: 'Lookup ' + _fieldLabel
13195
            }).show()
13196
        } else {
13197
            MinovaMessage('', 'BS0001', 'Start Date', 'E')
13198
        }
13199

    
13200
    },
13201
});
13202

    
13203
Ext.define('MinovaUtil.MinovaES.LookupEmployee', {
13204
    extend: 'Ext.window.Window',
13205
    alias: 'widget.minovalookupemployee',
13206
    requires: [],
13207
    height: '87%', //'60%'
13208
    width: '41%',
13209
    minWidth: '50%',
13210
    maxWidth: '100%',
13211
    bodyPadding: 0,
13212
    formname: undefined,
13213
    name: 'popup_lookupEMPID',
13214
    test: undefined,
13215
    vtype: 'validateMinovaXss',
13216
    targetField: undefined,
13217
    valueField: undefined,
13218
    tableName: undefined,
13219
    LookupFunction: undefined,
13220
    isGrid: undefined,
13221
    listeners: {
13222
        afterrender: function (f) {
13223
            f.setTitle('Lookup - ' + f.targetField);
13224
        }
13225
    },
13226
    initComponent: function () {
13227
        var me = this;
13228
        var targetField_ = me.targetField;
13229
        var valueField_ = me.valueField;
13230
        var form = me.test;
13231
        var tableName_ = me.tableName;
13232
        var isGrid = me.isGrid_;
13233
        var LookupFunction = me.LookupFunction;
13234
        param_ = null;
13235

    
13236
        var filterParam_ = me.filterParam;
13237
        if (tableName_ == "PDSRC0002") {
13238
            fieldLabel_ = 'App ID/ External ID/ Full Name';
13239
        } else if(tableName_ == 'PCMPROCNUMBER'){
13240
			fieldLabel_ = 'Process Number';
13241
		} else {
13242
            fieldLabel_ = 'Emp ID/ External ID/ Full Name';
13243
        }
13244
        Ext.applyIf(me, {
13245
            items: [{
13246
                items: [{
13247
                    xtype: 'tabpanel',
13248
                    items: [{
13249
                        xtype: 'form',
13250
                        title: 'Quick Search',
13251
                        height: '70%',
13252
                        items: [{
13253
                            xtype: 'form',
13254
                            name: 'frmSearch',
13255
                            width: '100%',
13256
                            height: 'auto',
13257
                            dockedItems: [{
13258
                                xtype: 'toolbar',
13259
                                dock: 'top',
13260
                                layout: 'vbox',
13261
                                bodyPadding: 10,
13262
                                border: 0,
13263
                                items: [{
13264
                                    xtype: 'fieldset',
13265
                                    layout: 'hbox',
13266
                                    width: '100%',
13267
                                    border: 0,
13268
                                    padding: 0,
13269
                                    items: [{
13270
                                        xtype: 'textfield',
13271
                                        name: 'EmployeeSearch',
13272
                                        fieldLabel: fieldLabel_,
13273
                                        width: 470,
13274
                                        labelWidth: 185,
13275
                                        enableKeyEvents: true,
13276
                                        filterParam: filterParam_,
13277
                                        listeners: {
13278
                                            specialkey: function (f, e) {
13279
                                                if (e.getKey() == e.ENTER) {
13280
                                                    var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13281
                                                    var emp_ = emp.getValue();
13282
                                                    var store = Ext.data.StoreManager.lookup('storeQC');
13283
                                                    var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13284
                                                    if (tableName_ == 'PDSRC0002') {
13285
                                                        param_ = 'AppIDExternalIDFullName[like]' + emp_
13286
                                                    } else {
13287
                                                        param_ = 'EmpIDExternalIDFullName[like]' + emp_
13288
                                                    }
13289
                                                    if (this.filterParam) {
13290
                                                        param_ = param_ + ',' + this.filterParam_
13291
                                                    }
13292

    
13293
                                                    store.proxy.extraParams = {
13294
                                                        tableName: tableName_,
13295
                                                        param: param_,
13296
                                                        menuId: MinovaUtil.GetMenuID()
13297
                                                    };
13298
                                                    store.removeAll();
13299
                                                    store.reload();
13300
                                                    store.loadPage(1);
13301
                                                }
13302
                                            }
13303
                                        }
13304
                                    }, {
13305
                                        xtype: 'tbspacer',
13306
                                        width: 5
13307
                                    }, {
13308
                                        xtype: 'button',
13309
                                        name: 'Search',
13310
                                        text: 'Search',
13311
                                        filterParam: filterParam_,
13312
                                        handler: function () {
13313
                                            var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13314
                                            var emp_ = emp.getValue();
13315
                                            var store = Ext.data.StoreManager.lookup('storeQC');
13316
                                            var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13317

    
13318
											
13319
                                            if (tableName_ == 'PDSRC0002') {
13320
                                                param_ = 'AppIDExternalIDFullName[like]' + emp_
13321
                                            }else {
13322
                                                param_ = 'EmpIDExternalIDFullName[like]' + emp_
13323
                                            }
13324
                                            if (this.filterParam) {
13325
                                                param_ = param_ + ',' + this.filterParam
13326
                                            }
13327
											if(tableName_ == 'PCMPROCNUMBER'){
13328
												var docno = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0].getForm().findField('DocNo').getValue();
13329
                                                param_ = 'DocNo[like]'+docno+',ProcessNumber[like]' + emp_;
13330
												store.proxy.extraParams = {
13331
													tableName: 'PTRPRODUCTIONPROCESSOVERVIEW',
13332
													param: param_,
13333
													menuId: MinovaUtil.GetMenuID()
13334
												};												
13335
                                            }else{
13336
												store.proxy.extraParams = {
13337
													tableName: tableName_,
13338
													param: param_,
13339
													menuId: MinovaUtil.GetMenuID()
13340
												};												
13341
											}										
13342

    
13343
                                            store.removeAll();
13344
                                            store.reload();
13345
                                            store.loadPage(1);
13346
                                        }
13347
                                    }
13348
                                    ]
13349
                                }
13350
                                ]
13351
                            }
13352
                            ]
13353
                        }, {
13354
                            items: [{
13355
                                xtype: "minovagrid1",
13356
                                name: "GridEmployeeID",
13357
                                storename: 'storeQC',
13358
                                tableName: tableName_,
13359
                                param: '',
13360
                                isLookup: true,
13361
                                pagesize: 25,
13362
                                height: 398,
13363
                                LookupFunction: LookupFunction,
13364
                                valueField: valueField_,
13365
                                targetField: targetField_,
13366
                                isGrid: true,
13367
                                listeners: {
13368
                                    beforeedit: function () {
13369
                                        return false;
13370
                                    },
13371
                                    itemdblclick: function () {
13372
                                        var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
13373
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13374
                                        var Emp_ = '';
13375
										var gridPanel =undefined;
13376
										var gridPanelrows=0;
13377
										var tabtabelname = '';
13378
										if(tableName_ == 'PCMPROCNUMBER'){
13379
											tabtabelname = Ext.ComponentQuery.query('[name=panelTab]')[0].getActiveTab().initialConfig.tbl;
13380
											gridPanel =Ext.ComponentQuery.query('[name=gridCELLGRID'+tabtabelname+']')[0];
13381
											gridPanelrows=gridPanel.store.indexOf(gridPanel.getView().getSelection()[0]);
13382
											Emp_ = selection.data.ProcessNumber;
13383
										}else{
13384
											Emp_ = selection.data.EmployeeID;
13385
										}
13386
                                        LookupFunction = this.LookupFunction;
13387
                                        eval(LookupFunction);
13388
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13389
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13390
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13391
										if(tableName_ == 'PCMPROCNUMBER'){
13392
											gridPanel.getStore().getRange()[gridPanelrows].set('ProcessNumber',Emp_);
13393
										}
13394
                                    }
13395
                                },
13396
                            }, {
13397
                                xtype: 'pagingtoolbar',
13398
                                store: 'storeQC',
13399
                                dock: 'bottom',
13400
                                displayInfo: true
13401
                            }
13402
                            ]
13403
                        }
13404
                        ]
13405
                    }, {
13406
                        title: 'Advance Search',
13407
                        items: [{
13408
                            xtype: 'form',
13409
                            name: 'formlookup',
13410
                            items: [{
13411
                                xtype: 'minovaform',
13412
                                name: 'frmlookup',
13413
                                tableName: tableName_,
13414
                                param: filterParam_,
13415
                                isLookup: true,
13416
                                listeners: {
13417
                                    onStockFormKeyPress: function (textfield, event, options) {
13418
                                        if (event.getKey() == event.ENTER) {
13419
                                            alert("test");
13420
                                        }
13421
                                    }
13422
                                },
13423
                                buttons: [{
13424
                                    text: 'Search',
13425
                                    filterParam: filterParam_,
13426
                                    listeners: {
13427
                                        click: function () {
13428
                                            var store = Ext.data.StoreManager.lookup('storeadvance');
13429
                                            var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
13430
                                            grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13431
                                            var values_ = form.getValues();
13432
                                            var fields_ = form.getFields().items;
13433
                                            var param_ = '';
13434
                                            for (var i = 0; i < fields_.length; i++) {
13435
                                                var val_ = form.getFields().items[i].getValue();
13436
                                                var xtype_ = form.getFields().items[i].xtype;
13437
                                                var oprator_ = '[like]';
13438
                                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
13439
                                                    oprator_ = '[Equal]';
13440
                                                }
13441
                                                if (xtype_ == 'datefield') {
13442
                                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
13443
                                                        oprator_ = '[LessThanEqual]';
13444
                                                    } else {
13445
                                                        oprator_ = '[GreaterThanEqual]';
13446
                                                    }
13447
                                                }
13448
                                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
13449
                                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
13450
                                                }
13451
                                            }
13452
                                            if (this.filterParam_) {
13453
                                                param_ = param_ + ',' + this.filterParam_
13454
                                            }
13455
                                            store.proxy.extraParams = {
13456
                                                tableName: grid.tableName,
13457
                                                param: param_,
13458
                                                menuId: MinovaUtil.GetMenuID()
13459
                                            };
13460
                                            store.removeAll();
13461
                                            store.reload();
13462
                                            store.loadPage(1);
13463
                                        },
13464

    
13465
                                    }
13466
                                }
13467
                                ]
13468
                            }, {
13469
                                xtype: 'minovagrid1', // update by hamid 20170208
13470
                                name: 'gridlookup',
13471
                                minHeight: 312,
13472
                                height: 290,
13473
                                tableName: tableName_, //'PDSEMP0001',
13474
                                param: '',
13475
                                isLookup: true,
13476
                                storename: 'storeadvance',
13477
                                pagesize: 25,
13478
                                valueField: valueField_,
13479
                                targetField: targetField_,
13480
                                hidebutton: 0, // update by hamid 20170208
13481
                                isGrid: true,
13482
                                listeners: {
13483
                                    beforeedit: function () {
13484
                                        return false;
13485
                                    },
13486
                                    itemdblclick: function () {
13487
                                        var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13488
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13489
                                        var Emp_ = selection.data.EmployeeID;
13490
                                        LookupFunction = this.LookupFunction;
13491
                                        eval(LookupFunction);
13492
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13493
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13494
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13495
                                    }
13496
                                },
13497
                                dockedItems: [{
13498
                                    xtype: 'pagingtoolbar',
13499
                                    store: 'storeadvance',
13500
                                    dock: 'bottom',
13501
                                    displayInfo: true
13502
                                }
13503
                                ]
13504
                            }
13505
                            ]
13506

    
13507
                        }
13508
                        ]
13509

    
13510
                    }
13511
                    ]
13512

    
13513
                }
13514
                ]
13515
            }
13516
            ]
13517
        });
13518
        me.callParent(arguments);
13519
    }
13520
});
13521

    
13522
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployee', {
13523
    extend: 'Ext.form.field.Trigger',
13524
    alias: 'widget.lookupemployee',
13525

    
13526
    formname: undefined,
13527
    fieldname: undefined,
13528
    allowBlank: undefined,
13529
    width: undefined,
13530
    tableName: undefined,
13531
    LookupFunction: undefined,
13532
    targetField: undefined,
13533
    vtype: 'validateMinovaXss',
13534
    fieldValue: undefined,
13535
    initComponent: function () {
13536

    
13537
        this.callParent();
13538
    },
13539
    onTriggerClick: function () {
13540
        var nameField_ = this.fieldname;
13541
        var blank = this.allowBlank;
13542
        var width_ = this.width;
13543
        var tableName_ = this.tableName;
13544
        var panelform = "form" + this.name;
13545
        //add filer by atin
13546
        var filterParam_ = this.filterParam;
13547
        // and add by atin
13548
        var _targetField = this.name;
13549
        if (this.targetField) {
13550
            _targetField = targetField
13551
        }
13552
        var fieldValue_ = this.fieldValue;
13553
        var _fieldLabel = this.fieldLabel;
13554

    
13555
        //var tableName_ = this.tableName;
13556
        var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13557
        var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13558
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13559
        var EmployeeID_ = EmployeeID.getValue();
13560
        var LookupFunction = this.LookupFunction;
13561
        var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13562
        if (count_lookup == 1) {
13563
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13564
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13565
        } else {
13566
            Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13567
				height: '25%', //saswanto 31jan2022
13568
                tableName: tableName_,
13569
                targetField: this.name,
13570
                fieldValue: fieldValue_,
13571
                LookupFunction: LookupFunction,
13572
                filterParam: filterParam_,
13573
            }).show()
13574
        }
13575
        var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13576
        text.setValue(EmployeeID_);
13577
        var store = Ext.data.StoreManager.lookup('storeQC');
13578
        if (EmployeeID_ !== "") {
13579

    
13580
            var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13581
            if (tableName_ == 'PDSEMP0002') {
13582
                param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13583
            } else {
13584
                param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13585
            }
13586
            if (filterParam_) {
13587
                param_ = param_ + ',' + filterParam_;
13588
            }
13589
            store.proxy.extraParams = {
13590
                tableName: tableName_, //'PDSEMP0002',
13591
                param: param_,
13592
                menuId: MinovaUtil.GetMenuID()
13593
            };
13594
            store.reload();
13595
        } else {
13596
            store.proxy.extraParams = {
13597
                tableName: tableName_, //'PDSEMP0002',
13598
                param: filterParam_,
13599
                menuId: MinovaUtil.GetMenuID()
13600
            };
13601
            store.reload();
13602
        }
13603

    
13604
    },
13605
    listeners: {
13606
        specialkey: function (f, e) {
13607
            if (e.getKey() == e.ENTER) {
13608
                //alert("about to submit");
13609
                var nameField_ = this.fieldname;
13610
                var blank = this.allowBlank;
13611
                var width_ = this.width;
13612
                var tableName_ = this.tableName;
13613
                var panelform = "form" + this.name;
13614
                //add filer by atin
13615
                var filterParam = this.filterParam;
13616
                // and add by atin
13617
                var _targetField = this.name;
13618
                var _fieldLabel = this.fieldLabel;
13619
                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13620
                var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13621
                var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13622
                var EmployeeID_ = EmployeeID.getValue();
13623

    
13624
                var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13625
                if (count_lookup == 1) {
13626
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13627
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13628
                } else {
13629
                    Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13630
                        tableName: tableName_,
13631
                        targetField: this.name,
13632
                        fieldValue: this.fieldValue,
13633
                        LookupFunction: this.LookupFunction,
13634
                        filterParam: filterParam,
13635
                    }).show()
13636
                }
13637
                var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13638
                text.setValue(EmployeeID_);
13639

    
13640
                if (EmployeeID_ !== "") {
13641
                    var store = Ext.data.StoreManager.lookup('storeQC');
13642
                    var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13643
                    if (tableName_ == 'PDSEMP0002') {
13644
                        param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13645
                    } else {
13646
                        param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13647
                    }
13648
                    if (filterParam_) {
13649
                        param_ = param_ + ',' + filterParam_;
13650
                    }
13651
                    store.proxy.extraParams = {
13652
                        tableName: tableName_, //'PDSEMP0002',
13653
                        param: param_,
13654
                        menuId: MinovaUtil.GetMenuID()
13655
                    };
13656
                    store.reload();
13657
                }
13658
            }
13659
        }
13660
    }
13661

    
13662
});
13663
Ext.define('MinovaUtil.MinovaES.UploadFile', {
13664
    extend: 'Ext.form.field.Trigger',
13665
    alias: 'widget.uploadfile',
13666

    
13667
    //fieldLabel: undefined,
13668
    uploadName: 'uploadName',
13669
    formname: undefined,
13670
    fieldname: undefined,
13671
    allowBlank: undefined,
13672
    width: undefined,
13673
    tableName: undefined,
13674
    initComponent: function () {
13675

    
13676
        this.callParent();
13677
    },
13678
    onTriggerClick: function () {
13679
        var nameField_ = this.fieldname;
13680
        var blank = this.allowBlank;
13681
        var width_ = this.width;
13682
        var tableName_ = this.tableName;
13683
        var panelform = "form" + this.name;
13684
        var val_ = this.value;
13685
        var _targetField = this.name;
13686
        var _fieldLabel = this.fieldLabel;
13687

    
13688
        //var tableName_ = this.tableName;
13689
        var count_lookup = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13690
        var lookupEMPID = Ext.ComponentQuery.query('[name=FormFileUpload]')[0];
13691
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13692
        var EmployeeID_ = EmployeeID.getValue();
13693

    
13694
        var FormFileUpload = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13695
        Ext.create('MinovaES.view.uploadfile.fileupload', {
13696
            tableName: tableName_,
13697
            targetField: this.name,
13698
            valueFile: val_,
13699
            titleLookup: _fieldLabel,
13700
        }).show()
13701

    
13702
    }
13703

    
13704
});
13705

    
13706
//atien
13707
Ext.define('MinovaES.view.uploadfile.fileupload', {
13708
    extend: 'Ext.window.Window',
13709
    alias: 'widget.fileupload',
13710
    requires: [
13711

    
13712
    ],
13713
    //height: '67%',
13714
    width: '35%',
13715
    minWidth: '50%',
13716
    maxWidth: '100%',
13717
    bodyPadding: 0,
13718
    formname: undefined,
13719
    fieldname: undefined,
13720
    modal: true,
13721
    title: 'Upload ',
13722
    name: 'FormLookup',
13723
    test: undefined,
13724
    targetField: undefined,
13725
    tableName: undefined,
13726
    listeners: {
13727
        afterrender: function (f) {
13728
            f.setTitle('Upload ' + f.titleLookup);
13729
            var id_ = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0];
13730
            if (id_) {
13731
                var valID = id_.getValue();
13732
                Ext.ComponentQuery.query('textfield[name=FileID_]')[0].setValue(valID);
13733
            }
13734
        },
13735
    },
13736
    initComponent: function () {
13737
        var me = this;
13738
        var targetField_ = me.targetField;
13739
        var titleLookup_ = me.titleLookup;
13740
        var maxFileSize = me.maxFileSize;
13741
        var fileName = me.valueFile;
13742
        Ext.applyIf(me, {
13743
            items: [{
13744
                xtype: 'form',
13745
                name: 'FormFileUpload',
13746
                valueFile: fileName,
13747
                buttons: [{
13748
                    xtype: 'button',
13749
                    iconCls: 'fa-upload',
13750
                    style: 'font-family: FontAwesome',
13751
                    text: 'Upload',
13752
                    action: 'Upload',
13753
                    name: 'Upload',
13754
                    handler: function () {
13755
                        maxFileSize = Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].maxFileSize;
13756
                        Ext.ComponentQuery.query('[name=FileMax]')[0].setValue(maxFileSize);
13757
                        var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13758
                        pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0]; // by hamid 20170206
13759
                        if (form.isValid()) {
13760
                            form.submit({
13761
                                url: '/Devt/UploadFile',
13762
                                waitMsg: 'Uploading your file...',
13763
                                success: function (fp, o) {
13764
                                    var result = o.result;
13765
                                    Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].setValue(result.FileName);
13766
                                    Ext.ComponentQuery.query('[name=FormFileUpload]')[0].valueFile = result.FileName;
13767
                                    Ext.ComponentQuery.query('[name=download]')[0].fileName = result.FileName;
13768
                                    var fileID = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0]
13769
                                    if (fileID) {
13770
                                        fileID.setValue(result.ID);
13771
                                    }
13772

    
13773
                                    if (result.msg === "") {
13774
                                        if (me.onSuccess !== undefined)
13775
                                            me.onSuccess(result.FileName, result.content_type);
13776
                                        pnl.destroy(); // by hamid 20170206
13777
                                    } else
13778
                                        alert(result.msg);
13779
										
13780
									//by Agung 20200428
13781
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileID').setValue(result.ID);
13782
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileName').setValue(result.FileName);
13783
                                }
13784
                            });
13785
                        }
13786
                    }
13787
                }, {
13788
                    xtype: 'button',
13789
                    text: 'Clear',
13790
                    width: 60,
13791
                    handler: function () {
13792
                        //Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13793
                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(''); // by hamid 20170206
13794
                    }
13795
                }, {
13796
                    xtype: 'button',
13797
                    text: 'Download',
13798
                    name: 'download',
13799
                    width: 60,
13800
                    fileName: fileName,
13801
                    handler: function (f) {
13802
                        var url = '/Devt/GetFileData?FileName=' + f.fileName + '&download=true';
13803
                        window.open(url, '_blank');
13804
                    }
13805
                    //href: '/Devt/GetFileData?FileName=' + me.valueFile + '&download=true',
13806

    
13807
                }
13808
                ],
13809
                items: [{
13810
                    xtype: 'filefield',
13811
                    name: 'File',
13812
                    fieldLabel: 'Select File',
13813
                    //allowBlank: false,
13814
                    //width: 270,
13815
                    //labelWidth: 85,
13816
                }, {
13817
                    xtype: 'textfield',
13818
                    name: 'FileID_',
13819
                    hidden: true,
13820
                }, {
13821
                    xtype: 'textfield',
13822
                    name: 'FileMax',
13823
                    hidden: true,
13824
                }
13825
                ]
13826
            }
13827
            ]
13828
        });
13829
        me.callParent(arguments);
13830
    }
13831
});
13832
//atien
13833

    
13834

    
13835
//update by hamid 12012017
13836
Ext.define('MinovaES.view.uploadfile.fileupload1', {
13837
    extend: 'Ext.window.Window',
13838
    alias: 'widget.fileupload1',
13839
    requires: [
13840

    
13841
    ],
13842
    height: '67%',
13843
    width: '21%',
13844
    minWidth: '50%',
13845
    maxWidth: '100%',
13846
    bodyPadding: 0,
13847
    formname: undefined,
13848
    fieldname: undefined,
13849
    //modal: true,
13850
    title: 'Lookup - Photo',
13851
    name: 'FormLookup',
13852
    test: undefined,
13853
    targetField: undefined,
13854
    tableName: undefined,
13855
    initComponent: function () {
13856
        var me = this;
13857
        var targetField_ = me.targetField;
13858
        var nameField_ = this.fieldname;
13859
        var form = me.test;
13860
        var tableName_ = me.tableName;
13861
        //var img_ = Ext.ComponentQuery.query('[name=Photo]')[0].getValue()
13862
        var img_ = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
13863
        Ext.applyIf(me, {
13864
            // items: [{
13865
            //xtype : 'panel',
13866
            items: [{
13867
                xtype: 'tabpanel',
13868
                //name: 'mainTab',
13869
                items: [{
13870
                    xtype: 'form',
13871
                    title: 'Upload File',
13872
                    height: '70%',
13873
                    name: 'FormFileUpload',
13874
                    buttons: [{
13875
                        xtype: 'button',
13876
                        iconCls: 'fa-upload',
13877
                        style: 'font-family: FontAwesome',
13878
                        text: 'Upload',
13879
                        action: 'Upload',
13880
                        name: 'Upload',
13881
                        handler: function () {
13882
                            //var Tab = Ext.ComponentQuery.query('[name=mainTab]')[0].getActiveTab();
13883
                            var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13884
                            pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0];
13885
                            if (form.isValid()) {
13886
                                form.submit({
13887
                                    url: '/Devt/UploadFile',
13888
                                    waitMsg: 'Uploading your file...',
13889
                                    success: function (fp, o) {
13890
                                        var result = o.result;
13891
                                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(result.FileName)
13892
                                        //Ext.ComponentQuery.query('[name=Photo]')[0].setValue(result.FileName)
13893
                                        if (result.msg === "") {
13894
                                            //alert('success');
13895
                                            if (me.onSuccess !== undefined)
13896
                                                me.onSuccess(result.FileName, result.content_type);
13897
                                            pnl.destroy();
13898
                                        } else
13899
                                            alert(result.msg);
13900
                                    }
13901
                                });
13902
                            }
13903
                        }
13904
                    }, {
13905
                        xtype: 'button',
13906
                        text: 'Clear',
13907
                        width: 60,
13908
                        handler: function () {
13909
                            Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13910
                            //Ext.ComponentQuery.query('[name=Photo]')[0].setValue('');
13911

    
13912
                        }
13913
                    }
13914
                    ],
13915
                    items: [{
13916
                        xtype: 'fieldset',
13917
                        layout: 'hbox',
13918
                        width: '100%',
13919
                        bodyPadding: 10,
13920
                        border: 0,
13921
                        padding: 0,
13922
                        items: [{
13923
                            xtype: 'filefield',
13924
                            name: 'File',
13925
                            fieldLabel: 'Select File',
13926
                            //allowBlank: false,
13927
                            width: 270,
13928
                            labelWidth: 85,
13929
                        }
13930
                        ]
13931
                    }
13932
                    ]
13933
                    //items: [{
13934
                    //    xtype: 'form',
13935
                    //    name: 'Photo',
13936
                    //    width: '100%',
13937
                    //    height: 'auto',
13938
                    //    dockedItems: [{
13939
                    //        xtype: 'toolbar',
13940
                    //        dock: 'top',
13941
                    //        layout: 'vbox',
13942
                    //        bodyPadding: 10,
13943
                    //        border: 0,
13944
                    //        items: [{
13945
                    //            xtype: 'fieldset',
13946
                    //            layout: 'hbox',
13947
                    //            width: '100%',
13948
                    //            border: 0,
13949
                    //            padding: 0,
13950
                    //            items: [{
13951
                    //                xtype: 'filefield',
13952
                    //                name: 'SelectFile',
13953
                    //                fieldLabel: 'Select File',
13954
                    //                width: 270,
13955
                    //                labelWidth: 85,
13956
                    //                enableKeyEvents: true,
13957
                    //                buttonText: 'Browse',
13958
                    //            }]
13959

    
13960
                    //        }
13961
                    //        ]
13962
                    //    }
13963
                    //    ]
13964
                    //}]
13965
                }, {
13966
                    title: 'View Image',
13967
                    //height: 400,
13968
                    //autoScroll: true,
13969
                    items: [{
13970
                        xtype: 'form',
13971
                        name: 'ViewImage',
13972
                        //margin: '5 5 5 5',
13973
                        items: [{
13974
                            xtype: 'form',
13975
                            buttons: [{
13976
                                text: 'Download',
13977
                                handler: function () {},
13978
                                href: '/Devt/GetFileData?FileName=' + img_ + '&download=true'
13979

    
13980
                            }
13981
                            ],
13982
                            items: [{
13983
                                xtype: 'image',
13984
                                //id: 'imageuser',
13985
                                src: '/Devt/GetFileData?FileName=' + img_ + '&download=false'
13986
                            },
13987
                            ]
13988
                        }
13989
                        ]
13990

    
13991
                    }
13992
                    ]
13993

    
13994
                }
13995
                ]
13996

    
13997
            }
13998
            ]
13999

    
14000
        });
14001
        me.callParent(arguments);
14002
    }
14003
});
14004

    
14005
Ext.define('MinovaUtil.MinovaES.Column.MinovaPictureColumn', {
14006
    extend: 'Ext.grid.column.Column',
14007
    alias: ['widget.minovapicturecolumn'],
14008
    alternateClassName: 'Ext.grid.MinovaPictureColumn',
14009
    //undefinedText: '&#160;',
14010
    defaultRenderer: function (value) {
14011
        return '<img alt="" class="icon-imagecolumn" src = "/Devt/GetFileData?FileName=' + value + '&download=false"  id="">'
14012
    }
14013
});
14014

    
14015
Ext.define('MinovaUtil.MinovaES.MinovaFixValue', {
14016
    extend: 'Ext.form.field.ComboBox',
14017
    alias: ['widget.MinovaFixValue', 'widget.minovafixvalue'],
14018
    fixedValue: undefined,
14019
    anchor: '50%',
14020
    queryMode: 'local',
14021
    forceSelection: true, // cek data
14022
    getValue: function () {
14023
        var value = this.value;
14024

    
14025
        return value;
14026
    },
14027
    getSubmitValue: function () {
14028
        var value = this.value;
14029

    
14030
        return value;
14031
    },
14032
    initComponent: function () {
14033
        var me = this;
14034
        var storeData = [];
14035
        //var str= "y=yes|| n=no";
14036
        var str = me.fixedValue;
14037
        var hasil = str.split('||');
14038
        hasil.forEach(function (h) {
14039
            store_ = h.split('=')
14040
            storeData.push({
14041
                code: store_[0],
14042
                desc: store_[1],
14043

    
14044
            });
14045
        });
14046
        Ext.applyIf(me, {
14047

    
14048
            store: Ext.create('Ext.data.Store', {
14049
                storeId: 'store' + name,
14050
                autoLoad: true,
14051
                data: storeData
14052

    
14053
            }),
14054
        });
14055
        me.callParent(arguments);
14056
    }
14057
});
14058

    
14059
Ext.define('MinovaUtil.MinovaES.MinovaDecimal', {
14060
    extend: 'Ext.form.field.Text',
14061
    alias: ['widget.MinovaDecimal', 'widget.minovadecimal'],
14062
    fixedValue: undefined,
14063
    anchor: '50%',
14064
    getValue: function () {
14065
        var value = this.value;
14066

    
14067
        return value.replace(',', '.');
14068
    },
14069
    getSubmitValue: function () {
14070
        var value = this.value;
14071
        return value.replace(',', '.');
14072
    },
14073
    initComponent: function () {
14074
        var me = this;
14075
        Ext.applyIf(me, {});
14076
        me.callParent(arguments);
14077
    }
14078
});
14079

    
14080
Ext.define('MinovaUtil.com.xtype.MinovaWorflowEditor', {
14081
    extend: 'Ext.panel.Panel',
14082
    alias: ['widget.minovawfeditor', 'widget.minovafloweditor'],
14083
    title: undefined,
14084
    initComponent: function () {
14085
        // this.layout = 'fit';
14086
        this.readOnly = this.readOnly ? this.readOnly : false;
14087
        this.autoScroll = true;
14088
		var mxBasePath = '/Scripts/mxgraph';
14089
        this.height = 600;
14090
        this.title = this.title ? this.title : 'Workflow editor';
14091
        this.html = '<div id="minovaGraphContainer" title="' + this.title
14092
			 + '" style="background:white; padding: 20px"></div>';
14093
        this.tbar = [{
14094
            xtype: 'button',
14095
            hidden: true,
14096
            text: 'add Task',
14097
            handler: this.addTask
14098

    
14099
        }, {
14100
            xtype: 'button',
14101
            text: 'Remove',
14102
            hidden: true,
14103
            handler: this.removeCells
14104
        },
14105
			'->', {
14106
			    xtype: 'cycle',
14107
			    text: 'layout',
14108
			    menu: {
14109
			        // id : 'view-type-menu',
14110
			        items: [{
14111
			            text: 'mxCircleLayout'
14112
			        }, {
14113
			            text: 'mxCompactTreeLayout'
14114
			        }, {
14115
			            text: 'mxCompositeLayout'
14116
			        }, {
14117
			            text: 'mxEdgeLabelLayout'
14118
			        }, {
14119
			            text: 'mxFastOrganicLayout'
14120
			        }, {
14121
			            text: 'mxGraphLayout'
14122
			        }, {
14123
			            text: 'mxHierarchicalLayout'
14124
			        }
14125
						// , {
14126
						// text : 'mxParallelEdgeLayout'
14127
						// }
14128
						// , {
14129
						// text : 'mxPartitionLayout'
14130
						// },
14131
						// {
14132
						// text : 'mxStackLayout'
14133
						// }
14134
			        ]
14135
			    },
14136
			    changeHandler: function (cycleBtn, activeItem) {
14137
			        // Ext.Msg.alert('Change View', activeItem.text);
14138
			        try {
14139
			            switch (activeItem.text) {
14140
			                case 'mxCircleLayout':
14141
			                    var layout = new mxCircleLayout(graph);
14142
			                    layout.execute(graph.getDefaultParent());
14143
			                    break;
14144
			                case 'mxCompactTreeLayout':
14145
			                    var layout = new mxCompactTreeLayout(graph,
14146
                                        false);
14147
			                    layout.execute(graph.getDefaultParent());
14148
			                    break;
14149
			                case 'mxCompositeLayout':
14150
			                    var first = new mxFastOrganicLayout(graph);
14151
			                    var second = new mxParallelEdgeLayout(graph);
14152
			                    var layout = new mxCompositeLayout(graph, [
14153
                                            first, second], first);
14154
			                    layout.execute(graph.getDefaultParent());
14155
			                    break;
14156
			                case 'mxEdgeLabelLayout':
14157
			                    var layout = new mxEdgeLabelLayout(graph);
14158
			                    layout.execute(graph.getDefaultParent());
14159
			                    break;
14160
			                case 'mxFastOrganicLayout':
14161
			                    var layout = new mxCircleLayout(graph);
14162
			                    layout.execute(graph.getDefaultParent());
14163
			                    break;
14164
			                case 'mxGraphLayout':
14165
			                    var layout = new mxFastOrganicLayout(graph);
14166
			                    layout.execute(graph.getDefaultParent());
14167
			                    break;
14168
			                case 'mxParallelEdgeLayout':
14169
			                    var layout = new mxParallelEdgeLayout(graph);
14170
			                    layout.execute(graph.getDefaultParent());
14171
			                    break;
14172
			                case 'mxPartitionLayout':
14173
			                    var layout = new mxPartitionLayout(graph,
14174
                                        true, 10, 20);
14175
			                    layout.execute(graph.getDefaultParent());
14176
			                    break;
14177
			                case 'mxStackLayout':
14178
			                    var layout = new mxStackLayout(graph, false);
14179
			                    layout.execute(graph.getDefaultParent());
14180
			                    break;
14181
			                case 'mxHierarchicalLayout':
14182
			                    var layout = new mxHierarchicalLayout(graph);
14183
			                    layout.parallelEdgeSpacing = 100;
14184
			                    layout.moveParent = true;
14185
			                    layout.parentBorder = 100;
14186
			                    layout.intraCellSpacing = 100;
14187
			                    layout.interRankCellSpacing = 100;
14188
			                    layout.interHierarchySpacing = 0;
14189
			                    layout.orientation = mxConstants.DIRECTION_NORTH;
14190
			                    //layout.traverseAncestors = false;
14191
			                    layout.execute(parent);
14192
			                    break;
14193

    
14194
			            }
14195
			        } catch (e) {}
14196
			    }
14197
			}, {
14198
			    xtype: 'tbseparator'
14199
			}, {
14200
			    text: 'In',
14201
			    name: 'zoomin',
14202
			    handler: function () {
14203
			        graph.zoomIn();
14204
			        graph.fit();
14205
			    }
14206
			}, {
14207
			    text: 'Out',
14208
			    name: 'zoomout',
14209
			    handler: function () {
14210
			        graph.zoomOut();
14211
			        graph.fit();
14212
			    }
14213
			}
14214
			// , {
14215
			// text : 'Fit',
14216
			// name : 'zoomfit',
14217
			// handler : function() {
14218
			// graph.fit();
14219
			// }
14220
			// }
14221
		, {
14222
		    xtype: 'tbseparator'
14223
		}, {
14224
		    xtype: 'button',
14225
		    text: 'print',
14226
		    name: 'print',
14227
		    handler: this.printPreview
14228
		}
14229
        ]
14230

    
14231
        this.autoScroll = true;
14232
        this.listeners = {
14233
            afterrender: this.onAfterRender,
14234
            resize: this.onResize
14235
        }
14236

    
14237
        this.callParent(arguments);
14238
    },
14239
    printPreview: function () {
14240
        var preview = new mxPrintPreview(graph);
14241
        preview.print();
14242
    },
14243
    onAfterRender: function (_this) {
14244
        this.main(document.getElementById('minovaGraphContainer'));
14245
    },
14246
    removeCells: function () {
14247
        graph.removeCells();
14248
    },
14249
    onResize: function () {
14250
        try {
14251
            graph.sizeDidChange();
14252
        } catch (e) {}
14253
    },
14254
    addTask: function () {
14255
        graph.insertVertex(graph.getDefaultParent(), null, 'Task-' + Ext.id(),
14256
			0, 0, 80, 30);
14257
    },
14258
    main: function (container) {
14259
        // Checks if the browser is supported
14260
        if (!mxClient.isBrowserSupported()) {
14261
            // Displays an error message if the browser is not supported.
14262
            // mxUtils.error('Browser is not supported!', 200, false);
14263
            alert('Browser is not supported!');
14264
        } else {
14265
            // // Creates the graph inside the given container
14266
            // graph = new mxGraph(container);
14267
            // var keyHandler = new mxKeyHandler(graph);
14268
            // // keyHandler.bindKey(46, function(evt) {
14269
            // // if (graph.isEnabled()) {
14270
            // // graph.removeCells();
14271
            // // }
14272
            // // });
14273
            // wfEditor = new mxEditor();
14274
            //
14275
            // // Enables rubberband selection
14276
            //
14277
            // new mxRubberband(graph);
14278
            // graph.setPanning(true);
14279
            // graph.setTooltips(true);
14280
            //
14281
            // // graph.setConnectable(true);
14282
            // // graph.setDropEnabled(true);
14283
            // // graph.connectionHandler.setCreateTarget(true);
14284
            //
14285
            // // Gets the default parent for inserting new cells. This
14286
            // // is normally the first child of the root (ie. layer 0).
14287
            // var parent = graph.getDefaultParent();
14288

    
14289
            // Enables crisp rendering in SVG
14290
            // mxShape.prototype.crisp = true;
14291

    
14292
            // Enables guides
14293
            // mxGraphHandler.prototype.guidesEnabled = true;
14294

    
14295
            // Alt disables guides
14296
            // mxGuide.prototype.isEnabledForEvent = function(evt) {
14297
            // return !mxEvent.isAltDown(evt);
14298
            // };
14299

    
14300
            // Enables snapping waypoints to terminals
14301
            // mxEdgeHandler.prototype.snapToTerminals = true;
14302

    
14303
            // Enables orthogonal connect preview in IE
14304
            // mxConnectionHandler.prototype.movePreviewAway = true;
14305

    
14306
            // Creates the graph inside the given container
14307
            graph = new mxGraph(container);
14308
            // graph.disconnectOnMove = false;
14309
            // graph.foldingEnabled = false;
14310
            // graph.cellsResizable = false;
14311
            // graph.extendParents = false;
14312
            // graph.setConnectable(true);
14313
            graph.setAllowDanglingEdges(false);
14314

    
14315
            // Implements perimeter-less connection points as fixed points
14316
            // (computed before the edge style).
14317
            // graph.view.updateFixedTerminalPoint = function(edge, terminal,
14318
            // source, constraint) {
14319
            // mxGraphView.prototype.updateFixedTerminalPoint.apply(this,
14320
            // arguments);
14321
            //
14322
            // var pts = edge.absolutePoints;
14323
            // var pt = pts[(source) ? 0 : pts.length - 1];
14324
            //
14325
            // if (terminal != null && pt == null
14326
            // && this.getPerimeterFunction(terminal) == null) {
14327
            // edge.setAbsoluteTerminalPoint(new mxPoint(this
14328
            // .getRoutingCenterX(terminal), this
14329
            // .getRoutingCenterY(terminal)),
14330
            // source)
14331
            // }
14332
            // };
14333

    
14334
            // Changes the default edge style
14335
            graph.getStylesheet().getDefaultEdgeStyle()['edgeStyle'] = 'orthogonalEdgeStyle';
14336
            // delete graph.getStylesheet().getDefaultEdgeStyle()['endArrow'];
14337

    
14338
            // Implements the connect preview
14339
            graph.connectionHandler.createEdgeState = function (me) {
14340
                var edge = graph.createEdge(null, null, null, null, null);
14341

    
14342
                return new mxCellState(this.graph.view, edge, this.graph
14343
					.getCellStyle(edge));
14344
            };
14345

    
14346
            // Uncomment the following if you want the container
14347
            // to fit the size of the graph
14348
            // graph.setResizeContainer(true);
14349

    
14350
            // Enables rubberband selection
14351
            new mxRubberband(graph);
14352

    
14353
            // Disables basic selection and cell handling
14354
            graph.setEnabled(false);
14355

    
14356
            // Gets the default parent for inserting new cells. This
14357
            // is normally the first child of the root (ie. layer 0).
14358
            var parent = graph.getDefaultParent();
14359

    
14360
            // Enables HTML labels as wrapping is only available for those
14361
            graph.htmlLabels = true;
14362

    
14363
            // Disables in-place editing for edges
14364
            // graph.isCellEditable = function(cell) {
14365
            // return !this.model.isEdge(cell);
14366
            // };
14367

    
14368
            // Changes the default vertex style in-place
14369
            var style = graph.getStylesheet().getDefaultVertexStyle();
14370
            style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14371
            style[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14372
            style[mxConstants.STYLE_PERIMETER_SPACING] = 1; // 6;
14373
            style[mxConstants.STYLE_ROUNDED] = true;
14374
            style[mxConstants.STYLE_SHADOW] = true;
14375

    
14376
            style = graph.getStylesheet().getDefaultEdgeStyle();
14377
            style[mxConstants.STYLE_ROUNDED] = true;
14378
            style[mxConstants.STYLE_EDGE] = mxEdgeStyle.SegmentConnector;
14379

    
14380
            var style2 = new Object();
14381
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14382
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
14383
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14384
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14385
            style2[mxConstants.STYLE_ROUNDED] = true;
14386
            style2[mxConstants.STYLE_SHADOW] = true;
14387
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14388
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14389
            style2[mxConstants.STYLE_ALIGN] = 'center';
14390
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14391
            graph.getStylesheet().putCellStyle('RHOMBUS', style2);
14392

    
14393
            style2 = new Object();
14394
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_ELLIPSE;
14395
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.EllipsePerimeter;
14396
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14397
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14398
            style2[mxConstants.STYLE_ROUNDED] = true;
14399
            style2[mxConstants.STYLE_SHADOW] = true;
14400
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14401
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14402
            style2[mxConstants.STYLE_ALIGN] = 'center';
14403
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14404
            graph.getStylesheet().putCellStyle('ELLIPSE', style2);
14405

    
14406
            style2 = new Object();
14407
            style2[mxConstants.STYLE_SHAPE] = 'label';
14408
            style2[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom';
14409
            style2[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse';
14410
            style2[mxConstants.STYLE_INDICATOR_WIDTH] = 34;
14411
            style2[mxConstants.STYLE_INDICATOR_HEIGHT] = 34;
14412
            style2[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment
14413
            style2[mxConstants.STYLE_IMAGE_ALIGN] = 'center';
14414
            graph.getStylesheet().putCellStyle('LABEL', style2);
14415

    
14416
            style2 = new Object();
14417
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RECTANGLE;
14418
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14419
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14420
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14421
            style2[mxConstants.STYLE_ROUNDED] = false;
14422
            style2[mxConstants.STYLE_SHADOW] = true;
14423
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14424
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14425
            graph.getStylesheet().putCellStyle('RECTANGLE', style2);
14426
            // Adds cells to the model in a single step
14427
            graph.getModel().beginUpdate();
14428
            try {
14429
                // var v1 = graph.insertVertex(parent, null, '1', 20, 0, 150,
14430
                // 80);
14431
                // var v2 = graph.insertVertex(parent, null, '2', 20, 50, 150,
14432
                // 80);
14433
                // var v3 = graph
14434
                // .insertVertex(parent, null, '3', 20, 100, 150, 80);
14435
                // var v4 = graph
14436
                // .insertVertex(parent, null, '4', 120, 50, 150, 80);
14437
                // var v5 = graph.insertVertex(parent, null, '5', 120, 100, 150,
14438
                // 80);
14439
                //
14440
                // var e1 = graph.insertEdge(parent, null, '', v1, v2);
14441
                // var e2 = graph.insertEdge(parent, null, '', v2, v3);
14442
                // var e3 = graph.insertEdge(parent, null, '', v2, v4);
14443
                // var e4 = graph.insertEdge(parent, null, '', v4, v5);
14444
                // var e5 = graph.insertEdge(parent, null, '', v3, v5);
14445
            }
14446
            finally {
14447
                // Updates the display
14448
                graph.getModel().endUpdate();
14449
            }
14450

    
14451
        }
14452
    }
14453
});
14454

    
14455
Ext.define('MinovaUtil.MinovaES.MinovaMonthPicker', {
14456
    extend: 'Ext.form.field.Text',
14457
    alias: ['widget.minovamonthpicker', 'widget.minovamonthpicker'],
14458
    tableName: undefined,
14459
    param: undefined,
14460
    formtarget_: this.formtarget,
14461
    Sequence: this.Sequence,
14462
    anchor: '50%',
14463
    pagesize: undefined,
14464
    triggerCls: 'x-form-date-trigger',
14465
    getValue: function () {
14466
        var Sequence = this.Sequence;
14467
        var me = this;
14468
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14469
        var hasil = "";
14470
        if (_e != undefined) {
14471
            if (_e.value[0] >= 0) {
14472
                if (_e.value[0].toString() != '') {
14473
                    var _m = (_e.value[0] + 1).toString();
14474
                    if (_m.length == 1) {
14475
                        _m = '0' + _m;
14476
                    }
14477
                    hasil = _e.value[1].toString() + _m;
14478
                }
14479
            }
14480
        }
14481
        if (hasil == "") {
14482
            me.value = null;
14483
            me.submitValue = null;
14484
        } else {
14485
            me.submitValue = hasil;
14486
        }
14487
        return hasil;
14488
    },
14489
    clearValue: function () {
14490
        var Sequence = this.Sequence;
14491
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14492
        _e.value[0] = '';
14493
        _e.value[1] = '';
14494
        return this.setValue('');
14495
    },
14496
    getRawValue: function () {
14497
        var Sequence = this.Sequence;
14498
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14499
        var hasil = null;
14500
        if (_e != undefined) {
14501
            var _m = (_e.value[0] + 1).toString();
14502
            if (_m.length == 1) {
14503
                _m = '0' + _m;
14504
            }
14505
            hasil = _e.value[1].toString() + _m;
14506
        }
14507
        return hasil;
14508
    },
14509
    initComponent: function () {
14510
        var target = this.formtarget;
14511
        this.callParent();
14512
    },
14513
    onTriggerClick: function () {
14514
        var Sequence = this.Sequence;
14515
        var count_lookup = Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]').length;
14516
        if (count_lookup == 1) {
14517
            Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].show();
14518
        } else {
14519
            var target_ = this.formtarget;
14520
            var fieldtarget = this.name;
14521
            Ext.create('Ext.window.Window', {
14522
                title: 'Select Period',
14523
                name: Sequence + 'monthLookup',
14524
                layout: 'fit',
14525
                bodyPadding: 0,
14526
                border: false,
14527
                items: [{
14528
                    xtype: 'monthpicker',
14529
                    name: Sequence + 'monthselect',
14530
                    listeners: {
14531
                        afterrender: function () {
14532
                            var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14533

    
14534
                            _e.setValue(new Date());
14535
                        }
14536
                    },
14537
                    onOkClick: function () {
14538
                        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14539
                        if (_e.value[0] == null || _e.value[1] == null) {
14540
                            alert('Pilih Tanggal!');
14541
                            return;
14542
                        }
14543

    
14544
                        var _m = (_e.value[0] + 1).toString();
14545
                        if (_m.length == 1) {
14546
                            _m = '0' + _m;
14547
                        }
14548
                        var _period = _m + ' - ' + _e.value[1].toString();
14549

    
14550
                        var _f = Ext.ComponentQuery.query('[name=' + fieldtarget + ']')[0];
14551
                        _f.setValue(_period);
14552

    
14553
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14554
                    },
14555
                    onCancelClick: function () {
14556
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14557
                    }
14558
                }
14559
                ]
14560
            }).show();
14561
        }
14562
    }
14563
});
14564

    
14565
Ext.define('MinovaUtil.MinovaES.Column.MinovaTimeColumn', {
14566
    extend: 'Ext.grid.column.Column',
14567
    alias: ['widget.minovatimecolumn'],
14568
    alternateClassName: 'Ext.grid.MinovaTimeColumn',
14569
    undefinedText: '&#160;',
14570
    defaultRenderer: function (value) {
14571
        if (value === "") {
14572
            return "";
14573
        }
14574
        return hasil;
14575
    }
14576
});
14577

    
14578
Ext.define('MinovaUtil.MinovaES.Column.MinovaCurrencyColumn', {
14579
    extend: 'Ext.grid.column.Column',
14580
    alias: ['widget.minovacurrancycolumn'],
14581
    undefinedText: '&#160;',
14582
    defaultRenderer: function (value) {
14583
        if (value === "" || value === undefined || value === null) {
14584
            return this.undefinedText;
14585
        }
14586

    
14587
        Ext.util.Format.thousandSeparator = ",";
14588
        Ext.util.Format.decimalSeparator = ".";
14589
        value = value.toString().replace(',', '.');
14590
        return Ext.util.Format.number(value, '0,000.00');
14591
    }
14592
});
14593

    
14594
Ext.define('MinovaUtil.MinovaES.Field.MinovaCurrencyField', {
14595
    extend: 'Ext.form.field.Text',
14596
    alias: ['widget.MinovaCurrencyField', 'widget.minovacurrencyfield'],
14597
    undefinedText: '&#160;',
14598
    defaultRenderer: function (value) {
14599
        if (value === "" || value === undefined || value === null) {
14600
            return this.undefinedText;
14601
        }
14602

    
14603
        Ext.util.Format.thousandSeparator = ",";
14604
        Ext.util.Format.decimalSeparator = ".";
14605
        value = value.toString().replace(',', '.');
14606
        return Ext.util.Format.number(value, '0000.00');
14607
    }
14608
});
14609

    
14610
Ext.define('MinovaUtil.MinovaES.MinovaGridMD', {
14611
    extend: 'Ext.grid.Panel',
14612
    requires: ['Ext.grid.RowNumberer'],
14613
    alias: 'widget.minovagridmd',
14614
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14615
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14616
    alternateClassName: 'Ext.grid.MinovaGrid',
14617
    //controller:'orm-manage2-controller',
14618
    tableName: undefined,
14619
    isLookup: undefined,
14620
    param: undefined,
14621
    pagesize: undefined,
14622
    storename: undefined,
14623
    layoutType: undefined,
14624
    enableLocking: true,
14625
    autoLoad: undefined,
14626
    multiSelect: undefined,
14627
    getTableName: function () {
14628
        return this.tableName;
14629
    },
14630

    
14631
    initComponent: function () {
14632
        var me = this;
14633
        var cols_ = [];
14634
        var fieldeditor = {};
14635
        var hasil = null;
14636
        var autoLoad = true;
14637
        var LangID = localStorage.LangId;
14638
        var fielGrid = 'rec.GridView == 1';
14639
        var locking = true;
14640
        var checkSelection = '';
14641
        var widthLock = 250;
14642
        if (me.multiSelect) {
14643
            locking = false;
14644
            checkSelection = 'checkboxmodel';
14645
            widthLock = 40;
14646
        }
14647
        //var _url = 'GetAllField';
14648
        if (me.autoLoad == false) {
14649
            autoLoad = false;
14650
        }
14651
        parameter = null;
14652
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14653
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
14654
            fielGrid = 'rec.LookupGrid == 1';
14655
            locking = false;
14656

    
14657
        } else {
14658
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
14659
            //autoLoad = false;
14660
            //_url = 'GetAllFieldGridLookUp';
14661
        };
14662

    
14663
        //Ext.Ajax.request({
14664
        //	async : false,
14665
        //	method : 'POST',
14666
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
14667
        //	success : function (response) {
14668
        //		var results = Ext.decode(response.responseText);
14669
        //		hasil = results.data;
14670
        //	}
14671
        //});
14672
        //hamid03102016
14673

    
14674
        Ext.Ajax.request({
14675
            async: false,
14676
            method: 'POST',
14677
            url: '/UserControl/GetStore',
14678
            params: {
14679
                tableName: 'PDSBS0007',
14680
                param: parameter
14681
            },
14682
            success: function (response) {
14683
                var results = Ext.decode(response.responseText);
14684
                hasil = results.data;
14685
            }
14686
        });
14687
        //end
14688

    
14689
        if (hasil.length > 0) {
14690

    
14691
            Ext.each(hasil, function (rec) {
14692
                var null_ = null;
14693
                if (rec.IsPrimaryKey == true) {
14694
                    null_ = false;
14695
                }
14696
                if (rec.IsRequired == true) {
14697
                    null_ = false;
14698
                } else {
14699
                    null_ = true;
14700
                }
14701

    
14702
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14703
                    if (rec.LookupGrid == 1) {
14704
                        switch (rec.FormatRef) {
14705
                            case "file":
14706
                                cols_.push({
14707
                                    xtype: 'minovapicturecolumn',
14708
                                    text: rec.HeaderTitle,
14709
                                    dataIndex: rec.FieldName,
14710
                                    width: 100,
14711
                                    //filter: {
14712
                                    //    type: 'image',
14713
                                    //    itemDefaults: {
14714
                                    //        emptyText: 'Search for...'
14715
                                    //    }
14716
                                    //}
14717
                                });
14718
                                break
14719
                            case "date":
14720
                                cols_.push({
14721
                                    xtype: 'minovadatecolumn',
14722
                                    text: rec.HeaderTitle,
14723
                                    dataIndex: rec.FieldName,
14724
                                    width: 100,
14725
                                    filter: {
14726
                                        type: 'date',
14727
                                        itemDefaults: {
14728
                                            emptyText: 'Search for...'
14729
                                        }
14730
                                    }
14731
                                });
14732
                                break
14733
                            case "amount":
14734
                                cols_.push({
14735
                                    xtype: 'minovacurrancycolumn',
14736
                                    text: rec.HeaderTitle,
14737
                                    align: 'right',
14738
                                    dataIndex: rec.FieldName,
14739
                                    width: 100,
14740
                                    filter: {
14741
                                        type: 'number',
14742
                                        itemDefaults: {
14743
                                            emptyText: 'Search for...'
14744
                                        }
14745
                                    }
14746
                                });
14747
                                break
14748
                            case "amountencrypt":
14749
                                cols_.push({
14750
                                    xtype: 'minovaamountcolumn',
14751
                                    align: 'right',
14752
                                    text: rec.HeaderTitle,
14753
                                    dataIndex: rec.FieldName,
14754
                                    width: 100,
14755
                                    filter: {
14756
                                        type: 'string',
14757
                                        itemDefaults: {
14758
                                            emptyText: 'Search for...'
14759
                                        }
14760
                                    }
14761
                                });
14762
                                break
14763
                            case "datetime":
14764
                                cols_.push({
14765
                                    xtype: 'minovadatetimecolumn',
14766
                                    text: rec.HeaderTitle,
14767
                                    dataIndex: rec.FieldName,
14768
                                    width: 140,
14769
                                    filter: {
14770
                                        type: 'string',
14771
                                        itemDefaults: {
14772
                                            emptyText: 'Search for...'
14773
                                        }
14774
                                    }
14775
                                });
14776
                                break
14777
                            default:
14778
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14779
                                    cols_.push({
14780
                                        text: rec.HeaderTitle,
14781
                                        dataIndex: rec.FieldName,
14782
                                        width: 100,
14783
                                        filter: {
14784
                                            type: 'string',
14785
                                            itemDefaults: {
14786
                                                emptyText: 'Search for...'
14787
                                            }
14788
                                        }
14789
                                    });
14790
                                } else if (rec.SearchType == '2') {
14791
                                    cols_.push({
14792
                                        xtype: 'minovalookupcolumn',
14793
                                        text: rec.HeaderTitle,
14794
                                        tableName: rec.TableRef,
14795
                                        dataIndex: rec.FieldName,
14796
                                        filter: {
14797
                                            itemDefaults: {
14798
                                                emptyText: 'Search for...'
14799
                                            }
14800
                                        }
14801
                                    });
14802
                                } else if (rec.TableRef != "") {
14803
                                    if (rec.TableRef != null) {
14804
                                        var valueField = null;
14805
                                        var displayValue = null;
14806
                                        Ext.Ajax.request({
14807
                                            async: false,
14808
                                            method: 'POST',
14809
                                            url: '/UserControl/GetStore',
14810
                                            params: {
14811
                                                tableName: 'SDATATABLEFIELD',
14812
                                                param: 'TableName[equal]' + rec.TableRef
14813
                                            },
14814
                                            success: function (response) {
14815
                                                var results = Ext.decode(response.responseText);
14816
                                                data_ = results.data;
14817
                                                if (data_ != undefined) {
14818
                                                    valueField_ = $.grep(data_, function (r) {
14819
                                                        return r.ValueField == '1'
14820
                                                    });
14821
                                                    valueField = valueField_[0].FieldName
14822
                                                    displayValue_ = $.grep(data_, function (r) {
14823
                                                        return r.DisplayValue == '1'
14824
                                                    });
14825
                                                    displayValue = displayValue_[0].FieldName
14826
                                                }
14827
                                            }
14828
                                        });
14829
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14830
                                        var count_ = 0;
14831
                                        if (store_) {
14832
                                            count_ = store_.count();
14833
                                        }
14834
                                        if (count_ == 0) {
14835
                                            Ext.create('Ext.data.Store', {
14836
                                                storeId: 'store_' + rec.FieldName,
14837
                                                //autoLoad: true,
14838
                                                proxy: {
14839
                                                    method: 'POST',
14840
                                                    type: 'ajax',
14841
                                                    url: '/UserControl/GetStore',
14842
                                                    extraParams: {
14843
                                                        tableName: rec.TableRef,
14844
                                                        param: rec.ParamCombo
14845
                                                    },
14846
                                                    reader: {
14847
                                                        type: 'json',
14848
                                                        root: 'data',
14849
                                                        totalProperty: 'data[0].TotalCount'
14850
                                                    }
14851
                                                }
14852
                                            })
14853
                                        }
14854
                                        cols_.push({
14855
                                            xtype: 'minovacombocolumn',
14856
                                            text: rec.HeaderTitle,
14857
                                            dataIndex: rec.FieldName,
14858
                                            valueField: valueField,
14859
                                            displayField: displayValue,
14860
                                            store: 'store_' + rec.FieldName,
14861
                                            filter: {
14862
                                                type: 'list',
14863
                                                itemDefaults: {
14864
                                                    emptyText: 'Search for...'
14865
                                                }
14866
                                            }
14867
                                        });
14868
                                    }
14869

    
14870
                                } else {
14871
                                    cols_.push({
14872
                                        text: rec.HeaderTitle,
14873
                                        dataIndex: rec.FieldName,
14874
                                        filter: {
14875
                                            itemDefaults: {
14876
                                                emptyText: 'Search for...'
14877
                                            }
14878
                                        }
14879
                                    });
14880
                                }
14881
                                break
14882
                        }
14883
                    } else {
14884
                        cols_.push({
14885
                            text: rec.HeaderTitle,
14886
                            dataIndex: rec.FieldName,
14887
                            hidden: true,
14888
                            filter: {
14889
                                itemDefaults: {
14890
                                    emptyText: 'Search for...'
14891
                                }
14892
                            }
14893
                        });
14894
                    }
14895

    
14896
                } else {
14897
                    if (rec.GridView == 1) {
14898
                        switch (rec.FormatRef) {
14899
                            case "file":
14900
                                cols_.push({
14901
                                    xtype: 'minovapicturecolumn',
14902
                                    text: rec.HeaderTitle,
14903
                                    dataIndex: rec.FieldName,
14904
                                    width: 100,
14905
                                    //filter: {
14906
                                    //    type: '',
14907
                                    //    itemDefaults: {
14908
                                    //        emptyText: 'Search for...'
14909
                                    //    }
14910
                                    //}
14911
                                });
14912
                                break
14913
                            case "date":
14914
                                cols_.push({
14915
                                    xtype: 'minovadatecolumn',
14916
                                    text: rec.HeaderTitle,
14917
                                    dataIndex: rec.FieldName,
14918
                                    width: 100,
14919
                                    filter: {
14920
                                        type: 'date',
14921
                                        itemDefaults: {
14922
                                            emptyText: 'Search for...'
14923
                                        }
14924
                                    }
14925
                                });
14926
                                break
14927
                            case "amountencrypt":
14928
                                cols_.push({
14929
                                    xtype: 'minovaamountcolumn',
14930
                                    align: 'right',
14931
                                    text: rec.HeaderTitle,
14932
                                    dataIndex: rec.FieldName,
14933
                                    width: 100,
14934
                                    filter: {
14935
                                        type: 'string',
14936
                                        itemDefaults: {
14937
                                            emptyText: 'Search for...'
14938
                                        }
14939
                                    }
14940
                                });
14941
                                break
14942
                            case "amount":
14943
                                cols_.push({
14944
                                    text: rec.HeaderTitle,
14945
                                    dataIndex: rec.FieldName,
14946
                                    width: 100,
14947
                                    filter: {
14948
                                        type: 'number',
14949
                                        itemDefaults: {
14950
                                            emptyText: 'Search for...'
14951
                                        }
14952
                                    }
14953
                                });
14954
                                break
14955
                            case "datetime":
14956
                                cols_.push({
14957
                                    xtype: 'minovadatetimecolumn',
14958
                                    text: rec.HeaderTitle,
14959
                                    dataIndex: rec.FieldName,
14960
                                    width: 140,
14961
                                    filter: {
14962
                                        type: 'string',
14963
                                        itemDefaults: {
14964
                                            emptyText: 'Search for...'
14965
                                        }
14966
                                    }
14967
                                });
14968
                                break
14969
                            default:
14970
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14971
                                    cols_.push({
14972
                                        text: rec.HeaderTitle,
14973
                                        dataIndex: rec.FieldName,
14974
                                        width: 100,
14975
                                        filter: {
14976
                                            type: 'string',
14977
                                            itemDefaults: {
14978
                                                emptyText: 'Search for...'
14979
                                            }
14980
                                        }
14981
                                    });
14982
                                } else if (rec.SearchType == '2') {
14983
                                    cols_.push({
14984
                                        xtype: 'minovalookupcolumn',
14985
                                        text: rec.HeaderTitle,
14986
                                        tableName: rec.TableRef,
14987
                                        dataIndex: rec.FieldName,
14988
                                        filter: {
14989
                                            itemDefaults: {
14990
                                                emptyText: 'Search for...'
14991
                                            }
14992
                                        }
14993
                                    });
14994
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
14995
                                    if (rec.TableRef != null) {
14996
                                        var valueField = null;
14997
                                        var displayValue = null;
14998
                                        Ext.Ajax.request({
14999
                                            async: false,
15000
                                            method: 'POST',
15001
                                            url: '/UserControl/GetStore',
15002
                                            params: {
15003
                                                tableName: 'SDATATABLEFIELD',
15004
                                                param: 'TableName[equal]' + rec.TableRef
15005
                                            },
15006
                                            success: function (response) {
15007
                                                var results = Ext.decode(response.responseText);
15008
                                                data_ = results.data;
15009
                                                //if (data_ != undefined) {
15010
                                                if (data_.length > 0) {
15011
                                                    valueField_ = $.grep(data_, function (r) {
15012
                                                        return r.ValueField == '1'
15013
                                                    });
15014
                                                    valueField = valueField_[0].FieldName
15015
                                                    displayValue_ = $.grep(data_, function (r) {
15016
                                                        return r.DisplayValue == '1'
15017
                                                    });
15018
                                                    displayValue = displayValue_[0].FieldName
15019
                                                } else {
15020
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
15021
                                                }
15022
                                            }
15023
                                        });
15024
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
15025
                                        var count_ = 0;
15026
                                        if (store_) {
15027
                                            count_ = store_.count();
15028
                                        }
15029
                                        if (count_ == 0) {
15030
                                            var paramFilter = rec.ParamCombo;
15031
                                            if (rec.TableRef.toLowerCase() == 'phrom0001' && rec.ParamCombo.length == 1) {
15032
                                                paramFilter = 'ObjectClass[=]' + paramFilter;
15033
                                            }
15034
											var storeRef = Ext.create('Ext.data.Store', {
15035
                                                storeId: 'store_' + rec.FieldName,
15036
                                                autoLoad: false,
15037
                                                proxy: {
15038
                                                    method: 'POST',
15039
                                                    type: 'ajax',
15040
                                                    url: '/UserControl/GetStore',
15041
                                                    extraParams: {
15042
                                                        tableName: rec.TableRef,
15043
                                                        param: rec.ParamCombo
15044
                                                    },
15045
                                                    reader: {
15046
                                                        type: 'json',
15047
                                                        root: 'data',
15048
                                                        totalProperty: 'data[0].TotalCount'
15049
                                                    }
15050
                                                }
15051
                                            });
15052
                                            storeRef.load();
15053
                                            /*
15054
											Ext.create('Ext.data.Store', {
15055
                                                storeId: 'store_' + rec.FieldName,
15056
                                                autoLoad: false,
15057
                                                proxy: {
15058
                                                    method: 'POST',
15059
                                                    type: 'ajax',
15060
                                                    url: '/UserControl/GetStore',
15061
                                                    extraParams: {
15062
                                                        tableName: rec.TableRef,
15063
                                                        param: paramFilter
15064
                                                    },
15065
                                                    reader: {
15066
                                                        type: 'json',
15067
                                                        root: 'data',
15068
                                                        totalProperty: 'data[0].TotalCount'
15069
                                                    }
15070
                                                }
15071
                                            })
15072
											*/
15073
                                        }
15074
                                        cols_.push({
15075
                                            xtype: 'minovacombocolumn',
15076
                                            text: rec.HeaderTitle,
15077
                                            dataIndex: rec.FieldName,
15078
                                            valueField: valueField,
15079
                                            displayField: displayValue,
15080
                                            store: 'store_' + rec.FieldName,
15081
                                            filter: {
15082
                                                type: 'list',
15083
                                                itemDefaults: {
15084
                                                    emptyText: 'Search for...'
15085
                                                }
15086
                                            }
15087
                                        });
15088
                                    }
15089

    
15090
                                } else if (rec.FixedValue != "") {
15091
                                    cols_.push({
15092
                                        xtype: 'minovacombocolumnfixvalue',
15093
                                        text: rec.HeaderTitle,
15094
                                        dataIndex: rec.FieldName,
15095
                                        fixedValue: rec.FixedValue,
15096
                                        filter: {
15097
                                            type: 'list',
15098
                                            itemDefaults: {
15099
                                                emptyText: 'Search for...'
15100
                                            }
15101
                                        }
15102
                                    });
15103
                                } else {
15104
                                    cols_.push({
15105
                                        text: rec.HeaderTitle,
15106
                                        dataIndex: rec.FieldName,
15107
                                        filter: {
15108
                                            itemDefaults: {
15109
                                                emptyText: 'Search for...'
15110
                                            }
15111
                                        }
15112
                                    });
15113
                                }
15114
                                break
15115
                        }
15116
                    } else {
15117
                        cols_.push({
15118
                            text: rec.HeaderTitle,
15119
                            dataIndex: rec.FieldName,
15120
                            hidden: true,
15121
                            filter: {
15122
                                itemDefaults: {
15123
                                    emptyText: 'Search for...'
15124
                                }
15125
                            }
15126
                        });
15127
                    }
15128

    
15129
                }
15130
            });
15131
        };
15132
        var param_ = me.param;
15133
        if (param_ == undefined) {
15134
            param_ = ''
15135
        }
15136
        var jsStoreGrid = new Ext.data.Store({
15137
            storeId: me.storename,
15138
            autoLoad: autoLoad,
15139
            pageSize: me.pagesize,
15140
            proxy: {
15141
                method: 'POST',
15142
                type: 'ajax',
15143
                url: '/UserControl/GetStorePaging',
15144
                extraParams: {
15145
                    tableName: me.tableName,
15146
                    param: param_,
15147
                    //menuId: MinovaUtil.GetMenuID()
15148
                },
15149
                reader: {
15150
                    type: 'json',
15151
                    root: 'data',
15152
                    totalProperty: 'totalRecords'
15153
                }
15154
            },
15155
        });
15156
        Ext.applyIf(me, {
15157
            autoScroll: true,
15158
            enableLocking: locking,
15159
            lockedGridConfig: {
15160
                header: false,
15161
                collapsible: true,
15162
                width: widthLock,
15163
                forceFit: locking,
15164
                listeners: {
15165
                    render: function (grid) {
15166
                        var pagingToolbar = grid.child('pagingtoolbar');
15167
                        if (pagingToolbar) {
15168
                            grid.remove(pagingToolbar, true);
15169
                        }
15170
                    }
15171
                }
15172
            },
15173
            listeners: {
15174
                viewready: function () {
15175
                    if (autoLoad == true) {
15176
                        this.getStore().loadPage(1);
15177
                    }
15178

    
15179
                },
15180
                beforeedit: function () {
15181
                    return false;
15182
                }
15183
            },
15184
            lockedViewConfig: {
15185
                scroll: 'horizontal'
15186
            },
15187
            viewConfig: {
15188
                emptyText: 'No Data Display',
15189
                deferEmptyText: false,
15190
                //Add Nana For Autosize Column Mode Grid MD
15191
                listeners: {
15192
                    refresh: function (dataview) {
15193
                        Ext.each(dataview.panel.columns, function (column) {
15194
                            if (column.autoSizeColumn == false)
15195
                                column.autoSizeColumn = true;
15196
                            column.autoSize();
15197
                            console.log('GridMD');
15198
                        })
15199
                    },
15200
                    //afterrender: function (dataview) {
15201
                    //	console.log(dataview);
15202
                    //	dataview.getStore().reload();
15203
                    //}
15204
                    afterrender: function (dataview) {
15205
                     /*   Ext.defer(function () {
15206
                            dataview.store.reload();
15207
                        }, 2500, this);*/
15208
                    }
15209
                }
15210
            },
15211
            //for chekbox
15212
            selModel: {
15213
                //type: 'cellmodel'
15214
            },
15215
            selType: checkSelection,
15216
            columns: cols_,
15217
            store: jsStoreGrid,
15218
            plugins: [{
15219
                ptype: 'gridfilters'
15220
            }
15221
            ],
15222

    
15223
        });
15224
        me.callParent(arguments);
15225
    }
15226

    
15227
});
15228

    
15229
Ext.define('MinovaUtil.MinovaES.MinovaPMSEditAbleGrid', {
15230
    extend: 'Ext.form.Panel',
15231
    alias: ['widget.MinovaPMSEditAbleGrid', 'widget.Minovapmseditablegrid', 'widget.minovapmseditablegrid'],
15232
    requires: [
15233
		'Ext.grid.plugin.CellEditing',
15234
		'Ext.grid.RowNumberer',
15235
		'Ext.grid.Panel',
15236
		'Ext.grid.plugin.RowEditing',
15237
    ],
15238
    anchor: '100%',
15239
    tableName: undefined,
15240
    apprasalType: undefined,
15241
    empID: undefined,
15242
    hideButton: undefined,
15243
    multiSelect: undefined,
15244
    initComponent: function () {
15245
        var me = this;
15246
        var isLookup = me.isLookup;
15247
        var hide_ = false;
15248
        var widthLock = 250;
15249
        var checkSelection = '';
15250
        if (me.hideButton == true) {
15251
            hide_ = true;
15252
        }
15253
        if (me.multiSelect) {
15254
            locking = false;
15255
            checkSelection = 'checkboxmodel';
15256
            widthLock = 40;
15257
        }
15258
        var tableName = me.tableName;
15259
        var cols = [];
15260
        var fieldStore = [];
15261
        var _url = 'GetAllField';
15262
        var hasil = null;
15263
        var height = me.height;
15264
        var storeID = 'store' + me.tableName;
15265
        var gridName = 'grid' + me.name;
15266
        if (me.storeName) {
15267
            storeID = me.storeName;
15268
        }
15269
        var empID = me.empID;
15270
        var apprasalType = me.apprasalType;
15271
        var LangID = MinovaUtil.GetLangID();
15272
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
15273
        Ext.Ajax.request({
15274
            async: false,
15275
            method: 'POST',
15276
            url: '/Performance/getFieldPMS',
15277
            params: {
15278
                tableName: 'PDSPMS001',
15279
                _param: parameter
15280
            },
15281
            success: function (response) {
15282
                var results = Ext.decode(response.responseText);
15283
                hasil = Ext.decode(results.data);
15284
            }
15285
        });
15286
        var addData = 'var data={';
15287
        if (hasil.length > 0) {
15288
            Ext.each(hasil, function (rec) {
15289
                fieldStore.push(rec.FieldName)
15290
                if (rec.FieldName != 'Sequence') {
15291
                    addData = addData + rec.FieldName + ":" + "'',";
15292
                }
15293
                var null_ = null;
15294
                var ReadOnly_ = false;
15295
                if (rec.IsPrimaryKey == true) {
15296
                    null_ = false;
15297
                }
15298
                if (rec.IsRequired == true) {
15299
                    null_ = false;
15300
                } else {
15301
                    null_ = true;
15302
                }
15303
                if (rec.ReadOnly == '1') {
15304
                    ReadOnly_ = true;
15305
                }
15306
                var Hidden_ = false;
15307
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
15308
                    Hidden_ = true;
15309
                    null_ = true;
15310
                }
15311
                if (rec.GridView == 1) {
15312
                    switch (rec.FormatRef) {
15313
                        case "date":
15314
                            cols.push({
15315
                                xtype: 'minovadatecolumn',
15316
                                hidden: Hidden_,
15317
                                text: rec.HeaderTitle,
15318
                                dataIndex: rec.FieldName,
15319
                                filter: {
15320
                                    itemDefaults: {
15321
                                        emptyText: 'Search for...',
15322
                                    }
15323
                                },
15324
                                editor: {
15325
                                    allowBlank: null_,
15326
                                    xtype: 'datefield',
15327
                                    hideMode: 'visibility',
15328
                                    readOnly: ReadOnly_,
15329
                                    id: tableName + rec.FieldName,
15330
                                    fieldGrid: rec.FieldName,
15331
                                    nameTable: rec.TableName,
15332
                                }
15333
                            });
15334
                            break
15335
                        case "amount":
15336
                            cols.push({
15337
                                xtype: 'minovacurrancycolumn',
15338
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
15339
                                text: rec.HeaderTitle,
15340
                                align: 'right',
15341
                                dataIndex: rec.FieldName,
15342
                                hidden: Hidden_,
15343
                                filter: {
15344
                                    itemDefaults: {
15345
                                        emptyText: 'Search for...'
15346
                                    }
15347
                                },
15348
                                editor: {
15349
                                    allowBlank: null_,
15350
                                    xtype: 'minovacurrencyfield',
15351
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
15352
                                    //vtype: 'validateDecimal',
15353
                                    readOnly: ReadOnly_,
15354
                                    id: tableName + rec.FieldName,
15355
                                    nameTable: rec.TableName,
15356
                                    fieldGrid: rec.FieldName,
15357
                                    fieldStyle: 'text-align:right;',
15358
                                    value: '0',
15359

    
15360
                                }
15361
                            });
15362
                            break
15363
                        case "time":
15364
                            var DefaultValue = rec.DefaultValue;
15365
                            if (DefaultValue == '') {
15366
                                defaultValue = '00:00';
15367
                            }
15368
                            cols.push({
15369
                                //xtype: 'minovatimecolumn',
15370
                                xtype: 'timefield',
15371
                                format: 'H:i',
15372
                                submitFormat: 'Hi',
15373
                                text: rec.HeaderTitle,
15374
                                dataIndex: rec.FieldName,
15375
                                hidden: Hidden_,
15376
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
15377
                                filter: {
15378
                                    itemDefaults: {
15379
                                        emptyText: 'Search for...'
15380
                                    }
15381
                                },
15382
                                editor: {
15383
                                    allowBlank: null_,
15384
                                    xtype: 'timefield',
15385
                                    readOnly: ReadOnly_,
15386
                                    id: tableName + rec.FieldName,
15387
                                    format: 'H:i',
15388
                                    submitFormat: 'Hi',
15389
                                    increment: 5,
15390
                                    value: DefaultValue,
15391
                                    anchor: '100%',
15392
                                    listeners: {}
15393
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
15394
                                }
15395
                            });
15396
                            break
15397
                        default:
15398
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
15399
                                cols.push({
15400
                                    text: rec.HeaderTitle,
15401
                                    dataIndex: rec.FieldName,
15402
                                    width: 100,
15403
                                    filter: {
15404
                                        type: 'string',
15405
                                        itemDefaults: {
15406
                                            emptyText: 'Search for...'
15407
                                        }
15408
                                    }
15409
                                });
15410
                            } else if (rec.SearchType == '0') {
15411
                                var valueField = null;
15412
                                var displayValue = null;
15413
                                var TableRef = undefined;
15414
                                if (rec.TableRef != '') {
15415
                                    TableRef = rec.TableRef;
15416

    
15417
                                    Ext.Ajax.request({
15418
                                        async: false,
15419
                                        method: 'POST',
15420
                                        url: '/UserControl/GetStore',
15421
                                        params: {
15422
                                            tableName: 'SDATATABLEFIELD',
15423
                                            param: 'TableName[equal]' + rec.TableRef
15424
                                        },
15425
                                        success: function (response) {
15426
                                            var results = Ext.decode(response.responseText);
15427
                                            data_ = results.data;
15428
                                            if (data_ != undefined) {
15429
                                                valueField_ = $.grep(data_, function (r) {
15430
                                                    return r.ValueField == '1'
15431
                                                });
15432
                                                valueField = valueField_[0].FieldName
15433
                                                displayValue_ = $.grep(data_, function (r) {
15434
                                                    return r.DisplayValue == '1'
15435
                                                });
15436
                                                displayValue = displayValue_[0].FieldName
15437
                                            }
15438
                                        }
15439
                                    });
15440

    
15441
                                    //create Store
15442
                                    Ext.create('Ext.data.Store', {
15443
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15444
                                        autoLoad: true,
15445
                                        proxy: {
15446
                                            method: 'POST',
15447
                                            type: 'ajax',
15448
                                            url: '/UserControl/GetStore',
15449
                                            extraParams: {
15450
                                                tableName: TableRef,
15451
                                                param: rec.ParamCombo
15452
                                            },
15453
                                            reader: {
15454
                                                type: 'json',
15455
                                                root: 'data',
15456
                                                totalProperty: 'data[0].TotalCount'
15457
                                            }
15458
                                        }
15459
                                    });
15460
                                } else if (rec.FixedValue != '') {
15461
                                    var storeData = [];
15462
                                    var str = rec.FixedValue;
15463
                                    var hasil = str.split('||');
15464
                                    hasil.forEach(function (h) {
15465
                                        store_ = h.split('=')
15466
                                        storeData.push({
15467
                                            code: store_[0],
15468
                                            desc: store_[1],
15469

    
15470
                                        });
15471
                                    });
15472

    
15473
                                    valueField = 'code';
15474
                                    displayValue = 'desc';
15475

    
15476
                                    Ext.create('Ext.data.Store', {
15477
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15478
                                        autoLoad: true,
15479
                                        data: storeData
15480
                                    })
15481
                                }
15482

    
15483
                                cols.push({
15484
                                    xtype: 'minovacombocolumn',
15485
                                    hidden: Hidden_,
15486
                                    text: rec.HeaderTitle,
15487
                                    dataIndex: rec.FieldName,
15488
                                    valueField: valueField,
15489
                                    displayField: displayValue,
15490
                                    store: 'store_' + me.tableName + rec.FieldName,
15491
                                    editor: {
15492
                                        allowBlank: null_,
15493
                                        xtype: 'combobox',
15494
                                        readOnly: ReadOnly_,
15495
                                        id: tableName + rec.FieldName,
15496
                                        nameTable: rec.TableName,
15497
                                        fieldGrid: rec.FieldName,
15498
                                        valueField: valueField,
15499
                                        displayField: displayValue,
15500

    
15501
                                        store: 'store_' + me.tableName + rec.FieldName,
15502
                                    },
15503
                                    filter: {
15504
                                        type: 'list',
15505
                                        itemDefaults: {
15506
                                            emptyText: 'Search for...'
15507
                                        }
15508
                                    }
15509
                                });
15510
                            } else if (rec.SearchType == '5') {							
15511
                                var valueField = null;
15512
                                var displayValue = null;
15513
                                var AdditionaldisplayValue = null;
15514
                                var TableRef = undefined;
15515
                                if (rec.TableRef != '') {
15516
                                    TableRef = rec.TableRef;
15517
                                    Ext.Ajax.request({
15518
                                        async: false,
15519
                                        method: 'POST',
15520
                                        url: '/UserControl/GetStore',
15521
                                        params: {
15522
                                            tableName: 'SDATATABLEFIELD',
15523
                                            param: 'TableName[equal]' + rec.TableRef
15524
                                        },
15525
                                        success: function (response) {
15526
                                            var results = Ext.decode(response.responseText);
15527
                                            data_ = results.data;
15528
                                            if (data_ != undefined) {
15529
                                                valueField_ = $.grep(data_, function (r) {
15530
                                                    return r.ValueField == '1'
15531
                                                });
15532
                                                if (valueField_.length > 0) {
15533
                                                    valueField = valueField_[0].FieldName
15534
                                                }
15535

    
15536
                                                displayValue_ = $.grep(data_, function (r) {
15537
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
15538
                                                });
15539
                                                if (displayValue_.length > 0) {
15540
                                                    displayValue = displayValue_[0].FieldName;
15541
                                                }
15542
                                                if (displayValue_.length >= 2) {
15543
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
15544
                                                }
15545
                                            }
15546
                                        }
15547
                                    });
15548
                                }
15549
                                Ext.create('Ext.data.Store', {
15550
                                    storeId: 'store_' + me.tableName + rec.FieldName,
15551
                                    autoLoad: true,
15552
                                    proxy: {
15553
                                        method: 'POST',
15554
                                        type: 'ajax',
15555
                                        url: '/UserControl/GetStoreAuth',
15556
                                        extraParams: {
15557
                                            tableName: TableRef,
15558
                                            param: rec.ParamCombo,
15559
                                            menuId: MinovaUtil.GetMenuID()
15560
                                        },
15561
                                        reader: {
15562
                                            type: 'json',
15563
                                            root: 'data',
15564
                                            totalProperty: 'data[0].TotalCount'
15565
                                        }
15566
                                    }
15567
                                });
15568
                                cols.push({
15569
                                    xtype : 'minovacombocolumn',
15570
                                    hidden: Hidden_,
15571
                                    text: rec.HeaderTitle,
15572
                                    dataIndex: rec.FieldName,
15573
                                    valueField : valueField,
15574
                                    displayField : displayValue,
15575
                                    store : 'store_' + me.tableName + rec.FieldName,
15576
                                    tpl: Ext.create('Ext.XTemplate',
15577
                                            '<ul class="x-list-plain"><tpl for=".">',
15578
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15579
                                            '</tpl></ul>'),
15580
                                    displayTpl: Ext.create('Ext.XTemplate',
15581
                                        '<tpl for=".">',
15582
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15583
                                        '</tpl>'),
15584
                                    editor: {
15585
                                        allowBlank: null_,
15586
                                        xtype: 'combobox',
15587
                                        readOnly: ReadOnly_,
15588
                                        id: rec.TableName + rec.FieldName,
15589
                                        nameTable: rec.TableName,
15590
                                        fieldGrid: rec.FieldName,
15591
                                        valueField: valueField,
15592
                                        displayField: displayValue,
15593
                                        store: 'store_' + me.tableName + rec.FieldName,
15594
                                        value: rec.DefaultValue,
15595
                                        tpl: Ext.create('Ext.XTemplate',
15596
                                            '<ul class="x-list-plain"><tpl for=".">',
15597
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15598
                                            '</tpl></ul>'),
15599
                                        displayTpl: Ext.create('Ext.XTemplate',
15600
                                            '<tpl for=".">',
15601
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15602
                                            '</tpl>')
15603
                                    },
15604
                                    renderer: function (value) {
15605
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
15606
                                        var index = store.find(valueField, value);
15607
                                        var val = "";
15608
                                        if (index != -1) {
15609
                                            var rc = store.getAt(index);
15610
                                            //val = rc.get(displayValue);
15611
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
15612
                                        } else {
15613
                                            val = value;
15614
                                        }
15615
                                        return val;
15616
                                    },
15617
                                    filter: {
15618
                                        type: 'list',
15619
                                        itemDefaults: {
15620
                                            emptyText: 'Search for...'
15621
                                        }
15622
                                    }
15623
                                });
15624
                            } else if (rec.SearchType == '2') {
15625
                                var triger = (rec.TriggerCombo).split('$');
15626
                                var targetField_ = triger[0];
15627
                                var fieldValue_ = triger[1];
15628
                                cols.push({
15629
                                    text: rec.HeaderTitle,
15630
                                    hidden: Hidden_,
15631
                                    dataIndex: rec.FieldName,
15632
                                    filter: {
15633
                                        itemDefaults: {
15634
                                            emptyText: 'Search for...'
15635
                                        }
15636
                                    },
15637
                                    editor: {
15638
                                        allowBlank: null_,
15639
                                        xtype: 'minovalookupgrid',
15640
                                        readOnly: ReadOnly_,
15641
                                        isGrid: true,
15642
                                        fieldTarget: targetField_,
15643
                                        fieldValue: fieldValue_,
15644
                                        isGrid: true,
15645
                                        id: tableName + rec.FieldName,
15646
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15647
                                        triggerCls: 'x-form-search-trigger',
15648
                                        vtype: 'alphanum', // disable space
15649
                                        nameTable: rec.TableName,
15650
                                        fieldGrid: rec.FieldName,
15651
                                        LookupFunction: rec.LookupFunction,
15652
                                        listeners: {
15653
                                            change: function (val) {
15654
                                                var custumFunc = rec.SelectFunction;
15655
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15656
                                                    Ext.Ajax.request({
15657
                                                        async: false,
15658
                                                        method: 'POST',
15659
                                                        url: '/UserControl/GetStore',
15660
                                                        params: {
15661
                                                            tableName: 'PCMFUNC',
15662
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15663
                                                        },
15664
                                                        success: function (response) {
15665
                                                            var results = Ext.decode(response.responseText);
15666
                                                            data_ = results.data[0];
15667
                                                            if (data_ != undefined) {
15668
                                                                custumFunc = data_.FunctionCode;
15669
                                                            }
15670
                                                        }
15671
                                                    });
15672
                                                }
15673
                                                if (custumFunc) {
15674
                                                    eval(custumFunc)
15675
                                                }
15676
                                            }
15677
                                        }
15678
                                    }
15679
                                });
15680
                            } else if (rec.SearchType == '3') {
15681
                                cols.push({
15682
                                    text: rec.HeaderTitle,
15683
                                    hidden: Hidden_,
15684
                                    dataIndex: rec.FieldName,
15685
                                    filter: {
15686
                                        itemDefaults: {
15687
                                            emptyText: 'Search for...'
15688
                                        }
15689
                                    },
15690
                                    editor: {
15691
                                        allowBlank: null_,
15692
                                        // xtype: 'minovalookuptreePopup',
15693
                                        xtype: 'MinovaLookupTree',
15694
                                        readOnly: ReadOnly_,
15695
                                        id: tableName + rec.FieldName,
15696
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15697
                                        triggerCls: 'x-form-search-trigger',
15698
                                        vtype: 'alphanum', // disable space
15699
                                        treeSructure: rec.SearchFunction, //'O-O-P',
15700
                                        objClassValue: rec.ParamCombo, //'O',
15701
                                        nameTable: rec.TableName,
15702
                                        fieldGrid: rec.FieldName,
15703
                                        listeners: {
15704
                                            change: function (val) {
15705
                                                var custumFunc = rec.SelectFunction;
15706
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15707
                                                    Ext.Ajax.request({
15708
                                                        async: false,
15709
                                                        method: 'POST',
15710
                                                        url: '/UserControl/GetStore',
15711
                                                        params: {
15712
                                                            tableName: 'PCMFUNC',
15713
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15714
                                                        },
15715
                                                        success: function (response) {
15716
                                                            var results = Ext.decode(response.responseText);
15717
                                                            data_ = results.data[0];
15718
                                                            if (data_ != undefined) {
15719
                                                                custumFunc = data_.FunctionCode;
15720
                                                            }
15721
                                                        }
15722
                                                    });
15723
                                                }
15724
                                                if (custumFunc) {
15725
                                                    eval(custumFunc)
15726
                                                }
15727
                                            }
15728
                                        }
15729
                                    }
15730
                                });
15731
                            } 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) {
15732
                                var triger = (rec.TriggerCombo).split('&');
15733
                                var targetField_ = triger[0];
15734
                                var fieldValue_ = triger[0];
15735
                                cols.push({
15736
                                    text: rec.HeaderTitle,
15737
                                    hidden: Hidden_,
15738
                                    dataIndex: rec.FieldName,
15739
                                    filter: {
15740
                                        itemDefaults: {
15741
                                            emptyText: 'Search for...'
15742
                                        }
15743
                                    },
15744
                                    editor: {
15745
                                        allowBlank: null_,
15746
                                        xtype: 'lookupemployee',
15747
                                        readOnly: ReadOnly_,
15748
                                        isGrid: true,
15749
                                        fieldTarget: targetField_,
15750
                                        fieldValue: fieldValue_,
15751
                                        isGrid: true,
15752
                                        id: tableName + rec.FieldName,
15753
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15754
                                        triggerCls: 'x-form-search-trigger',
15755
                                        vtype: 'alphanum', // disable space
15756
                                        nameTable: rec.TableName,
15757
                                        fieldGrid: rec.FieldName,
15758
                                        listeners: {
15759
                                            change: function (val) {
15760
                                                var custumFunc = rec.SelectFunction;
15761
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15762
                                                    Ext.Ajax.request({
15763
                                                        async: false,
15764
                                                        method: 'POST',
15765
                                                        url: '/UserControl/GetStore',
15766
                                                        params: {
15767
                                                            tableName: 'PCMFUNC',
15768
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15769
                                                        },
15770
                                                        success: function (response) {
15771
                                                            var results = Ext.decode(response.responseText);
15772
                                                            data_ = results.data[0];
15773
                                                            if (data_ != undefined) {
15774
                                                                custumFunc = data_.FunctionCode;
15775
                                                            }
15776
                                                        }
15777
                                                    });
15778
                                                }
15779
                                                if (custumFunc) {
15780
                                                    eval(custumFunc)
15781
                                                }
15782
                                            }
15783
                                        }
15784
                                    }
15785
                                });
15786
                            } else if (rec.SearchType == '4' && isLookup != true) {
15787
                                cols.push({
15788

    
15789
                                    text: rec.HeaderTitle,
15790
                                    hidden: Hidden_,
15791
                                    dataIndex: rec.FieldName,
15792
                                    filter: {
15793
                                        itemDefaults: {
15794
                                            emptyText: 'Search for...'
15795
                                        }
15796
                                    },
15797
                                    editor: {
15798
                                        allowBlank: null_,
15799
                                        xtype: 'lookupemployee',
15800
                                        readOnly: ReadOnly_,
15801
                                        isGrid: true,
15802
                                        fieldTarget: targetField_,
15803
                                        fieldValue: fieldValue_,
15804
                                        isGrid: true,
15805
                                        id: tableName + rec.FieldName,
15806
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15807
                                        triggerCls: 'x-form-search-trigger',
15808
                                        vtype: 'alphanum', // disable space
15809
                                        nameTable: rec.TableName,
15810
                                        fieldGrid: rec.FieldName,
15811
                                        listeners: {
15812
                                            change: function (val) {
15813
                                                var custumFunc = rec.SelectFunction;
15814
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15815
                                                    Ext.Ajax.request({
15816
                                                        async: false,
15817
                                                        method: 'POST',
15818
                                                        url: '/UserControl/GetStore',
15819
                                                        params: {
15820
                                                            tableName: 'PCMFUNC',
15821
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15822
                                                        },
15823
                                                        success: function (response) {
15824
                                                            var results = Ext.decode(response.responseText);
15825
                                                            data_ = results.data[0];
15826
                                                            if (data_ != undefined) {
15827
                                                                custumFunc = data_.FunctionCode;
15828
                                                            }
15829
                                                        }
15830
                                                    });
15831
                                                }
15832
                                                if (custumFunc) {
15833
                                                    eval(custumFunc)
15834
                                                }
15835
                                            }
15836
                                        }
15837
                                    }
15838
                                });
15839
                            } else {
15840
                                cols.push({
15841
                                    text: rec.HeaderTitle,
15842
                                    hidden: Hidden_,
15843
                                    dataIndex: rec.FieldName,
15844
									editable :ReadOnly_,
15845
									flex: 1,									
15846
                                    filter: {
15847
                                        itemDefaults: {
15848
                                            emptyText: 'Search for...'
15849
                                        }
15850
                                    },
15851
                                    editor: {
15852
                                        allowBlank: null_,
15853
                                        xtype: 'textfield',
15854
                                        readOnly: ReadOnly_,
15855
                                        id: tableName + rec.FieldName,
15856
                                        nameTable: rec.TableName,
15857
                                        fieldGrid: rec.FieldName,
15858
                                        listeners: {
15859
                                            change: function (val) {
15860
                                                var custumFunc = null;
15861
                                                Ext.Ajax.request({
15862
                                                    async: false,
15863
                                                    method: 'POST',
15864
                                                    url: '/UserControl/GetStore',
15865
                                                    params: {
15866
                                                        tableName: 'SDATATABLEFIELD',
15867
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
15868
                                                    },
15869
                                                    success: function (response) {
15870
                                                        var results = Ext.decode(response.responseText);
15871
                                                        data_ = results.data[0];
15872
                                                        if (data_ != undefined) {
15873
                                                            custumFunc = data_.SelectFunction;
15874
                                                            
15875
                                                        }
15876
                                                    }
15877
                                                });
15878
                                                if (custumFunc) {
15879
                                                    eval(custumFunc)
15880
                                                }
15881
                                            }
15882
                                        }
15883
                                    }
15884
                                });			
15885
                            }
15886
                            break
15887
                    }
15888
                } else {
15889
                    cols.push({
15890
                        text: rec.HeaderTitle,
15891
                        hidden: Hidden_,
15892
                        dataIndex: rec.FieldName,
15893
                        hidden: true,
15894
                        editor: {
15895
                            allowBlank: true,
15896
                            xtype: 'textfield',
15897
                            readOnly: ReadOnly_,
15898
                            id: tableName + rec.FieldName,
15899
                            nameTable: rec.TableName,
15900
                            fieldGrid: rec.FieldName,
15901
                        },
15902
                        filter: {
15903
                            itemDefaults: {
15904
                                emptyText: 'Search for...'
15905
                            }
15906
                        }
15907
                    });
15908
                }
15909
            });
15910
        };
15911
        addData = addData + "}";
15912
        Ext.applyIf(me, {
15913

    
15914
            items: [{
15915
                xtype: 'grid',
15916
                id: gridName,
15917
                name: gridName,
15918
                height: height,
15919
                autoHeight: true,
15920
                //store: 'gridStore',
15921
                autoScroll: true,
15922
				
15923
                store: Ext.create('Ext.data.Store', {
15924
                    storeId: storeID,
15925
                    fields: fieldStore,
15926
                    proxy: {
15927
                        method: 'POST',
15928
                        type: 'ajax',
15929
                        url: '',
15930
                        reader: {
15931
                            type: 'json',
15932
                            root: 'data'
15933
                        }
15934
                    }
15935
                }),
15936
                dockedItems: [{
15937
                    xtype: 'toolbar',
15938
                    items: [{
15939
                        text: 'Add',
15940
                        hidden: hide_,
15941
                        name: tableName + 'Add',
15942
                        iconCls: 'fa-plus-circle',
15943
                        style: 'font-family: FontAwesome',
15944
                        handler: function () {
15945
                            var store = Ext.StoreMgr.lookup(storeID)
15946
                            idx = store.getCount();
15947
                            var action = getParam('action');
15948
                            var data = '';
15949
                            var Sequence = 0;
15950
                            if (idx == 0) {
15951
                                Sequence = 1;
15952
                            } else {
15953
                                Sequence = 1 + idx;
15954
                            }
15955

    
15956
                            var seq = 'Sequence';
15957
                            var SequenceValue = Sequence;
15958
                            eval(addData);
15959
                            data[seq] = SequenceValue;
15960

    
15961
                            store.insert(idx, data);
15962
                        }
15963

    
15964
                    }, {
15965
                        text: 'Delete',
15966
                        hidden: hide_,
15967
                        name: tableName + 'DeleteText',
15968
                        iconCls: 'fa-trash-o',
15969
                        style: 'font-family: FontAwesome',
15970
                        //disabled: true
15971
                        handler: function () {
15972
                            var me = this,
15973
                            store = Ext.StoreMgr.lookup(storeID)
15974

    
15975
                            var grid = Ext.getCmp(gridName);
15976

    
15977
                            Ext.MessageBox.show({
15978
                                title: 'Remove tab',
15979
                                msg: "This will remove. Do you want to continue?",
15980
                                buttons: Ext.MessageBox.YESNO,
15981
                                fn: function (choice) {
15982
                                    console.log(choice);
15983
                                    if (choice === 'yes') {
15984
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
15985
                                        if (selection) {
15986
                                            store.remove(selection);
15987
                                        }
15988
                                    }
15989
                                    //delete panel.pendingClose;
15990
                                }
15991
                            });
15992
                        }
15993

    
15994
                    }
15995
                    ]
15996
                }
15997
                ],
15998
                columns: cols,
15999
                selType: checkSelection,
16000
                plugins: {
16001
					type: 'grideditable',
16002
					ptype: 'cellediting',
16003
					clicksToEdit: 1					
16004
                    //ptype: 'rowediting',
16005
                    //pluginId: 'rowEditing',
16006
                    //clicksToEdit: 1,
16007
                    //listeners: {
16008
                        //edit: 'onGridEditorEdit'
16009
                    //}
16010
                }
16011
            }, ]
16012

    
16013
        });
16014

    
16015
        me.callParent(arguments);
16016
    }
16017
});
16018

    
16019
Ext.define('MinovaUtil.MinovaES.Minovatimefield', {
16020
    extend: 'Ext.form.field.Time',
16021
    alias: ['widget.minovatimefield'],
16022
    undefinedText: '&#160;',
16023
    setValue: function (v) {
16024
        hasil = '';
16025
        if (v != this.getValue()) {
16026
            if (v) {
16027
                if (v.length == 4) {
16028

    
16029
                    var h = v.substring(0, 2);
16030
                    var m = v.substring(2, 4)
16031
                    //this.setValue(h +':'+m);
16032
                    hasil = h + ':' + m;
16033
                }
16034
                if (v.length == 5) {
16035
                    this.setValue(v);
16036
                    hasil = v;
16037
                }
16038
            }
16039
            this.setValue(hasil);
16040
        }
16041

    
16042
    },
16043
});
16044

    
16045
Ext.define('MinovaUtil.MinovaES.MinovaFixValueLabel', {
16046
    extend: 'Ext.form.Label',
16047
    alias: ['widget.MinovaFixValueLabel', 'widget.minovafixvaluelabel'],
16048
    anchor: '50%',
16049
    defaultRenderer: function (value) {
16050
        if (typeof(this.store) !== 'object') {
16051
            this.store = Ext.data.StoreManager.lookup(this.store);
16052
        }
16053
        var idx = this.store.findExact('code', value);
16054
        if (this.store.getAt(idx)) {
16055
            var result = this.store.getAt(idx).get('desc');
16056
            value = result ? result : value;
16057
        }
16058
        this.setRawValue(value);
16059

    
16060
    },
16061
    initComponent: function () {
16062
        var me = this;
16063
        var storeData = [];
16064
        var str = me.fixedValue;
16065
        var hasil = str.split('||');
16066
        hasil.forEach(function (h) {
16067
            store_ = h.split('=')
16068
            storeData.push({
16069
                code: store_[0],
16070
                desc: store_[1],
16071

    
16072
            });
16073
        });
16074
        Ext.applyIf(me, {
16075

    
16076
            store: Ext.create('Ext.data.Store', {
16077
                storeId: 'store' + name,
16078
                autoLoad: true,
16079
                data: storeData
16080

    
16081
            }),
16082

    
16083
        });
16084
        me.callParent(arguments);
16085
    }
16086
});
16087

    
16088
Ext.define('MinovaUtil.MinovaES.MinovaComboColumnFixValueLabel', {
16089
    extend: 'Ext.grid.column.Column',
16090
    alias: ['widget.minovacombocolumnfixvalue'],
16091
    initComponent: function () {
16092
        var me = this;
16093
        var storeData = [];
16094
        var str = me.fixedValue;
16095
        var hasil = str.split('||');
16096
        hasil.forEach(function (h) {
16097
            store_ = h.split('=')
16098
            storeData.push({
16099
                code: store_[0],
16100
                desc: store_[1],
16101

    
16102
            });
16103
        });
16104
        Ext.applyIf(me, {
16105

    
16106
            store: Ext.create('Ext.data.Store', {
16107
                storeId: 'store' + name,
16108
                autoLoad: true,
16109
                data: storeData
16110

    
16111
            }),
16112

    
16113
        });
16114
        this.callParent(arguments);
16115
    },
16116
    defaultRenderer: function (value) {
16117
        if (typeof(this.store) !== 'object') {
16118
            Ext.data.StoreManager.lookup(this.store).load();
16119
            this.store = Ext.data.StoreManager.lookup(this.store);
16120
        }
16121
        var idx = this.store.findExact('code', value);
16122
        if (this.store.getAt(idx)) {
16123
            var result = this.store.getAt(idx).get('desc');
16124
            value = result ? result : value;
16125
        }
16126
        return value;
16127
    }
16128
});
16129

    
16130
Ext.define('MinovaUtil.MinovaES.MinovaLookupColumn', {
16131
    extend: 'Ext.grid.column.Column',
16132
    alias: ['widget.minovalookupcolumn'],
16133
    initComponent: function () {
16134
        this.callParent(arguments);
16135
    },
16136
    defaultRenderer: function (value) {
16137
        data_ = undefined;
16138
        Ext.Ajax.request({
16139
            async: false,
16140
            method: 'POST',
16141
            url: '/UserControl/GetStore',
16142
            params: {
16143
                tableName: 'PDSCMTABLE',
16144
                param: this.tableName + ',' + value + ',hasil'
16145
            },
16146
            success: function (response) {
16147
                var results = Ext.decode(response.responseText);
16148
                data_ = results.data;
16149
                if (data_ != null) {
16150
                    if (data_.length > 0) {
16151
                        value = value + '-' + data_[0].hasil;
16152
                    }
16153
                }
16154
            }
16155
        });
16156
        return value;
16157
    }
16158
});
16159

    
16160
Ext.define('MinovaUtil.MinovaES.MinovaPMSTreeEditAbleGrid', {
16161
    extend: 'Ext.form.Panel',
16162
    alias: ['widget.MinovaPMSTreeEditAbleGrid', 'widget.Minovapmstreeeditablegrid', 'widget.minovapmstreeeeditablegrid'],
16163
    requires: [
16164
		'Ext.grid.plugin.CellEditing',
16165
		'Ext.grid.Panel',
16166
    ],
16167
    anchor: '100%',
16168
    tableName: undefined,
16169
    apprasalType: undefined,
16170
    empID: undefined,
16171
    hideButton: undefined,
16172
    multiSelect: undefined,
16173
    height: undefined,
16174
    initComponent: function () {
16175
        var me = this;
16176
        var isLookup = me.isLookup;
16177
        var hide_ = false;
16178
        var widthLock = 250;
16179
        var checkSelection = '';
16180
        if (me.hideButton == true) {
16181
            hide_ = true;
16182
        }
16183
        if (me.multiSelect) {
16184
            locking = false;
16185
            checkSelection = 'checkboxmodel';
16186
            widthLock = 40;
16187
        }
16188
        var tableName = me.tableName;
16189
        var cols = [];
16190
        var fieldStore = [];
16191
        var _url = 'GetAllField';
16192
        var hasil = null;
16193
        var height = me.height;
16194
        var storeID = 'store' + me.tableName;
16195
        var gridName = 'grid' + me.tableName;
16196
        if (me.storeName) {
16197
            storeID = me.storeName;
16198
        }
16199
        var empID = me.empID;
16200
        var apprasalType = me.apprasalType;
16201
        var LangID = MinovaUtil.GetLangID();
16202
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
16203
        Ext.Ajax.request({
16204
            async: false,
16205
            method: 'POST',
16206
            url: '/Performance/getFieldPMS',
16207
            params: {
16208
                tableName: 'PDSPMS001',
16209
                _param: parameter
16210
            },
16211
            success: function (response) {
16212
                var results = Ext.decode(response.responseText);
16213
                hasil = Ext.decode(results.data);
16214
            }
16215
        });
16216
        var addData = 'var data={';
16217
        if (hasil.length > 0) {
16218
            Ext.each(hasil, function (rec) {
16219
                fieldStore.push(rec.FieldName)
16220
                if (rec.FieldName != 'Sequence') {
16221
                    addData = addData + rec.FieldName + ":" + "'',";
16222
                }
16223
                var null_ = null;
16224
                var ReadOnly_ = false;
16225
                if (rec.IsPrimaryKey == true) {
16226
                    null_ = false;
16227
                }
16228
                if (rec.IsRequired == true) {
16229
                    null_ = false;
16230
                } else {
16231
                    null_ = true;
16232
                }
16233
                if (rec.ReadOnly == '1') {
16234
                    ReadOnly_ = true;
16235
                }
16236
                var Hidden_ = false;
16237
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
16238
                    Hidden_ = true;
16239
                    null_ = true;
16240
                }
16241
                if (rec.GridView != 0) {
16242
                    if (rec.GridView == 3) {
16243
                        cols.push({
16244
                            xtype: 'treecolumn',
16245
                            text: rec.HeaderTitle,
16246
                            dataIndex: rec.FieldName,
16247
                            hidden: Hidden_,
16248
                            width: 200,
16249
                            sortable: true,
16250
                            filter: {
16251
                                itemDefaults: {
16252
                                    emptyText: 'Search for...'
16253
                                }
16254
                            }
16255
                        });
16256
                    } else {
16257
                        switch (rec.FormatRef) {
16258
                            case "date":
16259
                                cols.push({
16260
                                    xtype: 'minovadatecolumn',
16261
                                    hidden: Hidden_,
16262
                                    text: rec.HeaderTitle,
16263
                                    dataIndex: rec.FieldName,
16264
                                    filter: {
16265
                                        itemDefaults: {
16266
                                            emptyText: 'Search for...',
16267
                                        }
16268
                                    },
16269
                                    editor: {
16270
                                        allowBlank: null_,
16271
                                        xtype: 'datefield',
16272
                                        hideMode: 'visibility',
16273
                                        readOnly: ReadOnly_,
16274
                                        id: tableName + rec.FieldName,
16275
                                        fieldGrid: rec.FieldName,
16276
                                        nameTable: rec.TableName,
16277
                                    }
16278
                                });
16279
                                break
16280
                            case "amount":
16281
                                cols.push({
16282
                                    xtype: 'minovacurrancycolumn',
16283
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
16284
                                    text: rec.HeaderTitle,
16285
                                    align: 'right',
16286
                                    dataIndex: rec.FieldName,
16287
                                    hidden: Hidden_,
16288
                                    filter: {
16289
                                        itemDefaults: {
16290
                                            emptyText: 'Search for...'
16291
                                        }
16292
                                    },
16293
                                    editor: {
16294
                                        allowBlank: null_,
16295
                                        xtype: 'minovacurrencyfield',
16296
                                        //renderer: Ext.util.Format.numberRenderer("0,0"),
16297
                                        //vtype: 'validateDecimal',
16298
                                        readOnly: ReadOnly_,
16299
                                        id: tableName + rec.FieldName,
16300
                                        nameTable: rec.TableName,
16301
                                        fieldGrid: rec.FieldName,
16302
                                        fieldStyle: 'text-align:right;',
16303
                                        value: '0',
16304

    
16305
                                    }
16306
                                });
16307
                                break
16308
                            case "time":
16309
                                var DefaultValue = rec.DefaultValue;
16310
                                if (DefaultValue == '') {
16311
                                    defaultValue = '00:00';
16312
                                }
16313
                                cols.push({
16314
                                    //xtype: 'minovatimecolumn',
16315
                                    xtype: 'timefield',
16316
                                    format: 'H:i',
16317
                                    submitFormat: 'Hi',
16318
                                    text: rec.HeaderTitle,
16319
                                    dataIndex: rec.FieldName,
16320
                                    hidden: Hidden_,
16321
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
16322
                                    filter: {
16323
                                        itemDefaults: {
16324
                                            emptyText: 'Search for...'
16325
                                        }
16326
                                    },
16327
                                    editor: {
16328
                                        allowBlank: null_,
16329
                                        xtype: 'timefield',
16330
                                        readOnly: ReadOnly_,
16331
                                        id: tableName + rec.FieldName,
16332
                                        format: 'H:i',
16333
                                        submitFormat: 'Hi',
16334
                                        increment: 5,
16335
                                        value: DefaultValue,
16336
                                        anchor: '100%',
16337
                                        listeners: {}
16338
                                        //renderer: Ext.util.Format.dateRenderer('G:i'),
16339
                                    }
16340
                                });
16341
                                break
16342
                            default:
16343
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
16344
                                    cols.push({
16345
                                        text: rec.HeaderTitle,
16346
                                        dataIndex: rec.FieldName,
16347
                                        width: 100,
16348
                                        filter: {
16349
                                            type: 'string',
16350
                                            itemDefaults: {
16351
                                                emptyText: 'Search for...'
16352
                                            }
16353
                                        }
16354
                                    });
16355
                                } else if (rec.SearchType == '0') {
16356
                                    var valueField = null;
16357
                                    var displayValue = null;
16358
                                    var TableRef = undefined;
16359
                                    if (rec.TableRef != '') {
16360
                                        TableRef = rec.TableRef;
16361

    
16362
                                        Ext.Ajax.request({
16363
                                            async: false,
16364
                                            method: 'POST',
16365
                                            url: '/UserControl/GetStore',
16366
                                            params: {
16367
                                                tableName: 'SDATATABLEFIELD',
16368
                                                param: 'TableName[equal]' + rec.TableRef
16369
                                            },
16370
                                            success: function (response) {
16371
                                                var results = Ext.decode(response.responseText);
16372
                                                data_ = results.data;
16373
                                                if (data_ != undefined) {
16374
                                                    valueField_ = $.grep(data_, function (r) {
16375
                                                        return r.ValueField == '1'
16376
                                                    });
16377
                                                    valueField = valueField_[0].FieldName
16378
                                                    displayValue_ = $.grep(data_, function (r) {
16379
                                                        return r.DisplayValue == '1'
16380
                                                    });
16381
                                                    displayValue = displayValue_[0].FieldName
16382
                                                }
16383
                                            }
16384
                                        });
16385

    
16386
                                        //create Store
16387
                                        Ext.create('Ext.data.Store', {
16388
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16389
                                            autoLoad: true,
16390
                                            proxy: {
16391
                                                method: 'POST',
16392
                                                type: 'ajax',
16393
                                                url: '/UserControl/GetStore',
16394
                                                extraParams: {
16395
                                                    tableName: TableRef,
16396
                                                    param: rec.ParamCombo
16397
                                                },
16398
                                                reader: {
16399
                                                    type: 'json',
16400
                                                    root: 'data',
16401
                                                    totalProperty: 'data[0].TotalCount'
16402
                                                }
16403
                                            }
16404
                                        });
16405
                                    } else if (rec.FixedValue != '') {
16406
                                        var storeData = [];
16407
                                        var str = rec.FixedValue;
16408
                                        var hasil = str.split('||');
16409
                                        hasil.forEach(function (h) {
16410
                                            store_ = h.split('=')
16411
                                            storeData.push({
16412
                                                code: store_[0],
16413
                                                desc: store_[1],
16414

    
16415
                                            });
16416
                                        });
16417

    
16418
                                        valueField = 'code';
16419
                                        displayValue = 'desc';
16420

    
16421
                                        Ext.create('Ext.data.Store', {
16422
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16423
                                            autoLoad: true,
16424
                                            data: storeData
16425
                                        })
16426
                                    }
16427

    
16428
                                    cols.push({
16429
                                        xtype: 'minovacombocolumn',
16430
                                        hidden: Hidden_,
16431
                                        text: rec.HeaderTitle,
16432
                                        dataIndex: rec.FieldName,
16433
                                        valueField: valueField,
16434
                                        displayField: displayValue,
16435
                                        store: 'store_' + me.tableName + rec.FieldName,
16436
                                        editor: {
16437
                                            allowBlank: null_,
16438
                                            xtype: 'combobox',
16439
                                            readOnly: ReadOnly_,
16440
                                            id: tableName + rec.FieldName,
16441
                                            nameTable: rec.TableName,
16442
                                            fieldGrid: rec.FieldName,
16443
                                            valueField: valueField,
16444
                                            displayField: displayValue,
16445

    
16446
                                            store: 'store_' + me.tableName + rec.FieldName,
16447
                                        },
16448
                                        filter: {
16449
                                            type: 'list',
16450
                                            itemDefaults: {
16451
                                                emptyText: 'Search for...'
16452
                                            }
16453
                                        }
16454
                                    });
16455

    
16456
                                } else if (rec.SearchType == '5') {								
16457
                                    var valueField = null;
16458
                                    var displayValue = null;
16459
                                    var AdditionaldisplayValue = null;
16460
                                    var TableRef = undefined;
16461
                                    if (rec.TableRef != '') {
16462
                                        TableRef = rec.TableRef;
16463
                                        Ext.Ajax.request({
16464
                                            async: false,
16465
                                            method: 'POST',
16466
                                            url: '/UserControl/GetStore',
16467
                                            params: {
16468
                                                tableName: 'SDATATABLEFIELD',
16469
                                                param: 'TableName[equal]' + rec.TableRef
16470
                                            },
16471
                                            success: function (response) {
16472
                                                var results = Ext.decode(response.responseText);
16473
                                                data_ = results.data;
16474
                                                if (data_ != undefined) {
16475
                                                    valueField_ = $.grep(data_, function (r) {
16476
                                                        return r.ValueField == '1'
16477
                                                    });
16478
                                                    if (valueField_.length > 0) {
16479
                                                        valueField = valueField_[0].FieldName
16480
                                                    }
16481

    
16482
                                                    displayValue_ = $.grep(data_, function (r) {
16483
                                                        return r.DisplayValue == '1' || r.DisplayValue == '2'
16484
                                                    });
16485
                                                    if (displayValue_.length > 0) {
16486
                                                        displayValue = displayValue_[0].FieldName;
16487
                                                    }
16488
                                                    if (displayValue_.length >= 2) {
16489
                                                        AdditionaldisplayValue = displayValue_[1].FieldName
16490
                                                    }
16491
                                                }
16492
                                            }
16493
                                        });
16494
                                    }
16495
                                    Ext.create('Ext.data.Store', {
16496
                                        storeId: 'store_' + me.tableName + rec.FieldName,
16497
                                        autoLoad: true,
16498
                                        proxy: {
16499
                                            method: 'POST',
16500
                                            type: 'ajax',
16501
                                            url: '/UserControl/GetStoreAuth',
16502
                                            extraParams: {
16503
                                                tableName: TableRef,
16504
                                                param: rec.ParamCombo,
16505
                                                menuId: MinovaUtil.GetMenuID()
16506
                                            },
16507
                                            reader: {
16508
                                                type: 'json',
16509
                                                root: 'data',
16510
                                                totalProperty: 'data[0].TotalCount'
16511
                                            }
16512
                                        }
16513
                                    });
16514
                                    cols.push({
16515
                                        xtype : 'minovacombocolumn',
16516
                                        hidden: Hidden_,
16517
                                        text: rec.HeaderTitle,
16518
                                        dataIndex: rec.FieldName,
16519
                                        valueField : valueField,
16520
                                        displayField : displayValue,
16521
                                        store : 'store_' + me.tableName + rec.FieldName,
16522
                                        tpl: Ext.create('Ext.XTemplate',
16523
                                            '<ul class="x-list-plain"><tpl for=".">',
16524
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16525
                                            '</tpl></ul>'),
16526
                                        displayTpl: Ext.create('Ext.XTemplate',
16527
                                            '<tpl for=".">',
16528
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16529
                                            '</tpl>'),
16530
                                        editor: {
16531
                                            allowBlank: null_,
16532
                                            xtype: 'combobox',
16533
                                            readOnly: ReadOnly_,
16534
                                            id: rec.TableName + rec.FieldName,
16535
                                            nameTable: rec.TableName,
16536
                                            fieldGrid: rec.FieldName,
16537
                                            valueField: valueField,
16538
                                            displayField: displayValue,
16539
                                            store: 'store_' + me.tableName + rec.FieldName,
16540
                                            value: rec.DefaultValue,
16541
                                            tpl: Ext.create('Ext.XTemplate',
16542
                                                '<ul class="x-list-plain"><tpl for=".">',
16543
                                                '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16544
                                                '</tpl></ul>'),
16545
                                            displayTpl: Ext.create('Ext.XTemplate',
16546
                                                '<tpl for=".">',
16547
                                                '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16548
                                                '</tpl>')
16549
                                        },
16550
                                        renderer: function (value) {
16551
                                            var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
16552
                                            var index = store.find(valueField, value);
16553
                                            var val = "";
16554
                                            if (index != -1) {
16555
                                                var rc = store.getAt(index);
16556
                                                //val = rc.get(displayValue);
16557
                                                val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
16558
                                            } else {
16559
                                                val = value;
16560
                                            }
16561
                                            return val;
16562
                                        },
16563
                                        filter: {
16564
                                            type: 'list',
16565
                                            itemDefaults: {
16566
                                                emptyText: 'Search for...'
16567
                                            }
16568
                                        }
16569
                                    });
16570
                                } else if (rec.SearchType == '2') {
16571
                                    var triger = (rec.TriggerCombo).split('$');
16572
                                    var targetField_ = triger[0];
16573
                                    var fieldValue_ = triger[1];
16574
                                    cols.push({
16575
                                        text: rec.HeaderTitle,
16576
                                        hidden: Hidden_,
16577
                                        dataIndex: rec.FieldName,
16578
                                        filter: {
16579
                                            itemDefaults: {
16580
                                                emptyText: 'Search for...'
16581
                                            }
16582
                                        },
16583
                                        editor: {
16584
                                            allowBlank: null_,
16585
                                            xtype: 'minovalookupgrid',
16586
                                            readOnly: ReadOnly_,
16587
                                            isGrid: true,
16588
                                            fieldTarget: targetField_,
16589
                                            fieldValue: fieldValue_,
16590
                                            isGrid: true,
16591
                                            id: tableName + rec.FieldName,
16592
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16593
                                            triggerCls: 'x-form-search-trigger',
16594
                                            vtype: 'alphanum', // disable space
16595
                                            nameTable: rec.TableName,
16596
                                            fieldGrid: rec.FieldName,
16597
                                            listeners: {
16598
                                                change: function (val) {
16599
                                                    var custumFunc = rec.SelectFunction;
16600
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16601
                                                        Ext.Ajax.request({
16602
                                                            async: false,
16603
                                                            method: 'POST',
16604
                                                            url: '/UserControl/GetStore',
16605
                                                            params: {
16606
                                                                tableName: 'PCMFUNC',
16607
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16608
                                                            },
16609
                                                            success: function (response) {
16610
                                                                var results = Ext.decode(response.responseText);
16611
                                                                data_ = results.data[0];
16612
                                                                if (data_ != undefined) {
16613
                                                                    custumFunc = data_.FunctionCode;
16614
                                                                }
16615
                                                            }
16616
                                                        });
16617
                                                    }
16618
                                                    if (custumFunc) {
16619
                                                        eval(custumFunc)
16620
                                                    }
16621
                                                }
16622
                                            }
16623
                                        }
16624
                                    });
16625
                                } else if (rec.SearchType == '3') {
16626
                                    cols.push({
16627
                                        text: rec.HeaderTitle,
16628
                                        hidden: Hidden_,
16629
                                        dataIndex: rec.FieldName,
16630
                                        filter: {
16631
                                            itemDefaults: {
16632
                                                emptyText: 'Search for...'
16633
                                            }
16634
                                        },
16635
                                        editor: {
16636
                                            allowBlank: null_,
16637
                                            // xtype: 'minovalookuptreePopup',
16638
                                            xtype: 'MinovaLookupTree',
16639
                                            readOnly: ReadOnly_,
16640
                                            id: tableName + rec.FieldName,
16641
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16642
                                            triggerCls: 'x-form-search-trigger',
16643
                                            vtype: 'alphanum', // disable space
16644
                                            treeSructure: rec.SearchFunction, //'O-O-P',
16645
                                            objClassValue: rec.ParamCombo, //'O',
16646
                                            nameTable: rec.TableName,
16647
                                            fieldGrid: rec.FieldName,
16648
                                            listeners: {
16649
                                                change: function (val) {
16650
                                                    var custumFunc = rec.SelectFunction;
16651
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16652
                                                        Ext.Ajax.request({
16653
                                                            async: false,
16654
                                                            method: 'POST',
16655
                                                            url: '/UserControl/GetStore',
16656
                                                            params: {
16657
                                                                tableName: 'PCMFUNC',
16658
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16659
                                                            },
16660
                                                            success: function (response) {
16661
                                                                var results = Ext.decode(response.responseText);
16662
                                                                data_ = results.data[0];
16663
                                                                if (data_ != undefined) {
16664
                                                                    custumFunc = data_.FunctionCode;
16665
                                                                }
16666
                                                            }
16667
                                                        });
16668
                                                    }
16669
                                                    if (custumFunc) {
16670
                                                        eval(custumFunc)
16671
                                                    }
16672
                                                }
16673
                                            }
16674
                                        }
16675
                                    });
16676
                                } 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) {
16677
                                    var triger = (rec.TriggerCombo).split('&');
16678
                                    var targetField_ = triger[0];
16679
                                    var fieldValue_ = triger[0];
16680
                                    cols.push({
16681
                                        text: rec.HeaderTitle,
16682
                                        hidden: Hidden_,
16683
                                        dataIndex: rec.FieldName,
16684
                                        filter: {
16685
                                            itemDefaults: {
16686
                                                emptyText: 'Search for...'
16687
                                            }
16688
                                        },
16689
                                        editor: {
16690
                                            allowBlank: null_,
16691
                                            xtype: 'lookupemployee',
16692
                                            readOnly: ReadOnly_,
16693
                                            isGrid: true,
16694
                                            fieldTarget: targetField_,
16695
                                            fieldValue: fieldValue_,
16696
                                            isGrid: true,
16697
                                            id: tableName + rec.FieldName,
16698
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16699
                                            triggerCls: 'x-form-search-trigger',
16700
                                            vtype: 'alphanum', // disable space
16701
                                            nameTable: rec.TableName,
16702
                                            fieldGrid: rec.FieldName,
16703
                                            listeners: {
16704
                                                change: function (val) {
16705
                                                    var custumFunc = rec.SelectFunction;
16706
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16707
                                                        Ext.Ajax.request({
16708
                                                            async: false,
16709
                                                            method: 'POST',
16710
                                                            url: '/UserControl/GetStore',
16711
                                                            params: {
16712
                                                                tableName: 'PCMFUNC',
16713
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16714
                                                            },
16715
                                                            success: function (response) {
16716
                                                                var results = Ext.decode(response.responseText);
16717
                                                                data_ = results.data[0];
16718
                                                                if (data_ != undefined) {
16719
                                                                    custumFunc = data_.FunctionCode;
16720
                                                                }
16721
                                                            }
16722
                                                        });
16723
                                                    }
16724
                                                    if (custumFunc) {
16725
                                                        eval(custumFunc)
16726
                                                    }
16727
                                                }
16728
                                            }
16729
                                        }
16730
                                    });
16731
                                } else if (rec.SearchType == '4' && isLookup != true) {
16732
                                    cols.push({
16733

    
16734
                                        text: rec.HeaderTitle,
16735
                                        hidden: Hidden_,
16736
                                        dataIndex: rec.FieldName,
16737
                                        filter: {
16738
                                            itemDefaults: {
16739
                                                emptyText: 'Search for...'
16740
                                            }
16741
                                        },
16742
                                        editor: {
16743
                                            allowBlank: null_,
16744
                                            xtype: 'lookupemployee',
16745
                                            readOnly: ReadOnly_,
16746
                                            isGrid: true,
16747
                                            fieldTarget: targetField_,
16748
                                            fieldValue: fieldValue_,
16749
                                            isGrid: true,
16750
                                            id: tableName + rec.FieldName,
16751
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16752
                                            triggerCls: 'x-form-search-trigger',
16753
                                            vtype: 'alphanum', // disable space
16754
                                            nameTable: rec.TableName,
16755
                                            fieldGrid: rec.FieldName,
16756
                                            listeners: {
16757
                                                change: function (val) {
16758
                                                    var custumFunc = rec.SelectFunction;
16759
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16760
                                                        Ext.Ajax.request({
16761
                                                            async: false,
16762
                                                            method: 'POST',
16763
                                                            url: '/UserControl/GetStore',
16764
                                                            params: {
16765
                                                                tableName: 'PCMFUNC',
16766
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16767
                                                            },
16768
                                                            success: function (response) {
16769
                                                                var results = Ext.decode(response.responseText);
16770
                                                                data_ = results.data[0];
16771
                                                                if (data_ != undefined) {
16772
                                                                    custumFunc = data_.FunctionCode;
16773
                                                                }
16774
                                                            }
16775
                                                        });
16776
                                                    }
16777
                                                    if (custumFunc) {
16778
                                                        eval(custumFunc)
16779
                                                    }
16780
                                                }
16781
                                            }
16782
                                        }
16783
                                    });
16784
                                } else {
16785
                                    cols.push({
16786
                                        text: rec.HeaderTitle,
16787
                                        hidden: Hidden_,
16788
                                        dataIndex: rec.FieldName,
16789
                                        filter: {
16790
                                            itemDefaults: {
16791
                                                emptyText: 'Search for...'
16792
                                            }
16793
                                        },
16794
                                        editor: {
16795
                                            allowBlank: null_,
16796
                                            xtype: 'textfield',
16797
                                            readOnly: ReadOnly_,
16798
                                            id: tableName + rec.FieldName,
16799
                                            nameTable: rec.TableName,
16800
                                            fieldGrid: rec.FieldName,
16801
                                            listeners: {
16802
                                                change: function (val) {
16803
                                                    var custumFunc = null;
16804
                                                    Ext.Ajax.request({
16805
                                                        async: false,
16806
                                                        method: 'POST',
16807
                                                        url: '/UserControl/GetStore',
16808
                                                        params: {
16809
                                                            tableName: 'SDATATABLEFIELD',
16810
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
16811
                                                        },
16812
                                                        success: function (response) {
16813
                                                            var results = Ext.decode(response.responseText);
16814
                                                            data_ = results.data[0];
16815
                                                            if (data_ != undefined) {
16816
                                                                custumFunc = data_.SelectFunction;
16817
                                                                //console.log(data_)
16818
                                                            }
16819
                                                        }
16820
                                                    });
16821
                                                    if (custumFunc) {
16822
                                                        eval(custumFunc)
16823
                                                    }
16824
                                                }
16825
                                            }
16826
                                        }
16827
                                    });
16828
                                }
16829
                                break
16830
                        }
16831
                    }
16832
                } else {
16833
                    cols.push({
16834
                        text: rec.HeaderTitle,
16835
                        hidden: Hidden_,
16836
                        dataIndex: rec.FieldName,
16837
                        hidden: true,
16838
                        editor: {
16839
                            allowBlank: true,
16840
                            xtype: 'textfield',
16841
                            readOnly: ReadOnly_,
16842
                            id: tableName + rec.FieldName,
16843
                            nameTable: rec.TableName,
16844
                            fieldGrid: rec.FieldName,
16845
                        },
16846
                        filter: {
16847
                            itemDefaults: {
16848
                                emptyText: 'Search for...'
16849
                            }
16850
                        }
16851
                    });
16852
                }
16853
            })
16854
        }
16855
        addData = addData + "}";
16856

    
16857
        cols.push({
16858
            text: 'Action',
16859
            width: 100,
16860
            xtype: 'actioncolumn',
16861
            tooltip: 'View Data',
16862
            name: 'Action',
16863
            itemId: 'Action',
16864
            align: 'center',
16865
            iconCls: 'fa-edit',
16866
            renderer: function (value, metadata, record) {
16867
                metadata.tdStyle = 'font-family: FontAwesome'
16868
            },
16869
            handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
16870
                var main_ = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
16871
                this.fireEvent("onEditClick");
16872
            }
16873
        });
16874

    
16875
        Ext.applyIf(me, {
16876

    
16877
            items: [{
16878
                xtype: 'treepanel',
16879
                id: gridName,
16880
                name: gridName,
16881
                height: height,
16882
                width: 'fit',
16883
                autoHeight: true,
16884
                //store: 'gridStore',
16885
                autoLoad: false,
16886
                autoScroll: true,
16887
                useArrows: true,
16888
                animate: false,
16889
                rootVisible: false,
16890
                plugins: [
16891
                    Ext.create('Ext.grid.plugin.CellEditing', {
16892
                        clicksToEdit: 2
16893
                    })
16894
                ],
16895
                root: {
16896
                    expanded: true,
16897
                    nodeType: 'async',
16898
                    ext: 'Favorites',
16899
                    id: 'null'
16900
                },
16901
                columns: cols,
16902
                //selType: 'rowmodel',
16903
            }
16904
            ]
16905

    
16906
        });
16907

    
16908
        me.callParent(arguments);
16909
    }
16910
});
16911
/*Add by Taufan ( Tab List MasterData For ERP )*/
16912
Ext.define('MinovaUtil.MinovaES.MinovaTabListMasterData', {
16913
    extend: 'Ext.tab.Panel',
16914
    alias: ['widget.masterdatatablist'],
16915
    moduleType: undefined,
16916
    tablenameheader: undefined,
16917
    langId: undefined,
16918
    param: undefined,
16919
    layout: 'fit',
16920
    name: 'panelTab',
16921
    id: 'mainTab',    
16922
    initComponent: function () {
16923
        var me = this;
16924
        var hasil = null;
16925
        var action = "0";
16926
        var _items = [];
16927
        var act = getParam("action"); console.log(act);
16928
        if (act == 'add') {
16929
            action = '0';
16930
        }
16931
        if (act == 'edit') {
16932
            action = '1';
16933
        }
16934
        if (act == 'view') {
16935
            action = '1';
16936
        }
16937
        if (act == 'copy') {
16938
            action = '0';
16939
        }
16940
        Ext.Ajax.request({
16941
            async: false,
16942
            method: 'POST',
16943
            url: '/UserControl/GetStore',
16944
            params: {
16945
                tableName: 'PCMEPMDLIST',
16946
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
16947
            },
16948
            success: function (response) {
16949
                var results = Ext.decode(response.responseText);
16950
                hasil = results.data;                
16951
            }
16952
        });
16953
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
16954
        if (hasil.length > 0) {
16955
            Ext.each(hasil, function (rec) {
16956
                if (rec.LayoutType == "L004") { // L004=Custom
16957
                    var pnl = Ext.create(rec.CustomLayout, {
16958
                        title: rec.LabelName,
16959
                        tableName: rec.TableName,
16960
                        height: 450,
16961
                        name: 'panelTab' + rec.TableName,
16962
                        tbl: rec.TableName,
16963
                        layoutType: rec.LayoutType
16964
                    });
16965
                    _items.push(pnl)
16966
                } else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
16967
                    _items.push({
16968
                        xtype: 'panel',
16969
                        title: rec.LabelName,
16970
                        name: 'panelTab' + rec.TableName,
16971
                        tbl: rec.TableName,
16972
                        layoutType: rec.LayoutType,
16973
                        items: [{
16974
                            xtype: 'minovagrid1',
16975
                            height: 450,
16976
                            tableName: rec.TableName,
16977
                            storename: 'store' + rec.TableName,
16978
                            pagesize: 25,
16979
                            name: 'GRID' + rec.TableName,
16980
                            margin: '0 0 10 0',
16981
                            autoLoad: false,
16982
                            tbar: [{
16983
                                xtype: 'button',
16984
                                text: 'Action',
16985
                                name: 'actionGrid' + rec.TableName,
16986
                                menu: [{
16987
                                    text: 'Add',
16988
                                    name: 'add' + rec.TableName,
16989
                                    tbl: rec.TableName,
16990
                                    style: 'font-family: FontAwesome',
16991
                                    iconCls: 'fa-plus-circle',
16992
                                    handler: function () {
16993
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16994
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16995
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16996
                                        var keyField = getParam("KeyID");
16997
                                        var keyValue = getParam("KeyValue");
16998
                                        frmDisplay.reset();
16999
                                        frmForm.reset();
17000
                                        var idseq = 0;
17001
										if (keyValue=='null'){
17002
											keyValue=Ext.ComponentQuery.query('MinovaHeadermdLogistic')[0].items.items[0].items.items[0].value;
17003
										}											
17004
                                        var params = {
17005
                                            apiController: 'api/Devt',
17006
                                            methodName: 'GetLastSeqID',
17007
                                            parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
17008
                                        };
17009
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17010
                                            var result = Ext.decode(xhr.responseText);
17011
                                            var r = Ext.decode(result.data);
17012
                                            idseq = r.data + 1;
17013
                                            frmForm.getForm().findField(keyField).setValue(keyValue);
17014
                                            frmForm.getForm().findField("SeqID").setValue(idseq);
17015
                                        });
17016
                                        frmDisplay.setHidden(true);
17017
                                        frmForm.setHidden(false);
17018
                                        grdPanel.setHidden(true);
17019
                                        action = "0";
17020
                                    }
17021
                                }, {
17022
                                    text: 'Copy',
17023
                                    name: 'copy' + rec.TableName,
17024
                                    tbl: rec.TableName,
17025
                                    iconCls: 'fa-copy',
17026
                                    style: 'font-family: FontAwesome',
17027
                                    handler: function () {
17028
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17029
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17030
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17031
                                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
17032
                                        var keyField = getParam("KeyID");
17033
                                        if (dtrec) {
17034
                                            frmDisplay.reset();
17035
                                            frmForm.reset();
17036
                                            frmForm.getForm().setValues(dtrec.data);
17037
                                            frmDisplay.setHidden(true);
17038
                                            frmForm.setHidden(false);
17039
                                            grdPanel.setHidden(true);
17040
                                            action = "0";
17041
                                            frmForm.getForm().findField(keyField).setValue("");
17042
                                        }
17043
                                    }
17044
                                }, {
17045
                                    text: 'Edit',
17046
                                    name: 'edit' + rec.TableName,
17047
                                    tbl: rec.TableName,
17048
                                    iconCls: 'fa-edit',
17049
                                    style: 'font-family: FontAwesome',
17050
                                    handler: function () {
17051
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17052
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17053
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17054
                                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
17055
                                        if (dtrec) {
17056
                                            frmDisplay.reset();
17057
                                            frmForm.reset();
17058
                                            frmForm.getForm().setValues(dtrec.data);
17059
                                            frmDisplay.setHidden(true);
17060
                                            frmForm.setHidden(false);
17061
                                            grdPanel.setHidden(true);
17062
                                            me.action = "1";
17063
                                        }
17064
                                    }
17065
                                }
17066
                                ]
17067
                            }, {
17068
                                xtype: 'tbfill'
17069
                            }, {
17070
                                text: 'Clear Filters',
17071
                                tooltip: 'Clear all filters',
17072
                                name: 'clearbtn',
17073
                                handler: function () {}
17074
                            }
17075
                            ],
17076
                            dockedItems: [{
17077
                                xtype: 'pagingtoolbar',
17078
                                store: 'store' + rec.TableName,
17079
                                dock: 'bottom',
17080
                                pageSize: me.pagesize,
17081
                                displayInfo: true
17082
                            }
17083
                            ],
17084
                            listeners: {
17085
                                'itemdblclick': function (me, record, item, index, e, eOpts) {
17086
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17087
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17088
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17089
                                    frmDisplay.reset();
17090
                                    frmForm.reset();
17091
                                    frmDisplay.getForm().setValues(record.data);
17092
                                    frmForm.getForm().setValues(record.data);
17093
                                    frmDisplay.setHidden(false);
17094
                                    frmForm.setHidden(true);
17095
                                    grdPanel.setHidden(true);
17096
                                    me.action = "1"; console.log('edit3');
17097
                                }
17098
                            }
17099
                        }, {
17100
                            xtype: 'minovaform',
17101
                            name: 'DISPLAY' + rec.TableName,
17102
                            id: 'DISPLAY' + rec.TableName,
17103
                            itemId: 'DISPLAY' + rec.TableName,
17104
                            tableName: rec.TableName,
17105
                            isDisplay: true,
17106
                            hidden: true,
17107
                            buttons: [{
17108
                                text: 'Edit',
17109
                                name: 'editDISPLAY' + rec.TableName,
17110
                                iconCls: 'fa-edit',
17111
                                style: 'font-family: FontAwesome',
17112
                                handler: function () {
17113
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17114
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17115
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17116
                                    frmDisplay.setHidden(true);
17117
                                    frmForm.setHidden(false);
17118
                                    grdPanel.setHidden(true);
17119
                                }
17120
                            }, {
17121
                                text: 'Cancel',
17122
                                name: 'cancelDISPLAY' + rec.TableName,
17123
                                iconCls: 'fa-reply',
17124
                                style: 'font-family: FontAwesome',
17125
                                handler: function () {
17126
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17127
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17128
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17129
                                    frmDisplay.setHidden(true);
17130
                                    frmForm.setHidden(true);
17131
                                    grdPanel.setHidden(false);
17132
                                    grdPanel.getStore().reload();
17133
                                }
17134
                            }
17135
                            ]
17136
                        }, {
17137
                            xtype: 'minovaform',
17138
                            name: 'FORM' + rec.TableName,
17139
                            id: 'FORM' + rec.TableName,
17140
                            itemId: 'FORM' + rec.TableName,
17141
                            tableName: rec.TableName,
17142
                            isDisplay: false,
17143
                            hidden: true,
17144
                            buttons: [{
17145
                                text: 'Save',
17146
                                name: 'saveFORM' + rec.TableName,
17147
                                iconCls: 'fa-save',
17148
                                style: 'font-family: FontAwesome',
17149
                                handler: function () {
17150
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17151
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17152
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17153
                                    var frm = frmForm.getForm(); console.log('save1');
17154
                                    console.log(frmForm);
17155
                                    if (frm.isValid()) {
17156
                                        var keyField = getParam("KeyID");
17157
                                        var table = rec.TableName;
17158
                                        var data = Ext.encode(frmForm.getValues());
17159
                                        var token = MinovaUtil.SESSIONS.Token;
17160
                                        var params = {
17161
                                            apiController: 'api/Devt',
17162
                                            methodName: 'SaveTableMaster',
17163
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17164
                                        };
17165
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17166
                                            var result = Ext.decode(xhr.responseText);
17167
                                            var r = Ext.decode(result.data);
17168
                                            if (r.success) {
17169
                                                frmDisplay.setHidden(true);
17170
                                                frmForm.setHidden(true);
17171
                                                grdPanel.setHidden(false);
17172
                                                grdPanel.getStore().reload();
17173
                                                MinovaMessage('Not Null', '000006', '', 'S');
17174
                                            } else {
17175
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17176
                                            }
17177
                                        });
17178
                                    }
17179
                                }
17180
                            }, {
17181
                                text: 'Delete',
17182
                                name: 'deleteFORM' + rec.TableName,
17183
                                iconCls: 'fa-trash-o',
17184
                                style: 'font-family: FontAwesome ',                                
17185
                                handler: function () {
17186
                                    alert('Delete Function');
17187
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17188
                                        if (respone == "yes") {
17189
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17190
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17191
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17192
                                            var frm = frmForm.getForm();
17193
                                            if (frm.isValid()) {
17194
                                                var keyField = getParam("KeyID");
17195
                                                var table = rec.TableName;
17196
                                                var data = Ext.encode(frmForm.getValues());
17197
                                                var token = MinovaUtil.SESSIONS.Token;
17198
                                                action = "2";
17199
                                                var params = {
17200
                                                    apiController: 'api/Devt',
17201
                                                    methodName: 'SaveTableMaster',
17202
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17203
                                                };
17204
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17205
                                                    var result = Ext.decode(xhr.responseText);
17206
                                                    var r = Ext.decode(result.data);
17207
                                                    if (r.success) {
17208
                                                        frmDisplay.setHidden(true);
17209
                                                        frmForm.setHidden(true);
17210
                                                        grdPanel.setHidden(false);
17211
                                                        grdPanel.getStore().reload();
17212
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17213
                                                    } else {
17214
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17215
                                                    }
17216
                                                });
17217
                                            }
17218
                                        }
17219
                                    });
17220
                                }
17221
                            }, {
17222
                                text: 'Cancel',
17223
                                name: 'cancelFORM' + rec.TableName,
17224
                                iconCls: 'fa-reply',
17225
                                style: 'font-family: FontAwesome',
17226
                                handler: function () {
17227
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17228
                                        if (respone == "yes") {
17229
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17230
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17231
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17232
                                            frmDisplay.setHidden(true);
17233
                                            frmForm.setHidden(true);
17234
                                            grdPanel.setHidden(false);
17235
                                            grdPanel.getStore().reload();
17236
                                        }
17237
                                    });
17238
                                }
17239
                            }
17240
                            ]
17241
                        }
17242
                        ]
17243
                    });
17244
                } else if (rec.LayoutType == "L005") { // Grid View Only
17245
                    _items.push({
17246
                        xtype: 'panel',
17247
                        title: rec.LabelName,
17248
                        name: 'panelTab' + rec.TableName,
17249
                        tbl: rec.TableName,
17250
                        layoutType: rec.LayoutType,
17251
                        items: [{
17252
                            xtype: 'minovagrid1',
17253
                            height: 450,
17254
                            tableName: rec.TableName,
17255
                            storename: 'store' + rec.TableName,
17256
                            pagesize: 25,
17257
                            name: 'GRID' + rec.TableName,
17258
                            margin: '0 0 10 0',
17259
                            autoLoad: false,
17260
                            tbar: [{
17261
                                xtype: 'tbfill'
17262
                            }, {
17263
                                text: 'Clear Filters',
17264
                                tooltip: 'Clear all filters',
17265
                                name: 'clearbtn',
17266
                                handler: function () {}
17267
                            }
17268
                            ],
17269
                            dockedItems: [{
17270
                                xtype: 'pagingtoolbar',
17271
                                store: 'store' + rec.TableName,
17272
                                dock: 'bottom',
17273
                                pageSize: me.pagesize,
17274
                                displayInfo: true
17275
                            }
17276
                            ]
17277
                        }
17278
                        ]
17279
                    });
17280
                } else { // L001=Default Form Only
17281
				//saswanto 25MEI2022  BARCODE AND QRCODE START
17282
				var tbblename =rec.TableName;
17283
					if (tbblename == "PMDAST0002"){
17284
                    _items.push({
17285
                        xtype: 'panel',
17286
                        title: rec.LabelName,
17287
                        name: 'panelTab' + rec.TableName,
17288
                        tbl: rec.TableName,
17289
                        layoutType: rec.LayoutType,
17290
                        items: [{
17291
                            xtype: 'minovaform',
17292
                            name: 'DISPLAY' + rec.TableName,
17293
                            id: 'DISPLAY' + rec.TableName,
17294
                            itemId: 'DISPLAY' + rec.TableName,
17295
                            tableName: rec.TableName,
17296
                            isDisplay: true,
17297
                            hidden: false,
17298
                            buttons: [{
17299
                                text: 'Create QR Code',
17300
                                name: 'editDISPLAY' + rec.TableName,
17301
                                iconCls: 'fa-edit',
17302
                                style: 'font-family: FontAwesome',
17303
                                handler: function () {
17304
									var myfrmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17305
									var asetid=myfrmForm.getValues().AssetID;
17306
									var asetdesc=myfrmForm.getValues().AssetName;	
17307
									var ExternalID=myfrmForm.getValues().ExternalID;									
17308
									Ext.widget('window', {
17309
										width: 600,
17310
										height: 600,
17311
										padding: 5,
17312
										title: 'QR Code Perview',
17313
										html: '<div id="BarCodePrint" style=" display: block;text-align: center;margin-left: auto;margin-right: auto;">'+
17314
										'<p>'+ asetdesc +'</p>'+									
17315
										'<div id="qrcode" style=" display: block;text-align: center;margin-left: auto;margin-right: auto;"></div>'+
17316

    
17317
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17318
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17319
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17320
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17321
												
17322
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17323
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17324
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17325
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17326
												'</div>'+												
17327
											  '<div><p><input type="button" id="bt" onclick="printDiv()" value="Print PDF" style=" position: fixed; left: 0; bottom: 0; width: 100%; background-color: #3487c3; color: white; text-align: center; "/></p>'+	
17328
											  '</div>'
17329
									}).show();
17330

    
17331
								  const qrcode = document.getElementById("qrcode");
17332
								  const textInput = document.getElementById(ExternalID);
17333
								  
17334
								  const qr = new QRCode(qrcode);
17335
								  qr.makeCode(ExternalID);
17336
								  
17337
								}
17338
                            },{
17339
                                text: 'Create Barcode',
17340
                                name: 'editDISPLAY' + rec.TableName,
17341
                                iconCls: 'fa-edit',
17342
                                style: 'font-family: FontAwesome',
17343
                                handler: function () {
17344
									var myfrmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17345
									var asetid=myfrmForm.getValues().AssetID;
17346
									var asetdesc=myfrmForm.getValues().AssetName;
17347
									var ExternalID=myfrmForm.getValues().ExternalID;									
17348
									Ext.widget('window', {
17349
										width: 600,
17350
										height: 600,
17351
										padding: 5,
17352
										title: 'Barcode Perview',
17353
										html: '<div id="BarCodePrint" style="text-align: center;">'+
17354
										'<div id="BarCode" style="width:590px;align-items: center; justify-content: center;display: flex;">'+
17355
											  '<img id="barcode3" class="Center">'+
17356
											  '</img></div>'+
17357
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17358
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17359
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17360
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17361
												
17362
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17363
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17364
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17365
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17366
												'</div>'+												
17367
											  '<div><p><input type="button" id="bt" onclick="printDiv()" value="Print PDF" style=" position: fixed; left: 0; bottom: 0; width: 100%; background-color: #3487c3; color: white; text-align: center; "/></p>'+	
17368
											  '</div>'
17369
									}).show();
17370

    
17371
								JsBarcode("#barcode3",ExternalID, {
17372
								  textAlign: "Center",
17373
								  textPosition: "top",
17374
								  font: "FontAwesome",
17375
								  fontOptions: "",
17376
								  fontSize: 20,
17377
								  textMargin: 5,
17378
								  text: asetdesc});
17379
                                }
17380
                            },{
17381
                                text: 'Edit',
17382
                                name: 'editDISPLAY' + rec.TableName,
17383
                                iconCls: 'fa-edit',
17384
                                style: 'font-family: FontAwesome',
17385
                                handler: function () {
17386
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17387
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17388
                                    frmDisplay.setHidden(true);
17389
                                    frmForm.setHidden(false);
17390
                                    me.action = "1"; console.log('edit2');
17391
                                }
17392
                            }, {
17393
                                text: 'Back',
17394
                                name: 'cancelDISPLAY' + rec.TableName,
17395
                                iconCls: 'fa-reply',
17396
                                style: 'font-family: FontAwesome',
17397
								handler: function () {
17398
									window.history.back();
17399
								},
17400
								hidden: false
17401
                            }
17402
                            ]
17403
                        }, {
17404
                            xtype: 'minovaform',
17405
                            name: 'FORM' + rec.TableName,
17406
                            id: 'FORM' + rec.TableName,
17407
                            itemId: 'FORM' + rec.TableName,
17408
                            tableName: rec.TableName,
17409
                            isDisplay: false,
17410
                            hidden: true,
17411
                            buttons: [{
17412
                                text: 'Save',
17413
                                name: 'saveDISPLAY' + rec.TableName,
17414
                                iconCls: 'fa-save',
17415
                                style: 'font-family: FontAwesome',
17416
                                handler: function () {
17417
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17418
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17419

    
17420
									 var headerDisplay =undefined;
17421
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
17422
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
17423
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
17424
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
17425
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
17426
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
17427
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
17428
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
17429
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());
17430
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());											
17431
									}else{
17432
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
17433
									}
17434

    
17435
                                    var frm = frmForm.getForm();
17436
                                    if (frm.isValid()) {
17437
                                                
17438
										
17439
                                        var keyField = getParam("KeyID");
17440
                                        var table = rec.TableName;
17441
                                        var data = Ext.encode(frmForm.getValues());
17442
                                        var token = MinovaUtil.SESSIONS.Token;
17443
										var action=me.action;
17444
										if(action==undefined){action="0"}; console.log('save2');
17445
                                        var params = {
17446
                                            apiController: 'api/Devt',
17447
                                            methodName: 'SaveTableMaster',
17448
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17449
                                        };
17450
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17451
                                            var result = Ext.decode(xhr.responseText);
17452
                                            var r = Ext.decode(result.data);
17453
                                            if (r.success) {
17454
                                                headerDisplay.mask("Loading...");
17455
                                                var idNo = r.data;
17456
                                                frmForm.getForm().findField(keyField).setValue(idNo);
17457
												frmDisplay.getForm().setValues(frmForm.getValues());
17458
                                                headerDisplay.getForm().setValues(frmForm.getValues());
17459
                                                frmDisplay.setHidden(false);
17460
                                                frmForm.setHidden(true);
17461
                                                MinovaMessage('Not Null', '000006', '', 'S');
17462
                                                headerDisplay.unmask();
17463
                                            } else {
17464
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17465
                                            }
17466
                                        });
17467
                                    }
17468
                                }
17469
                            }, {
17470
                                text: 'Delete',
17471
                                name: 'deleteDISPLAY' + rec.TableName,
17472
                                iconCls: 'fa-trash-o',
17473
                                style: 'font-family: FontAwesome',
17474
                                handler: function () {                                    
17475
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17476
                                        if (respone == "yes") {
17477
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17478
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17479
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17480
                                            var frm = frmForm.getForm();
17481
                                            if (frm.isValid()) {
17482
                                                var keyField = getParam("KeyID");
17483
                                                var table = rec.TableName;
17484
                                                var data = Ext.encode(frmForm.getValues());
17485
                                                var token = MinovaUtil.SESSIONS.Token;
17486
                                                action = "2";
17487
                                                var params = {
17488
                                                    apiController: 'api/Devt',
17489
                                                    methodName: 'SaveTableMaster',
17490
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17491
                                                };
17492
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17493
                                                    var result = Ext.decode(xhr.responseText);
17494
                                                    var r = Ext.decode(result.data);
17495
                                                    if (r.success) {
17496
                                                        frmDisplay.setHidden(true);
17497
                                                        frmForm.setHidden(true);
17498
                                                        grdPanel.setHidden(false);
17499
                                                        grdPanel.getStore().reload();
17500
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17501
                                                    } else {
17502
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17503
                                                    }
17504
                                                });
17505
                                            }
17506
                                        }
17507
                                    });
17508
                                }
17509
                            }, {
17510
                                text: 'Cancel',
17511
                                name: 'cancelDISPLAY' + rec.TableName,
17512
                                iconCls: 'fa-reply',
17513
                                style: 'font-family: FontAwesome',
17514
                                handler: function () {
17515
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17516
                                        if (respone == "yes") {
17517
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17518
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17519
                                            frmDisplay.setHidden(false);
17520
                                            frmForm.setHidden(true);
17521
                                        }
17522
                                    });
17523
                                }
17524
                            }
17525
                            ]
17526
                        }
17527
                        ]
17528
                    });					
17529
					}else{
17530
                    _items.push({
17531
                        xtype: 'panel',
17532
                        title: rec.LabelName,
17533
                        name: 'panelTab' + rec.TableName,
17534
                        tbl: rec.TableName,
17535
                        layoutType: rec.LayoutType,
17536
                        items: [{
17537
                            xtype: 'minovaform',
17538
                            name: 'DISPLAY' + rec.TableName,
17539
                            id: 'DISPLAY' + rec.TableName,
17540
                            itemId: 'DISPLAY' + rec.TableName,
17541
                            tableName: rec.TableName,
17542
                            isDisplay: true,
17543
                            hidden: false,
17544
                            buttons: [{
17545
                                text: 'Edit',
17546
                                name: 'editDISPLAY' + rec.TableName,
17547
                                iconCls: 'fa-edit',
17548
                                style: 'font-family: FontAwesome',
17549
                                handler: function () {
17550
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17551
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17552
                                    frmDisplay.setHidden(true);
17553
                                    frmForm.setHidden(false);
17554
                                    me.action = "1"; console.log('edit1');
17555
                                }
17556
                            }, {
17557
                                text: 'Back',
17558
                                name: 'cancelDISPLAY' + rec.TableName,
17559
                                iconCls: 'fa-reply',
17560
                                style: 'font-family: FontAwesome',
17561
								handler: function () {
17562
									window.history.back();
17563
								},
17564
								hidden: false
17565
                            }
17566
                            ]
17567
                        }, {
17568
                            xtype: 'minovaform',
17569
                            name: 'FORM' + rec.TableName,
17570
                            id: 'FORM' + rec.TableName,
17571
                            itemId: 'FORM' + rec.TableName,
17572
                            tableName: rec.TableName,
17573
                            isDisplay: false,
17574
                            hidden: true,
17575
                            buttons: [{
17576
                                text: 'Save',
17577
                                name: 'saveDISPLAY' + rec.TableName,
17578
                                iconCls: 'fa-save',
17579
                                style: 'font-family: FontAwesome',
17580
                                handler: function () {
17581
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17582
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17583
                                    console.log('save3');
17584
									 var headerDisplay =undefined;
17585
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
17586
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
17587
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
17588
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
17589
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
17590
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
17591
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
17592
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
17593
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());
17594
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());											
17595
									}else{
17596
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
17597
									}									
17598
									
17599
                                    var frm = frmForm.getForm();
17600
                                    if (frm.isValid()) {
17601
                                                
17602
										
17603
                                        var keyField = getParam("KeyID");
17604
                                        var table = rec.TableName;
17605
                                        var data = Ext.encode(frmForm.getValues());
17606
                                        var token = MinovaUtil.SESSIONS.Token; console.log(action);
17607
										//var action = me.action; // edit by Tri nwh 20231003
17608
										var meaction = me.action; console.log(meaction);
17609
										//if(action==undefined){action="0"}; // edit by Tri nwh 20231003
17610
										if(meaction!=undefined){action=meaction}; 
17611
                                        var params = {
17612
                                            apiController: 'api/Devt',
17613
                                            methodName: 'SaveTableMaster',
17614
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17615
                                        };
17616
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17617
                                            var result = Ext.decode(xhr.responseText);
17618
                                            var r = Ext.decode(result.data);
17619
                                            if (r.success) {
17620
                                                headerDisplay.mask("Loading...");
17621
                                                var idNo = r.data;
17622
                                                frmForm.getForm().findField(keyField).setValue(idNo);
17623
												frmDisplay.getForm().setValues(frmForm.getValues());
17624
                                                headerDisplay.getForm().setValues(frmForm.getValues());
17625
                                                frmDisplay.setHidden(false);
17626
                                                frmForm.setHidden(true);
17627
                                                MinovaMessage('Not Null', '000006', '', 'S');
17628
                                                headerDisplay.unmask();
17629
                                            } else {
17630
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17631
                                            }
17632
                                        });
17633
                                    }
17634
                                }
17635
                            }, {
17636
                                text: 'Delete',
17637
                                name: 'deleteDISPLAY' + rec.TableName,
17638
                                iconCls: 'fa-trash-o',
17639
                                style: 'font-family: FontAwesome',
17640
                                handler: function () {                                    
17641
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17642
                                        if (respone == "yes") {
17643
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17644
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17645
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17646
                                            var frm = frmForm.getForm();
17647
                                            if (frm.isValid()) {
17648
                                                var keyField = getParam("KeyID");
17649
                                                var table = rec.TableName;
17650
                                                var data = Ext.encode(frmForm.getValues());
17651
                                                var token = MinovaUtil.SESSIONS.Token;
17652
                                                action = "2";
17653
                                                var params = {
17654
                                                    apiController: 'api/Devt',
17655
                                                    methodName: 'SaveTableMaster',
17656
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17657
                                                };
17658
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17659
                                                    var result = Ext.decode(xhr.responseText);
17660
                                                    var r = Ext.decode(result.data);
17661
                                                    if (r.success) {
17662
                                                        frmDisplay.setHidden(true);
17663
                                                        frmForm.setHidden(true);
17664
                                                        grdPanel.setHidden(false);
17665
                                                        grdPanel.getStore().reload();
17666
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17667
                                                    } else {
17668
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17669
                                                    }
17670
                                                });
17671
                                            }
17672
                                        }
17673
                                    });
17674
                                }
17675
                            }, {
17676
                                text: 'Cancel',
17677
                                name: 'cancelDISPLAY' + rec.TableName,
17678
                                iconCls: 'fa-reply',
17679
                                style: 'font-family: FontAwesome',
17680
                                handler: function () {
17681
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17682
                                        if (respone == "yes") {
17683
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17684
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17685
                                            frmDisplay.setHidden(false);
17686
                                            frmForm.setHidden(true);
17687
                                        }
17688
                                    });
17689
                                }
17690
                            }
17691
                            ]
17692
                        }
17693
                        ]
17694
                    });
17695
				  }
17696
                }
17697
            });
17698
        }
17699
			//saswanto 25MEI2022 END
17700
        Ext.applyIf(me, {
17701
            items: _items
17702
        });
17703
        me.callParent(arguments);
17704
    }
17705
});
17706
/*Add by Taufan ( Tab List Doc Transaction For ERP )*/
17707
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTrans', {
17708
    extend: 'Ext.tab.Panel',
17709
    alias: ['widget.doctablist'],
17710
    transType: undefined,
17711
    docType: undefined,
17712
    docNo: undefined,
17713
    langId: undefined,
17714
    param: undefined,
17715
    layout: 'fit',
17716
    name: 'panelTab',
17717
    id: 'mainTab',
17718
    action: undefined,
17719
    initComponent: function () {
17720
        var me = this;
17721
        var documentType = me.docType;
17722
        var transactionType = me.transType;
17723
        var hasil = null;
17724
        var _items = [];
17725
		var formimage = undefined;
17726
        Ext.Ajax.request({
17727
            async: false,
17728
            method: 'POST',
17729
            url: '/UserControl/GetStore',
17730
            params: {
17731
                tableName: 'PCMBSTRANSLIST',
17732
                param: 'TransType[=]' + me.transType + ',' + 'DocType[=]' + me.docType		// add Tri nwh 20240220
17733
            },
17734
            success: function (response) {
17735
                var results = Ext.decode(response.responseText);
17736
                hasil = results.data;
17737
            }
17738
        });
17739
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
17740
        if (hasil.length > 0) {
17741
            Ext.each(hasil, function (rec) {
17742
				if(rec.TableName=="PTRPRODUCTIONHEAD"){
17743
					rec.LabelName=rec.Title;
17744
				}
17745
                if (rec.LayoutType == "L004") { // L004=Custom
17746
					if(rec.TableName =='PTRPRODUCTIONDETAIL'){					
17747
						var pnl = Ext.create(rec.CustomLayout, {
17748
							title: rec.Title,
17749
							name:  'panelTab' + rec.TableName,
17750
							tableName: rec.TableName,
17751
							docType: me.docType,
17752
							transType: me.transType,
17753
							autoScroll: true
17754
						});
17755
						_items.push(pnl)						
17756
					}else{
17757
						var pnl = Ext.create(rec.CustomLayout, {
17758
							title: rec.Title,
17759
							tableName: rec.TableName,
17760
							height: 200,
17761
							name: 'panelTab' + rec.TableName,
17762
							tbl: rec.TableName,
17763
							layoutType: rec.LayoutType
17764
						});
17765
						_items.push(pnl)						
17766
					}
17767

    
17768
                } else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
17769
                    _items.push({
17770
                        xtype: 'panel',
17771
                        title: rec.Title,
17772
                        name: 'panelTab' + rec.TableName,
17773
                        tbl: rec.TableName,
17774
                        layoutType: rec.LayoutType,
17775
                        items: [{
17776
                            xtype: 'docgrid',
17777
                            height: 200,
17778
                            tableName: rec.TableName,
17779
                            docType: me.docType,
17780
                            transType: me.transType,
17781
                            storename: 'store' + rec.TableName,
17782
                            pagesize: 25,
17783
                            name: 'GRID' + rec.TableName,
17784
                            margin: '0 0 10 0',
17785
                            autoLoad: false,
17786
                            tbar: [{
17787
                                xtype: 'button',
17788
                                text: 'Action',
17789
                                name: 'actionGrid' + rec.TableName,
17790
                                menu: [{
17791
                                    text: 'Add',
17792
                                    name: 'add' + rec.TableName,
17793
                                    tbl: rec.TableName,
17794
                                    style: 'font-family: FontAwesome',
17795
                                    iconCls: 'fa-plus-circle',
17796
                                    handler: function () {
17797
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17798
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17799
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17800
                                        frmDisplay.reset();
17801
                                        frmForm.reset();
17802
                                        frmDisplay.setHidden(true);
17803
                                        frmForm.setHidden(false);
17804
                                        grdPanel.setHidden(true);
17805
                                        action = "0";
17806
                                    }
17807
                                }, {
17808
                                    text: 'Delete',
17809
                                    name: 'delete' + rec.TableName,
17810
                                    tbl: rec.TableName,
17811
                                    iconCls: 'fa-trash-o',
17812
                                    style: 'font-family: FontAwesome',
17813
                                    handler: function () {
17814
                                        var me = this;
17815
                                        var store = Ext.StoreMgr.lookup('store' + rec.TableName);
17816
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17817
                                        Ext.MessageBox.show({
17818
                                            title: 'Remove tab',
17819
                                            msg: "This will remove. Do you want to continue?",
17820
                                            buttons: Ext.MessageBox.YESNO,
17821
                                            fn: function (choice) {
17822
                                                console.log(choice);
17823
                                                if (choice === 'yes') {
17824
                                                    var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
17825
                                                    if (selection) {
17826
                                                        store.remove(selection);
17827
                                                    }
17828
                                                }
17829
                                            }
17830
                                        });
17831
                                    }
17832
                                }
17833
                                ]
17834
                            }, {
17835
                                xtype: 'tbfill'
17836
                            }, {
17837
                                text: 'Clear Filters',
17838
                                tooltip: 'Clear all filters',
17839
                                name: 'clearbtn',
17840
                                handler: function () {}
17841
                            }
17842
                            ],
17843
                            dockedItems: [{
17844
                                xtype: 'pagingtoolbar',
17845
                                store: 'store' + rec.TableName,
17846
                                dock: 'bottom',
17847
                                pageSize: me.pagesize,
17848
                                displayInfo: true
17849
                            }
17850
                            ],
17851
                            listeners: {
17852
                                'itemdblclick': function (me, record, item, index, e, eOpts) {
17853
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17854
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17855
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17856
                                    frmDisplay.reset();
17857
                                    frmForm.reset();
17858
                                    frmDisplay.getForm().setValues(record.data);
17859
                                    frmForm.getForm().setValues(record.data);
17860
                                    frmDisplay.setHidden(false);
17861
                                    frmForm.setHidden(true);
17862
                                    grdPanel.setHidden(true);
17863
                                    me.action = "1";
17864
                                }
17865
                            }
17866
                        }, {
17867
                            xtype: 'minovadocform',
17868
                            name: 'DISPLAY' + rec.TableName,
17869
                            id: 'DISPLAY' + rec.TableName,
17870
                            itemId: 'DISPLAY' + rec.TableName,
17871
                            tableName: rec.TableName,
17872
                            docType: me.docType,
17873
                            transType: me.transType,
17874
                            isDisplay: true,
17875
                            hidden: true,
17876
                            buttons: [{
17877
                                text: 'Edit',
17878
                                name: 'editDISPLAY' + rec.TableName,
17879
                                handler: function () {
17880
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17881
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17882
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17883
                                    frmDisplay.setHidden(true);
17884
                                    frmForm.setHidden(false);
17885
                                    grdPanel.setHidden(true);
17886
                                }
17887
                            }, {
17888
                                text: 'Cancel',
17889
                                name: 'cancelDISPLAY' + rec.TableName,
17890
                                handler: function () {
17891
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17892
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17893
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17894
                                    frmDisplay.setHidden(true);
17895
                                    frmForm.setHidden(true);
17896
                                    grdPanel.setHidden(false);
17897
                                    grdPanel.getStore().reload();
17898
                                }
17899
                            }
17900
                            ]
17901
                        }, {
17902
                            xtype: 'minovadocform',
17903
                            name: 'FORM' + rec.TableName,
17904
                            id: 'FORM' + rec.TableName,
17905
                            itemId: 'FORM' + rec.TableName,
17906
                            tableName: rec.TableName,
17907
                            docType: me.docType,
17908
                            transType: me.transType,
17909
                            isDisplay: false,
17910
                            hidden: true,
17911
                            buttons: [{
17912
                                text: 'Submit',
17913
                                name: 'submitFORM' + rec.TableName,
17914
                                handler: function () {
17915
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17916
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17917
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17918
                                    var frm = frmForm.getForm();
17919
                                    if (frm.isValid()) {
17920
                                        var table = rec.TableName;
17921
                                        var data = frmForm.getValues();
17922
                                        var token = MinovaUtil.SESSIONS.Token;
17923
                                        var str = grdPanel.getStore();
17924
                                        var idx = str.getCount();
17925
                                        str.insert(idx, data);
17926
                                        frmDisplay.setHidden(true);
17927
                                        frmForm.setHidden(true);
17928
                                        grdPanel.setHidden(false);
17929
                                    }
17930
                                }
17931
                            }, {
17932
                                text: 'Cancel',
17933
                                name: 'cancelFORM' + rec.TableName,
17934
                                handler: function () {
17935
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17936
                                        if (respone == "yes") {
17937
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17938
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17939
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17940
                                            frmDisplay.setHidden(true);
17941
                                            frmForm.setHidden(true);
17942
                                            grdPanel.setHidden(false);
17943
                                        }
17944
                                    });
17945
                                }
17946
                            }
17947
                            ]
17948
                        }
17949
                        ]
17950
                    });
17951
                } else if (rec.LayoutType == "L005") { // Grid View Only
17952
                    _items.push({
17953
                        xtype: 'panel',
17954
                        title: rec.Title,
17955
                        name: 'panelTab' + rec.TableName,
17956
                        tbl: rec.TableName,
17957
                        layoutType: rec.LayoutType,
17958
                        items: [{
17959
                            xtype: 'docgrid',
17960
                            height: 400,
17961
                            tableName: rec.TableName,
17962
                            docType: me.docType,
17963
                            transType: me.transType,
17964
                            storename: 'store' + rec.TableName,
17965
                            pagesize: 25,
17966
                            name: 'GRID' + rec.TableName,
17967
                            margin: '0 0 10 0',
17968
                            autoLoad: false,
17969
                            tbar: [{
17970
                                xtype: 'tbfill'
17971
                            }, {
17972
                                text: 'Clear Filters',
17973
                                tooltip: 'Clear all filters',
17974
                                name: 'clearbtn',
17975
                                handler: function () {}
17976
                            }
17977
                            ],
17978
                            dockedItems: [{
17979
                                xtype: 'pagingtoolbar',
17980
                                store: 'store' + rec.TableName,
17981
                                dock: 'bottom',
17982
                                pageSize: me.pagesize,
17983
                                displayInfo: true
17984
                            }
17985
                            ]
17986
                        }
17987
                        ]
17988
                    });
17989
                } else if (rec.LayoutType == "L006") {
17990
                    _items.push({
17991
                        xtype: 'panel',
17992
                        title: rec.Title,
17993
                        name: 'panelTab' + rec.TableName,
17994
                        tbl: rec.TableName,
17995
                        layoutType: rec.LayoutType,
17996
                        items: [{
17997
                            xtype: 'docgridcelledit',
17998
                            name: 'CELLGRID' + rec.TableName,
17999
                            tableName: rec.TableName,
18000
                            docType: me.docType,
18001
                            transType: me.transType,
18002
                            docNo: me.docNo,
18003
                            height: 400,
18004
                            hideButton: false,
18005
                            margin: '0 0 10 0'
18006
                        }
18007
                        ]
18008
                    });
18009
                } else if (rec.LayoutType == "L007"&& rec.TableName !='PTRPRODUCTIONITEM') {
18010
                    _items.push({
18011
                        xtype: 'panel',
18012
                        title: rec.Title,
18013
                        name: 'panelTab' + rec.TableName,
18014
                        tbl: rec.TableName,
18015
                        layoutType: rec.LayoutType,
18016
                        items: [{
18017
                            xtype: 'docgridcelleditsum',
18018
                            name: 'CELLGRID' + rec.TableName,
18019
                            tableName: rec.TableName,
18020
                            docType: me.docType,
18021
                            transType: me.transType,
18022
                            docNo: me.docNo,
18023
                            height: 400,
18024
                            hideButton: false,
18025
                            margin: '0 0 10 0'
18026
                        }, {
18027
                            xtype: 'summarydocform',
18028
                            name: 'SUM' + rec.TableName,
18029
                            id: 'SUM' + rec.TableName,
18030
                            itemId: 'SUM' + rec.TableName,
18031
                            tableName: rec.TableName,
18032
                            docType: me.docType,
18033
                            transType: me.transType,
18034
                        }
18035
                        ]
18036
                    });
18037
                }  else if (rec.LayoutType == "L007" && rec.TableName =='PTRPRODUCTIONITEM') {
18038
                    _items.push({
18039
                        xtype: 'panel',
18040
                        title: rec.Title,
18041
                        name: 'panelTab' + rec.TableName,
18042
                        tbl: rec.TableName,
18043
                        layoutType: rec.LayoutType,						
18044
                        items: [{
18045
                            xtype: 'docgridcelleditsum',
18046
                            name: 'CELLGRID' + rec.TableName,
18047
                            tableName: rec.TableName,
18048
                            docType: me.docType,
18049
                            transType: me.transType,
18050
                            docNo: me.docNo,
18051
                            height: 400,
18052
                            hideButton: false,
18053
                            margin: '0 0 10 0'
18054
                        }, {
18055
                            xtype: 'summarydocform',
18056
                            name: 'SUM' + rec.TableName,
18057
                            id: 'SUM' + rec.TableName,
18058
                            itemId: 'SUM' + rec.TableName,
18059
                            tableName: rec.TableName,
18060
                            docType: me.docType,
18061
                            transType: me.transType,
18062
                        }
18063
                        ]
18064
                    });
18065
                } else { // L001=Default Form Only
18066
                    _items.push({
18067
                        xtype: 'panel',
18068
                        title: rec.LabelName,
18069
                        name: 'panelTab' + rec.TableName,
18070
                        tbl: rec.TableName,
18071
                        layoutType: rec.LayoutType,
18072
                        items: [{
18073
                            xtype: 'minovadocform',
18074
                            name: 'DISPLAY' + rec.TableName,
18075
                            id: 'DISPLAY' + rec.TableName,
18076
                            itemId: 'DISPLAY' + rec.TableName,
18077
                            tableName: rec.TableName,
18078
                            docType: me.docType,
18079
                            transType: me.transType,
18080
                            isDisplay: true,
18081
                            hidden: false,
18082
                            buttons: [{
18083
                                text: 'Edit',
18084
                                name: 'editDISPLAY' + rec.TableName,
18085
                                iconCls: 'fa-edit',
18086
                                style: 'font-family: FontAwesome',
18087
                                handler: function () {
18088
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18089
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18090
                                    frmDisplay.setHidden(true);
18091
                                    frmForm.setHidden(false);
18092
									if(rec.TableName=='PTRPRODUCTIONHEAD'){
18093
										Ext.ComponentQuery.query('[name=deleteDISPLAYPTRPRODUCTIONHEAD]')[0].setHidden(true);
18094
									}			
18095
                                    me.action = "1";
18096
                                }
18097
                            }, {
18098
                                text: 'Back',
18099
                                name: 'backDISPLAY' + rec.TableName,
18100
                                iconCls: 'fa-reply',
18101
                                style: 'font-family: FontAwesome',
18102
								hidden: true,
18103
                                handler: function () {
18104
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
18105
                                        if (respone == "yes") {
18106
											MinovaUtil.LockData('CheckUser','CheckUser',5,0,MinovaUtil.SESSIONS.EmployeeID,MinovaUtil.GetMenuID());
18107
											//me.afterrenderTab();
18108
											var pnlSelect = Ext.ComponentQuery.query('[name=DocSelectionJoil]')[0];
18109
											//var tes = Ext.ComponentQuery.query('[name=searchResultInfo]')[0];
18110
											var pnlTransaction = Ext.ComponentQuery.query('[name=DocTransaction]')[0];
18111
											var panelHead = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
18112
											var panelDisplayHead = Ext.ComponentQuery.query('[name=DisplayMainHeaderDocument]')[0];
18113
											var formHead = panelHead.getForm();
18114
											formHead.reset();
18115
											var formHeadDisplay = panelDisplayHead.getForm();
18116
											formHeadDisplay.reset();
18117
											var btnCreate = Ext.ComponentQuery.query('[name=CreateDoc]')[0];
18118
											var btnSave = Ext.ComponentQuery.query('[name=SaveDoc]')[0];
18119
											var btnEdit = Ext.ComponentQuery.query('[name=EditDoc]')[0];
18120
											var btnDelete = Ext.ComponentQuery.query('[name=DeleteDoc]')[0];
18121
											pnlSelect.setHidden(false);
18122
											//tes.setHidden(true);
18123
											pnlTransaction.setHidden(true);
18124
											panelHead.setHidden(false);
18125
											panelDisplayHead.setHidden(true);
18126
                                        }
18127
                                    });
18128
                                }
18129
                            }, {
18130
                                text: 'Cancel',
18131
                                name: 'cancelDISPLAY' + rec.TableName,
18132
                                iconCls: 'fa-reply',
18133
                                style: 'font-family: FontAwesome',
18134
                                hidden: true
18135
                            }
18136
                            ]
18137
                        }, {
18138
                            xtype: 'minovadocform',
18139
                            name: 'FORM' + rec.TableName,
18140
                            id: 'FORM' + rec.TableName,
18141
                            itemId: 'FORM' + rec.TableName,
18142
                            tableName: rec.TableName,
18143
                            docType: me.docType,
18144
                            transType: me.transType,
18145
                            isDisplay: false,
18146
                            hidden: true,
18147
                            buttons: [{
18148
                                text: 'Save',
18149
                                name: 'saveDISPLAY' + rec.TableName,
18150
                                iconCls: 'fa-save',
18151
                                style: 'font-family: FontAwesome',
18152
                                handler: function () {
18153
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18154
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18155
									
18156
									 var headerDisplay =undefined;
18157
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
18158
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
18159
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
18160
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
18161
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
18162
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
18163
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
18164
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
18165
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());	
18166
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());										
18167
									}else{
18168
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
18169
									}
18170
                                   
18171
                                    var frm = frmForm.getForm();
18172
                                    if (frm.isValid()) {
18173

    
18174
										
18175
                                        var table = rec.TableName;
18176
                                        var data = Ext.encode(frmForm.getValues());
18177
                                        var token = MinovaUtil.SESSIONS.Token;
18178
										var action=me.action;
18179
										if(action==undefined){action="0"};
18180
                                        var params = {
18181
                                            apiController: 'api/Devt',
18182
                                            methodName: 'SaveTableMaster',
18183
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
18184
                                        };
18185
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
18186
                                            var result = Ext.decode(xhr.responseText);
18187
                                            var r = Ext.decode(result.data);
18188
                                            if (r.success) {
18189
                                                headerDisplay.mask("Loading...");
18190
                                                var idNo = r.data;
18191
                                                frmForm.getForm().findField("DocNo").setValue(idNo);
18192
												frmDisplay.getForm().setValues(frmForm.getValues());
18193
												headerDisplay.getForm().setValues(frmForm.getValues());													
18194
                                                frmDisplay.setHidden(false);
18195
                                                frmForm.setHidden(true);
18196
                                                MinovaMessage('Not Null', '000006', '', 'S');
18197
                                                headerDisplay.unmask();
18198
                                            } else {
18199
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
18200
                                            }
18201
                                        });
18202
                                    }
18203
                                }
18204
                            }, {
18205
                                text: 'Delete',
18206
                                name: 'deleteDISPLAY' + rec.TableName,
18207
                                iconCls: 'fa-trash-o',
18208
                                style: 'font-family: FontAwesome',
18209
                                handler: function () {}
18210
                            }, {
18211
                                text: 'Cancel',
18212
                                name: 'cancelDISPLAY' + rec.TableName,
18213
                                iconCls: 'fa-reply',
18214
                                style: 'font-family: FontAwesome',
18215
                                handler: function () {
18216
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
18217
                                        if (respone == "yes") {
18218
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18219
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18220
                                            frmDisplay.setHidden(false);
18221
                                            frmForm.setHidden(true);
18222
                                        }
18223
                                    });
18224
                                }
18225
                            }
18226
                            ]
18227
                        }
18228
                        ]
18229
                    });
18230
                }
18231
            });
18232
        }
18233
        Ext.applyIf(me, {
18234
            items: _items
18235
        });
18236
        me.callParent(arguments);
18237
    }
18238
});
18239
/*Add by Taufan ( Generate Doc Transaction Form For ERP )*/
18240
Ext.define('MinovaUtil.MinovaES.MinovaDocForm', {
18241
    extend: 'Ext.form.Panel',
18242
    alias: ['widget.MinovaDocForm', 'widget.minovadocform', 'widget.docform'],
18243
    formname: this.name,
18244
    tableName: undefined,
18245
    docType: undefined,
18246
    transType: undefined,
18247
    resizable: true,
18248
    border: false,
18249
    autoScroll: true,
18250
    isDisplay: undefined,
18251
    isLookup: undefined,
18252
    layout: 'column',
18253
    defaults: {
18254
        layout: 'form',
18255
        xtype: 'container',
18256
        defaultType: 'textfield',
18257
        style: 'width: 50%',
18258
    },
18259
    initComponent: function () {
18260
        var me = this;
18261
        var col1 = [];
18262
        var col2 = [];
18263
        var LangID = localStorage.LangId;
18264
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18265
        var formname_ = me.name;
18266
        var nameTable_ = me.tableName;
18267
        Ext.Ajax.request({
18268
            async: false,
18269
            method: 'POST',
18270
            url: '/UserControl/GetStore',
18271
            params: {
18272
                tableName: 'PDSDOCFIELD',
18273
                param: parameter
18274
            },
18275
            success: function (response) {
18276
                var results = Ext.decode(response.responseText);
18277
                hasil = results.data;
18278
            }
18279
        });
18280

    
18281
        if (hasil.length > 0) {
18282
            Ext.each(hasil, function (rec) {
18283
                var isnull = null;
18284
                if (rec.IsPrimaryKey == '1') {
18285
                    isnull = false;
18286
                }
18287
                if (rec.IsRequired == '1') {
18288
                    isnull = false;
18289
                } else {
18290
                    isnull = true;
18291
                }
18292
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, isnull, me.isDisplay, me.tableName, me.isLookup);
18293
                var descField = undefined;
18294
		
18295
                if (rec.ColumnNo == 1) {
18296
                    col1.push(formfield);
18297
                    if (descField) {
18298
                        col1.push(descField)
18299
                    }
18300
                } else {
18301
                    col2.push(formfield);
18302
                    if (descField) {
18303
                        col2.push(descField)
18304
                    }
18305
                }
18306

    
18307
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
18308
                    formfieldKey = new Ext.form.TextField({
18309
                        hidden: true,
18310
                        name: "Key_" + rec.FieldName,
18311
                    });
18312
                    col2.push(formfieldKey);
18313
                }			
18314
            });
18315
        }
18316
        Ext.applyIf(me, {
18317
            items: [{
18318
                style: 'width: 50%',
18319
                items: col1
18320
            }, {
18321
                style: 'width: 50%',
18322
                items: col2
18323
            }
18324
            ]
18325
        });
18326
        this.callParent();
18327
    }
18328
});
18329
/*Add by Taufan ( Generate Doc Transaction Grid For ERP )*/
18330
Ext.define('MinovaUtil.MinovaES.MinovaDocGrid', {
18331
    extend: 'Ext.grid.Panel',
18332
    requires: ['Ext.grid.RowNumberer'],
18333
    alias: 'widget.docgrid',
18334
    alternateClassName: 'Ext.grid.MinovaGrid',
18335
    tableName: undefined,
18336
    docType: undefined,
18337
    transType: undefined,
18338
    isLookup: undefined,
18339
    param: undefined,
18340
    pagesize: undefined,
18341
    storename: undefined,
18342
    layoutType: undefined,
18343
    enableLocking: true,
18344
    autoLoad: undefined,
18345
    multiSelect: undefined,
18346
    getTableName: function () {
18347
        return this.tableName;
18348
    },
18349
    initComponent: function () {
18350
        var me = this;
18351
        var cols_ = [];
18352
        var fieldeditor = {};
18353
        var hasil = null;
18354
        var autoLoad = true;
18355
        var LangID = localStorage.LangId;
18356
        var fielGrid = 'rec.GridView == 1';
18357
        var locking = true;
18358
        var checkSelection = '';
18359
        var widthLock = 250;
18360
        if (me.multiSelect) {
18361
            locking = false;
18362
            checkSelection = 'checkboxmodel';
18363
            widthLock = 40;
18364
        }
18365
        if (me.autoLoad == false) {
18366
            autoLoad = false;
18367
        }
18368
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18369
        Ext.Ajax.request({
18370
            async: false,
18371
            method: 'POST',
18372
            url: '/UserControl/GetStore',
18373
            params: {
18374
                tableName: 'PDSDOCFIELD',
18375
                param: parameter
18376
            },
18377
            success: function (response) {
18378
                var results = Ext.decode(response.responseText);
18379
                hasil = results.data;
18380
            }
18381
        });
18382
        if (hasil.length > 0) {
18383
            Ext.each(hasil, function (rec) {
18384
                var null_ = null;
18385
                if (rec.IsPrimaryKey == true) {
18386
                    null_ = false;
18387
                }
18388
                if (rec.IsRequired == true) {
18389
                    null_ = false;
18390
                } else {
18391
                    null_ = true;
18392
                }
18393
                if (rec.GridView == 1) {
18394
                    switch (rec.FormatRef) {
18395
                        case "action":
18396
                            cols_.push({
18397
                                text: rec.HeaderTitle,
18398
                                width: 100,
18399
                                xtype: 'actioncolumn',
18400
                                tooltip: 'View Data',
18401
                                name: rec.FieldName,
18402
                                itemId: me.tableName + rec.FieldName,
18403
                                align: 'center',
18404
                                iconCls: 'fa-edit',
18405
                                renderer: function (value, metadata, record) {
18406
                                    metadata.tdStyle = 'font-family: FontAwesome'
18407
                                },
18408
                                handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
18409

    
18410
                                    this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
18411
                                }
18412
                            });
18413
                            break
18414
                        case "file":
18415
                            cols_.push({
18416
                                xtype: 'minovapicturecolumn',
18417
                                text: rec.HeaderTitle,
18418
                                dataIndex: rec.FieldName,
18419
                                width: 100
18420
                            });
18421
                            break
18422
                        case "date":
18423
                            cols_.push({
18424
                                xtype: 'minovadatecolumn',
18425
                                text: rec.HeaderTitle,
18426
                                dataIndex: rec.FieldName,
18427
                                width: 100,
18428
                                filter: {
18429
                                    type: 'date',
18430
                                    itemDefaults: {
18431
                                        emptyText: 'Search for...'
18432
                                    }
18433
                                }
18434
                            });
18435
                            break
18436
                        case "amountencrypt":
18437
                            cols_.push({
18438
                                xtype: 'minovaamountcolumn',
18439
                                text: rec.HeaderTitle,
18440
                                dataIndex: rec.FieldName,
18441
                                align: 'right',
18442
                                width: 100,
18443
                                filter: {
18444
                                    type: 'string',
18445
                                    itemDefaults: {
18446
                                        emptyText: 'Search for...'
18447
                                    }
18448
                                }
18449
                            });
18450
                            break
18451
                        case "amount":
18452
                            cols_.push({
18453
                                xtype: 'minovacurrancycolumn',
18454
                                text: rec.HeaderTitle,
18455
                                dataIndex: rec.FieldName,
18456
                                align: 'right',
18457
                                width: 100,
18458
                                filter: {
18459
                                    type: 'number',
18460
                                    itemDefaults: {
18461
                                        emptyText: 'Search for...'
18462
                                    }
18463
                                }
18464
                            });
18465
                            break
18466
                        case "datetime":
18467
                            cols_.push({
18468
                                xtype: 'minovadatetimecolumn',
18469
                                text: rec.HeaderTitle,
18470
                                dataIndex: rec.FieldName,
18471
                                width: 140,
18472
                                filter: {
18473
                                    type: 'string',
18474
                                    itemDefaults: {
18475
                                        emptyText: 'Search for...'
18476
                                    }
18477
                                }
18478
                            });
18479
                            break
18480
                        default:
18481
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
18482
                                cols_.push({
18483
                                    text: rec.HeaderTitle,
18484
                                    dataIndex: rec.FieldName,
18485
                                    width: 100,
18486
                                    filter: {
18487
                                        type: 'string',
18488
                                        itemDefaults: {
18489
                                            emptyText: 'Search for...'
18490
                                        }
18491
                                    }
18492
                                });
18493
                            } else if (rec.TableRef != "") {
18494
                                if (rec.TableRef != null) {
18495
                                    var valueField = null;
18496
                                    var displayValue = null;
18497
                                    Ext.Ajax.request({
18498
                                        async: false,
18499
                                        method: 'POST',
18500
                                        url: '/UserControl/GetStore',
18501
                                        params: {
18502
                                            tableName: 'SDATATABLEFIELD',
18503
                                            param: 'TableName[equal]' + rec.TableRef
18504
                                        },
18505
                                        success: function (response) {
18506
                                            var results = Ext.decode(response.responseText);
18507
                                            data_ = results.data;
18508
                                            if (data_.length > 0) {
18509
                                                valueField_ = $.grep(data_, function (r) {
18510
                                                    return r.ValueField == '1'
18511
                                                });
18512
                                                valueField = valueField_[0].FieldName
18513
                                                displayValue_ = $.grep(data_, function (r) {
18514
                                                    return r.DisplayValue == '1'
18515
                                                });
18516
                                                displayValue = displayValue_[0].FieldName
18517
                                            } else {
18518
                                                MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
18519
                                            }
18520
                                        }
18521
                                    });
18522
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
18523
                                    var count_ = 0;
18524
                                    if (store_) {
18525
                                        count_ = store_.count();
18526
                                    }
18527
                                    if (count_ == 0) {
18528
                                        Ext.create('Ext.data.Store', {
18529
                                            storeId: 'store_' + rec.FieldName,
18530
                                            autoLoad: false,
18531
                                            proxy: {
18532
                                                method: 'POST',
18533
                                                type: 'ajax',
18534
                                                url: '/UserControl/GetStore',
18535
                                                extraParams: {
18536
                                                    tableName: rec.TableRef,
18537
                                                    param: rec.ParamCombo
18538
                                                },
18539
                                                reader: {
18540
                                                    type: 'json',
18541
                                                    root: 'data',
18542
                                                    totalProperty: 'data[0].TotalCount'
18543
                                                }
18544
                                            }
18545
                                        })
18546
                                    }
18547
                                    cols_.push({
18548
                                        xtype: 'minovacombocolumn',
18549
                                        text: rec.HeaderTitle,
18550
                                        dataIndex: rec.FieldName,
18551
                                        valueField: valueField,
18552
                                        displayField: displayValue,
18553
                                        store: 'store_' + rec.FieldName,
18554
                                        filter: {
18555
                                            type: 'list',
18556
                                            itemDefaults: {
18557
                                                emptyText: 'Search for...'
18558
                                            }
18559
                                        }
18560
                                    });
18561
                                }
18562
                            } else if (rec.FixedValue != "") {
18563
                                cols_.push({
18564
                                    xtype: 'minovacombocolumnfixvalue',
18565
                                    text: rec.HeaderTitle,
18566
                                    dataIndex: rec.FieldName,
18567
                                    fixedValue: rec.FixedValue,
18568
                                    filter: {
18569
                                        type: 'list',
18570
                                        itemDefaults: {
18571
                                            emptyText: 'Search for...'
18572
                                        }
18573
                                    }
18574
                                });
18575
                            } else {
18576
                                cols_.push({
18577
                                    text: rec.HeaderTitle,
18578
                                    dataIndex: rec.FieldName,
18579
                                    filter: {
18580
                                        itemDefaults: {
18581
                                            emptyText: 'Search for...'
18582
                                        }
18583
                                    }
18584
                                });
18585
                            }
18586
                            break
18587
                    }
18588
                } else {
18589
                    cols_.push({
18590
                        text: rec.HeaderTitle,
18591
                        dataIndex: rec.FieldName,
18592
                        hidden: true,
18593
                        filter: {
18594
                            itemDefaults: {
18595
                                emptyText: 'Search for...'
18596
                            }
18597
                        }
18598
                    });
18599
                }
18600

    
18601
            });
18602
        };
18603
        var param_ = me.param;
18604
        if (param_ == undefined) {
18605
            param_ = ''
18606
        }
18607
        var jsStoreGrid = new Ext.data.Store({
18608
            storeId: me.storename,
18609
            autoLoad: autoLoad,
18610
            pageSize: me.pagesize,
18611
            proxy: {
18612
                method: 'POST',
18613
                type: 'ajax',
18614
                url: '/UserControl/GetStorePagingAuth',
18615
                extraParams: {
18616
                    tableName: me.tableName,
18617
                    param: param_,
18618
                    menuId: MinovaUtil.GetMenuID()
18619
                },
18620
                reader: {
18621
                    type: 'json',
18622
                    root: 'data',
18623
                    totalProperty: 'totalRecords'
18624
                }
18625
            },
18626
        });
18627
        Ext.applyIf(me, {
18628
            autoScroll: true,
18629
            enableLocking: locking,
18630
            lockedGridConfig: {
18631
                header: false,
18632
                collapsible: true,
18633
                width: widthLock,
18634
                forceFit: locking,
18635
                listeners: {
18636
                    render: function (grid) {
18637
                        var pagingToolbar = grid.child('pagingtoolbar');
18638
                        if (pagingToolbar) {
18639
                            grid.remove(pagingToolbar, true);
18640
                        }
18641
                    }
18642
                }
18643
            },
18644
            listeners: {
18645
                viewready: function () {
18646
                    if (autoLoad == true) {
18647
                        this.getStore().loadPage(1);
18648
                    }
18649
                },
18650
                beforeedit: function () {
18651
                    return false;
18652
                }
18653
            },
18654
            lockedViewConfig: {
18655
                scroll: 'horizontal'
18656
            },
18657

    
18658
            //Add For Auto Size Coloum Mode
18659
            viewConfig: {
18660
                emptyText: 'No Data Display',
18661
                deferEmptyText: false,
18662
                listeners: {
18663
                    refresh: function (dataview) {
18664
                        Ext.each(dataview.panel.columns, function (column) {
18665
                            if (column.autoSizeColumn == false)
18666
                                column.autoSizeColumn = true;
18667
                                column.autoSize();
18668
                        })
18669
                    }
18670
                }
18671
            },
18672
            selModel: {},
18673
            selType: checkSelection,
18674
            columns: cols_,
18675
            store: jsStoreGrid,
18676
            plugins: [{
18677
                ptype: 'gridfilters'
18678
            }
18679
            ]
18680
        });
18681
        me.callParent(arguments);
18682
    }
18683
});
18684
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid  For ERP )*/
18685
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEdit', {
18686
    extend: 'Ext.form.Panel',
18687
    alias: 'widget.docgridcelledit',
18688
    requires: [
18689
		'Ext.grid.plugin.CellEditing',
18690
		'Ext.grid.Panel'
18691
    ],
18692
    autoScroll: true,
18693
    anchor: '100%',
18694
    tableName: undefined,
18695
    docType: undefined,
18696
    transType: undefined,
18697
    docNo: undefined,
18698
    hideButton: undefined,
18699
    multiSelect: undefined,
18700
    initComponent: function () {
18701
        var me = this;
18702
        var isLookup = me.isLookup;
18703
        var hide_ = false;
18704
        var widthLock = 250;
18705
        var checkSelection = '';
18706
		var hideUploadDownload = false; // add by Tri nwh 20220829
18707
		var hideCheckStock = true; // add by Tri nwh 20220829
18708
		var hideGenBOMProd = true; // add by Tri nwh 20220829
18709
		
18710
		Ext.Ajax.request({ // add by Tri nwh 20220829
18711
			async: false,
18712
			method: 'POST',
18713
			url: '/UserControl/GetStore',
18714
			params: {
18715
				tableName: "PCMBSTRANSLIST",
18716
				param: 'TableName[=]' + me.tableName + ',' + 'DocType[=]' + me.docType		// add Tri nwh 20240220
18717
			},
18718
			success: function (response) {
18719
				var results = Ext.decode(response.responseText);
18720
				if (results.data[0].UploadDownloadEnable == '0') {
18721
					hideUploadDownload = true;
18722
				} else {
18723
					hideUploadDownload = false;
18724
				}
18725
			}
18726
		});
18727

    
18728
		if (me.tableName == "PTRALLOCATION") { // add by Tri nwh 20220829
18729
			hideCheckStock = false;
18730
		}
18731
		
18732
        if (me.hideButton == true) {
18733
            hide_ = true;
18734
        }
18735
        if (me.multiSelect) {
18736
            locking = false;
18737
            checkSelection = 'checkboxmodel';
18738
            widthLock = 40;
18739
        }
18740
        var tableName = me.tableName;
18741
        var cols = [];
18742
        var fieldStore = [];
18743
        var _url = 'GetAllField';
18744
        var hasil = null;
18745
        var height = me.height;
18746
        var storeID = 'store' + me.tableName;
18747
        var gridName = 'grid' + me.name;
18748
        if (me.storeName) {
18749
            storeID = me.storeName;
18750
        }
18751
        var LangID = MinovaUtil.GetLangID();
18752
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18753
        Ext.Ajax.request({
18754
            async: false,
18755
            method: 'POST',
18756
            url: '/UserControl/GetStore',
18757
            params: {
18758
                tableName: 'PDSDOCFIELD',
18759
                param: parameter
18760
            },
18761
            success: function (response) {
18762
                var results = Ext.decode(response.responseText);
18763
                hasil = results.data;
18764
            }
18765
        });
18766
        cols.push({
18767
            xtype: 'rownumberer'
18768
        });
18769
        var addData = '({';
18770
        if (hasil.length > 0) {
18771
            Ext.each(hasil, function (rec) {
18772
                fieldStore.push(rec.FieldName);
18773
                var defaultValue = rec.DefaultValue;
18774
                if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
18775
                    Ext.Ajax.request({
18776
                        async: false,
18777
                        method: 'POST',
18778
                        url: '/UserControl/GetStore',
18779
                        params: {
18780
                            tableName: 'PCMFUNC',
18781
                            param: 'FuncName[equal]' + rec.DefaultValue
18782
                        },
18783
                        success: function (response) {
18784
                            var results = Ext.decode(response.responseText);
18785
                            data_ = results.data;
18786
                            if (data_.length > 0) {
18787
                                defaultValue = eval(data_[0].FunctionCode);
18788
                            }
18789
                        }
18790
                    });
18791
                }
18792
                addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
18793
                var null_ = null;
18794
                var ReadOnly_ = false;
18795
                if (rec.IsPrimaryKey == true) {
18796
                    null_ = false;
18797
                }
18798
                if (rec.IsRequired == true) {
18799
                    null_ = false;
18800
                } else {
18801
                    null_ = true;
18802
                }
18803
                var Hidden_ = false;
18804
                if (rec.ReadOnly == '1') {
18805
                    ReadOnly_ = true;
18806
                }
18807
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
18808
                    Hidden_ = true;
18809
                    null_ = true;
18810
                }
18811
                if (rec.GridView == 1) {
18812
                    switch (rec.FormatRef) {
18813
                        case "date":
18814
                            cols.push({
18815
                                xtype: 'minovadatecolumn',
18816
                                hidden: Hidden_,
18817
                                text: rec.HeaderTitle,
18818
                                dataIndex: rec.FieldName,
18819
                                filter: {
18820
                                    itemDefaults: {
18821
                                        emptyText: 'Search for...'
18822
                                    }
18823
                                },
18824
                                editor: {
18825
                                    allowBlank: null_,
18826
                                    xtype: 'datefield',
18827
                                    hideMode: 'visibility',
18828
                                    readOnly: ReadOnly_,
18829
                                    id: tableName + rec.FieldName,
18830
                                    value: defaultValue
18831
                                }
18832
                            });
18833
                            break
18834
                        case "amount":
18835
                            cols.push({
18836
                                //xtype : 'minovacurrancycolumn',
18837
                                xtype: 'numbercolumn',
18838
                                text: rec.HeaderTitle,
18839
                                align: 'right',
18840
                                dataIndex: rec.FieldName,
18841
                                hidden: Hidden_,
18842
								minWidth: 150,
18843
                                filter: {
18844
                                    itemDefaults: {
18845
                                        emptyText: 'Search for...'
18846
                                    }
18847
                                },
18848
                                editor: {
18849
                                    allowBlank: null_,
18850
                                    xtype: 'textfield',
18851
                                    readOnly: ReadOnly_,
18852
                                    id: tableName + rec.FieldName,
18853
                                    nameTable: rec.TableName,
18854
                                    fieldGrid: rec.FieldName,
18855
                                    fieldStyle: 'text-align:right;',
18856
                                    vtype: 'validateMinovaNumber',
18857
                                    value: '0',
18858
                                    listeners: {
18859
                                        change: function (val, recs) {
18860
                                            var fvalue = val.getValue();
18861
                                            var custumFunc = rec.SelectFunction;
18862
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18863
                                                Ext.Ajax.request({
18864
                                                    async: false,
18865
                                                    method: 'POST',
18866
                                                    url: '/UserControl/GetStore',
18867
                                                    params: {
18868
                                                        tableName: 'PCMFUNC',
18869
                                                        param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18870
                                                    },
18871
                                                    success: function (response) {
18872
                                                        var results = Ext.decode(response.responseText);
18873
                                                        var dt = results.data[0];
18874
                                                        if (dt != undefined) {
18875
                                                            custumFunc = dt.FunctionCode;
18876
                                                        }
18877
                                                    }
18878
                                                });
18879
                                            }
18880
                                            if (custumFunc) {
18881
                                                eval(custumFunc)
18882
                                            }
18883
                                        }
18884
                                    }
18885
                                }
18886
                            });
18887
                            break
18888
                        default:
18889
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
18890
                                cols.push({
18891
                                    text: rec.HeaderTitle,
18892
                                    dataIndex: rec.FieldName,
18893
                                    width: 100,
18894
									minWidth: 150,
18895
                                    filter: {
18896
                                        type: 'string',
18897
                                        itemDefaults: {
18898
                                            emptyText: 'Search for...'
18899
                                        }
18900
                                    }
18901
                                });
18902
                            } else if (rec.SearchType == '0') {
18903
                                var valueField = null;
18904
                                var displayValue = null;
18905
                                var TableRef = undefined;
18906
                                if (rec.TableRef != '') {
18907
                                    TableRef = rec.TableRef;
18908
                                    Ext.Ajax.request({
18909
                                        async: false,
18910
                                        method: 'POST',
18911
                                        url: '/UserControl/GetStore',
18912
                                        params: {
18913
                                            tableName: 'SDATATABLEFIELD',
18914
                                            param: 'TableName[equal]' + rec.TableRef
18915
                                        },
18916
                                        success: function (response) {
18917
                                            var results = Ext.decode(response.responseText);
18918
                                            data_ = results.data;
18919
                                            if (data_ != undefined) {
18920
                                                valueField_ = $.grep(data_, function (r) {
18921
                                                    return r.ValueField == '1'
18922
                                                });
18923
                                                valueField = valueField_[0].FieldName
18924
                                                displayValue_ = $.grep(data_, function (r) {
18925
                                                    return r.DisplayValue == '1'
18926
                                                });
18927
												if(displayValue_[0] !=undefined){
18928
													displayValue = displayValue_[0].FieldName
18929
												}
18930
                                                
18931
                                            }
18932
                                        }
18933
                                    });
18934
                                }
18935
                                Ext.create('Ext.data.Store', {
18936
                                    storeId: 'store_' + me.tableName + rec.FieldName,
18937
                                    autoLoad: true,
18938
                                    proxy: {
18939
                                        method: 'POST',
18940
                                        type: 'ajax',
18941
                                        url: '/UserControl/GetStoreAuth',
18942
                                        extraParams: {
18943
                                            tableName: TableRef,
18944
                                            param: rec.ParamCombo,
18945
                                            menuId: MinovaUtil.GetMenuID()
18946
                                        },
18947
                                        reader: {
18948
                                            type: 'json',
18949
                                            root: 'data',
18950
                                            totalProperty: 'data[0].TotalCount'
18951
                                        }
18952
                                    }
18953
                                });
18954
                                cols.push({
18955
                                    xtype: 'minovacombocolumn',
18956
                                    hidden: Hidden_,
18957
                                    text: rec.HeaderTitle,
18958
                                    dataIndex: rec.FieldName,
18959
                                    valueField: valueField,
18960
                                    displayField: displayValue,
18961
                                    store: 'store_' + me.tableName + rec.FieldName,
18962
									minWidth: 150,
18963
                                    editor: {
18964
                                        allowBlank: null_,
18965
                                        xtype: 'minovacombobox',
18966
                                        readOnly: ReadOnly_,
18967
                                        id: tableName + rec.FieldName,
18968
                                        valueField: valueField,
18969
                                        displayField: displayValue,
18970
                                        store: 'store_' + me.tableName + rec.FieldName,
18971
										forceSelection: false,
18972
									lazyRender: true,
18973
                                        listeners: {
18974
                                            change: function (val) {
18975
                                                var fvalue = val.getValue();
18976
                                                var custumFunc = rec.SelectFunction;
18977
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18978
                                                    Ext.Ajax.request({
18979
                                                        async: false,
18980
                                                        method: 'POST',
18981
                                                        url: '/UserControl/GetStore',
18982
                                                        params: {
18983
                                                            tableName: 'PCMFUNC',
18984
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18985
                                                        },
18986
                                                        success: function (response) {
18987
                                                            var results = Ext.decode(response.responseText);
18988
                                                            var dt = results.data[0];
18989
                                                            if (dt != undefined) {
18990
                                                                custumFunc = dt.FunctionCode;
18991
                                                            }
18992
                                                        }
18993
                                                    });
18994
                                                }
18995
                                                if (custumFunc) {
18996
                                                    eval(custumFunc)
18997
                                                }
18998
                                            }
18999
                                        }
19000
                                    },
19001
                                    filter: {
19002
                                        type: 'list',
19003
                                        itemDefaults: {
19004
                                            emptyText: 'Search for...'
19005
                                        }
19006
                                    }
19007
                                });
19008
                            } else if (rec.SearchType == '5') {							
19009
                                var valueField = null;
19010
                                var displayValue = null;
19011
                                var AdditionaldisplayValue = null;
19012
                                var TableRef = undefined;
19013
                                if (rec.TableRef != '') {
19014
                                    TableRef = rec.TableRef;
19015
                                    Ext.Ajax.request({
19016
                                        async: false,
19017
                                        method: 'POST',
19018
                                        url: '/UserControl/GetStore',
19019
                                        params: {
19020
                                            tableName: 'SDATATABLEFIELD',
19021
                                            param: 'TableName[equal]' + rec.TableRef
19022
                                        },
19023
                                        success: function (response) {
19024
                                            var results = Ext.decode(response.responseText);
19025
                                            data_ = results.data;
19026
                                            if (data_ != undefined) {
19027
                                                valueField_ = $.grep(data_, function (r) {
19028
                                                    return r.ValueField == '1'
19029
                                                });
19030
                                                if (valueField_.length > 0) {
19031
                                                    valueField = valueField_[0].FieldName
19032
                                                }
19033

    
19034
                                                displayValue_ = $.grep(data_, function (r) {
19035
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
19036
                                                });
19037
                                                if (displayValue_.length > 0) {
19038
                                                    displayValue = displayValue_[0].FieldName;
19039
                                                }
19040
                                                if (displayValue_.length >= 2) {
19041
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
19042
                                                }
19043
                                            }
19044
                                        }
19045
                                    });
19046
                                }
19047
                                Ext.create('Ext.data.Store', {
19048
                                    storeId: 'store_' + me.tableName + rec.FieldName,
19049
                                    autoLoad: true,
19050
                                    proxy: {
19051
                                        method: 'POST',
19052
                                        type: 'ajax',
19053
                                        url: '/UserControl/GetStoreAuth',
19054
                                        extraParams: {
19055
                                            tableName: TableRef,
19056
                                            param: rec.ParamCombo,
19057
                                            menuId: MinovaUtil.GetMenuID()
19058
                                        },
19059
                                        reader: {
19060
                                            type: 'json',
19061
                                            root: 'data',
19062
                                            totalProperty: 'data[0].TotalCount'
19063
                                        }
19064
                                    }
19065
                                });
19066
                                cols.push({
19067
                                    xtype : 'minovacombocolumn',
19068
                                    hidden: Hidden_,
19069
                                    text: rec.HeaderTitle,
19070
                                    dataIndex: rec.FieldName,
19071
                                    valueField : valueField,
19072
                                    displayField : displayValue,
19073
                                    store : 'store_' + me.tableName + rec.FieldName,
19074
									minWidth: 150,
19075
                                    tpl: Ext.create('Ext.XTemplate',
19076
                                            '<ul class="x-list-plain"><tpl for=".">',
19077
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19078
                                            '</tpl></ul>'),
19079
                                    displayTpl: Ext.create('Ext.XTemplate',
19080
                                        '<tpl for=".">',
19081
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19082
                                        '</tpl>'),
19083
                                    editor: {
19084
                                        allowBlank: null_,
19085
                                        xtype: 'combobox',
19086
                                        readOnly: ReadOnly_,
19087
                                        id: rec.TableName + rec.FieldName,
19088
                                        nameTable: rec.TableName,
19089
                                        fieldGrid: rec.FieldName,
19090
                                        valueField: valueField,
19091
                                        displayField: displayValue,
19092
                                        store: 'store_' + me.tableName + rec.FieldName,
19093
                                        value: rec.DefaultValue,
19094
                                        tpl: Ext.create('Ext.XTemplate',
19095
                                            '<ul class="x-list-plain"><tpl for=".">',
19096
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19097
                                            '</tpl></ul>'),
19098
                                        displayTpl: Ext.create('Ext.XTemplate',
19099
                                            '<tpl for=".">',
19100
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19101
                                            '</tpl>')
19102
                                    },
19103
                                    renderer: function (value) {
19104
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
19105
                                        var index = store.find(valueField, value);
19106
                                        var val = "";
19107
                                        if (index != -1) {
19108
                                            var rc = store.getAt(index);
19109
                                            //val = rc.get(displayValue);
19110
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
19111
                                        } else {
19112
                                            val = value;
19113
                                        }
19114
                                        return val;
19115
                                    },
19116
                                    filter: {
19117
                                        type: 'list',
19118
                                        itemDefaults: {
19119
                                            emptyText: 'Search for...'
19120
                                        }
19121
                                    }
19122
                                });
19123
                            } else if (rec.SearchType == '2') {
19124
                                var triger = (rec.TriggerCombo).split('$');
19125
                                var targetField_ = triger[0];
19126
                                var fieldValue_ = triger[1];
19127
                                cols.push({
19128
                                    text: rec.HeaderTitle,
19129
                                    hidden: Hidden_,
19130
                                    dataIndex: rec.FieldName,
19131
                                    filter: {
19132
                                        itemDefaults: {
19133
                                            emptyText: 'Search for...'
19134
                                        }
19135
                                    },
19136
                                    editor: {
19137
                                        allowBlank: null_,
19138
                                        xtype: 'minovalookupgrid',
19139
                                        readOnly: ReadOnly_,
19140
                                        isGrid: true,
19141
                                        fieldTarget: targetField_,
19142
                                        fieldValue: fieldValue_,
19143
                                        isGrid: true,
19144
                                        id: tableName + rec.FieldName,
19145
                                        tableName: rec.TableRef,
19146
                                        triggerCls: 'x-form-search-trigger',
19147
                                        vtype: 'alphanum',
19148
                                        listeners: {
19149
                                            change: function (val) {
19150
                                                var custumFunc = rec.SelectFunction;
19151
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19152
                                                    Ext.Ajax.request({
19153
                                                        async: false,
19154
                                                        method: 'POST',
19155
                                                        url: '/UserControl/GetStore',
19156
                                                        params: {
19157
                                                            tableName: 'PCMFUNC',
19158
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19159
                                                        },
19160
                                                        success: function (response) {
19161
                                                            var results = Ext.decode(response.responseText);
19162
                                                            data_ = results.data[0];
19163
                                                            if (data_ != undefined) {
19164
                                                                custumFunc = data_.FunctionCode;
19165
                                                            }
19166
                                                        }
19167
                                                    });
19168
                                                }
19169
                                                if (custumFunc) {
19170
                                                    eval(custumFunc)
19171
                                                }
19172
                                            }
19173
                                        }
19174
                                    }
19175
                                });
19176
                            } else if (rec.SearchType == '3') {
19177
                                cols.push({
19178
                                    text: rec.HeaderTitle,
19179
                                    hidden: Hidden_,
19180
                                    dataIndex: rec.FieldName,
19181
                                    filter: {
19182
                                        itemDefaults: {
19183
                                            emptyText: 'Search for...'
19184
                                        }
19185
                                    },
19186
                                    editor: {
19187
                                        allowBlank: null_,
19188
                                        xtype: 'MinovaLookupTree',
19189
                                        readOnly: ReadOnly_,
19190
                                        id: tableName + rec.FieldName,
19191
                                        tableName: rec.TableRef,
19192
                                        triggerCls: 'x-form-search-trigger',
19193
                                        vtype: 'alphanum',
19194
                                        treeSructure: rec.SearchFunction,
19195
                                        objClassValue: rec.ParamCombo,
19196
                                        listeners: {
19197
                                            change: function (val) {
19198
                                                var custumFunc = rec.SelectFunction;
19199
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19200
                                                    Ext.Ajax.request({
19201
                                                        async: false,
19202
                                                        method: 'POST',
19203
                                                        url: '/UserControl/GetStore',
19204
                                                        params: {
19205
                                                            tableName: 'PCMFUNC',
19206
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19207
                                                        },
19208
                                                        success: function (response) {
19209
                                                            var results = Ext.decode(response.responseText);
19210
                                                            data_ = results.data[0];
19211
                                                            if (data_ != undefined) {
19212
                                                                custumFunc = data_.FunctionCode;
19213
                                                            }
19214
                                                        }
19215
                                                    });
19216
                                                }
19217
                                                if (custumFunc) {
19218
                                                    eval(custumFunc)
19219
                                                }
19220
                                            }
19221
                                        }
19222
                                    }
19223
                                });
19224
                            } 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) {
19225
                                var triger = (rec.TriggerCombo).split('&');
19226
                                var targetField_ = triger[0];
19227
                                var fieldValue_ = triger[0];
19228
                                cols.push({
19229
                                    text: rec.HeaderTitle,
19230
                                    hidden: Hidden_,
19231
                                    dataIndex: rec.FieldName,
19232
                                    filter: {
19233
                                        itemDefaults: {
19234
                                            emptyText: 'Search for...'
19235
                                        }
19236
                                    },
19237
                                    editor: {
19238
                                        allowBlank: null_,
19239
                                        xtype: 'lookupemployee',
19240
                                        readOnly: ReadOnly_,
19241
                                        isGrid: true,
19242
                                        fieldTarget: targetField_,
19243
                                        fieldValue: fieldValue_,
19244
                                        isGrid: true,
19245
                                        id: tableName + rec.FieldName,
19246
                                        tableName: rec.TableRef,
19247
                                        triggerCls: 'x-form-search-trigger',
19248
                                        vtype: 'alphanum',
19249
                                        listeners: {
19250
                                            change: function (val) {
19251
                                                var custumFunc = rec.SelectFunction;
19252
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19253
                                                    Ext.Ajax.request({
19254
                                                        async: false,
19255
                                                        method: 'POST',
19256
                                                        url: '/UserControl/GetStore',
19257
                                                        params: {
19258
                                                            tableName: 'PCMFUNC',
19259
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19260
                                                        },
19261
                                                        success: function (response) {
19262
                                                            var results = Ext.decode(response.responseText);
19263
                                                            data_ = results.data[0];
19264
                                                            if (data_ != undefined) {
19265
                                                                custumFunc = data_.FunctionCode;
19266
                                                            }
19267
                                                        }
19268
                                                    });
19269
                                                }
19270
                                                if (custumFunc) {
19271
                                                    eval(custumFunc)
19272
                                                }
19273
                                            }
19274
                                        }
19275
                                    }
19276
                                });
19277
                            } else if (rec.SearchType == '4' && isLookup != true) {
19278
                                cols.push({
19279
                                    text: rec.HeaderTitle,
19280
                                    hidden: Hidden_,
19281
                                    dataIndex: rec.FieldName,
19282
                                    filter: {
19283
                                        itemDefaults: {
19284
                                            emptyText: 'Search for...'
19285
                                        }
19286
                                    },
19287
                                    editor: {
19288
                                        allowBlank: null_,
19289
                                        xtype: 'lookupemployee',
19290
                                        readOnly: ReadOnly_,
19291
                                        isGrid: true,
19292
                                        fieldTarget: targetField_,
19293
                                        fieldValue: fieldValue_,
19294
                                        isGrid: true,
19295
                                        id: tableName + rec.FieldName,
19296
                                        tableName: rec.TableRef,
19297
                                        triggerCls: 'x-form-search-trigger',
19298
                                        vtype: 'alphanum',
19299
                                        listeners: {
19300
                                            change: function (val) {
19301
                                                var custumFunc = rec.SelectFunction;
19302
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19303
                                                    Ext.Ajax.request({
19304
                                                        async: false,
19305
                                                        method: 'POST',
19306
                                                        url: '/UserControl/GetStore',
19307
                                                        params: {
19308
                                                            tableName: 'PCMFUNC',
19309
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19310
                                                        },
19311
                                                        success: function (response) {
19312
                                                            var results = Ext.decode(response.responseText);
19313
                                                            data_ = results.data[0];
19314
                                                            if (data_ != undefined) {
19315
                                                                custumFunc = data_.FunctionCode;
19316
                                                            }
19317
                                                        }
19318
                                                    });
19319
                                                }
19320
                                                if (custumFunc) {
19321
                                                    eval(custumFunc)
19322
                                                }
19323
                                            }
19324
                                        }
19325
                                    }
19326
                                });
19327
                            } else if (rec.FixedValue != '') {
19328
                                cols.push({
19329
                                    text: rec.HeaderTitle,
19330
                                    hidden: Hidden_,
19331
                                    dataIndex: rec.FieldName,
19332
									
19333
                                    filter: {
19334
                                        itemDefaults: {
19335
                                            emptyText: 'Search for...'
19336
                                        }
19337
                                    },
19338
									autoSizeColumn: true,
19339
								width: 200,
19340
                                    editor: {
19341
                                        allowBlank: null_,
19342
                                        xtype: 'minovafixvalue',
19343
                                        readOnly: ReadOnly_,
19344
										forceSelection: false,
19345
                                        id: tableName + rec.FieldName,
19346
                                        nameTable: tableName,
19347
                                        fieldGrid: rec.FieldName,
19348
                                        fixedValue: rec.FixedValue,
19349
                                        valueField: 'code',
19350
                                        displayField: 'desc',
19351
                                        value: defaultValue,
19352
											/*Add by Midi 12 Juni 2019*/
19353
									listeners: {
19354
										change: function (val) {
19355
											var custumFunc = rec.SelectFunction;
19356
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19357
												Ext.Ajax.request({
19358
													async: false,
19359
													method: 'POST',
19360
													url: '/UserControl/GetStore',
19361
													params: {
19362
														tableName: 'PCMFUNC',
19363
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19364
													},
19365
													success: function (response) {
19366
														var results = Ext.decode(response.responseText);
19367
														var dt = results.data[0];
19368
														if (dt != undefined) {
19369
															custumFunc = dt.FunctionCode;
19370
														}
19371
													}
19372
												});
19373
											}
19374
											if (custumFunc) {
19375
												eval(custumFunc)
19376
											}
19377
										}
19378
									}
19379
									//
19380
                                    },
19381
                                    renderer: function (value) {
19382
                                        var val = "";
19383
                                        var storeData = [];
19384
                                        var str = rec.FixedValue;
19385
                                        var hasil = str.split('||');
19386
                                        hasil.forEach(function (h) {
19387
                                            store_ = h.split('=')
19388
                                            storeData.push({
19389
                                                code: store_[0],
19390
                                                desc: store_[1]
19391
                                            });
19392
                                        });
19393
                                        var item = storeData.find(x => x.code == value);
19394
                                        if (item != undefined) {
19395
                                            val = item.desc;
19396
                                        }
19397
                                        return val;
19398
                                    }
19399
                                });
19400
                            } else if (rec.FieldDataType == 3) {
19401
                                cols.push({
19402
                                    text: rec.HeaderTitle,
19403
                                    hidden: Hidden_,
19404
                                    dataIndex: rec.FieldName,
19405
									isSummary:isSum,
19406
                                    filter: {
19407
                                        itemDefaults: {
19408
                                            emptyText: 'Search for...'
19409
                                        }
19410
                                    },
19411
								autoSizeColumn: true,
19412
								width: 200,
19413
                                    editor: {
19414
                                        allowBlank: null_,
19415
                                        xtype: 'textfield',
19416
                                        readOnly: ReadOnly_,
19417
                                        id: tableName + rec.FieldName,
19418
                                        nameTable: rec.TableName,
19419
                                        fieldGrid: rec.FieldName,
19420
                                        vtype: 'validateDecimal',
19421
                                        maxLength: rec.Length,
19422
                                        precision: rec.Prec,
19423
                                        fieldStyle: 'text-align:right;',
19424
                                        value: defaultValue,
19425
                                        listeners: {
19426
                                            change: function (val) {
19427
                                                var custumFunc = rec.SelectFunction;
19428
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19429
                                                    Ext.Ajax.request({
19430
                                                        async: false,
19431
                                                        method: 'POST',
19432
                                                        url: '/UserControl/GetStore',
19433
                                                        params: {
19434
                                                            tableName: 'PCMFUNC',
19435
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19436
                                                        },
19437
                                                        success: function (response) {
19438
                                                            var results = Ext.decode(response.responseText);
19439
                                                            var dt = results.data[0];
19440
                                                            if (dt != undefined) {
19441
                                                                custumFunc = dt.FunctionCode;
19442
                                                            }
19443
                                                        }
19444
                                                    });
19445
                                                }
19446
                                                if (custumFunc) {
19447
                                                    eval(custumFunc)
19448
                                                }
19449
                                            }
19450
                                        }
19451
                                    }
19452
                                });
19453
                            } else {
19454
                                cols.push({
19455
                                    text: rec.HeaderTitle,
19456
                                    hidden: Hidden_,
19457
                                    dataIndex: rec.FieldName,
19458
									// isSummary: isSum,
19459
                                    filter: {
19460
                                        itemDefaults: {
19461
                                            emptyText: 'Search for...'
19462
                                        }
19463
                                    },
19464
								autoSizeColumn: true,
19465
								width: 200,
19466
								minWidth: 150,
19467
                                    editor: {
19468
                                        allowBlank: null_,
19469
                                        xtype: 'textfield',
19470
                                        readOnly: ReadOnly_,
19471
                                        id: tableName + rec.FieldName,
19472
                                        value: defaultValue,
19473
                                        listeners: {
19474
                                            change: function (val) {
19475
                                                var custumFunc = rec.SelectFunction;
19476
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19477
                                                    Ext.Ajax.request({
19478
                                                        async: false,
19479
                                                        method: 'POST',
19480
                                                        url: '/UserControl/GetStore',
19481
                                                        params: {
19482
                                                            tableName: 'PCMFUNC',
19483
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19484
                                                        },
19485
                                                        success: function (response) {
19486
                                                            var results = Ext.decode(response.responseText);
19487
                                                            data_ = results.data[0];
19488
                                                            if (data_ != undefined) {
19489
                                                                custumFunc = data_.FunctionCode;
19490
                                                            }
19491
                                                        }
19492
                                                    });
19493
                                                }
19494
                                                if (custumFunc) {
19495
                                                    eval(custumFunc)
19496
                                                }
19497
                                            }
19498
                                        }
19499
                                    }
19500
                                });
19501
                            }
19502
                            break
19503
                    }
19504
                } else {
19505
                    cols.push({
19506
                        text: rec.HeaderTitle,
19507
                        hidden: Hidden_,
19508
                        dataIndex: rec.FieldName,
19509
                        hidden: true,
19510
                        editor: {
19511
                            allowBlank: true,
19512
                            xtype: 'textfield',
19513
                            readOnly: ReadOnly_,
19514
                            id: tableName + rec.FieldName,
19515
                            value: defaultValue
19516
                        },
19517
                        filter: {
19518
                            itemDefaults: {
19519
                                emptyText: 'Search for...'
19520
                            }
19521
                        }
19522
                    });
19523
                }
19524
            });
19525
        };
19526
        addData = addData + "})";
19527
        this.cellEditing = new Ext.grid.plugin.CellEditing({
19528
            clicksToEdit: 1
19529
        });
19530
        Ext.applyIf(me, {
19531
            items: [{
19532
                xtype: 'grid',
19533
                autoScroll: true,
19534
                id: gridName,
19535
                name: gridName,
19536
                height: height,
19537
                store: Ext.create('Ext.data.Store', {
19538
                    storeId: storeID,
19539
                    fields: fieldStore,
19540
                    proxy: {
19541
                        method: 'POST',
19542
                        type: 'ajax',
19543
                        url: '',
19544
                        reader: {
19545
                            type: 'json',
19546
                            root: 'data'
19547
                        }
19548
                    }
19549
                }),
19550
                dockedItems: [{
19551
                    xtype: 'toolbar',
19552
                    items: [{
19553
                        text: 'Add',
19554
                        name: 'add' + tableName,
19555
                        iconCls: 'fa-plus-circle',
19556
                        style: 'font-family: FontAwesome',
19557
                        handler: function () {
19558
                            var store = Ext.StoreMgr.lookup(storeID);
19559
                            var data = eval(addData);
19560
                            if (me.transType == "FIN") {
19561
                                var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
19562
                                var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
19563
                                var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
19564
                                var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
19565
                                data["FiscalPeriod"] = fp;
19566
                                data["FiscalYear"] = fy;
19567
                                data["CompanyID"] = cp;
19568
                                data["BusinessUnit"] = bu;
19569
                            }
19570
                            idx = store.getCount();
19571
                            store.insert(idx, data);
19572
                        }
19573
                    }, {
19574
                        text: 'Delete',
19575
                        name: 'delete' + tableName,
19576
                        iconCls: 'fa-trash-o',
19577
                        style: 'font-family: FontAwesome',
19578
                        handler: function () {
19579
                            var me = this,
19580
                            store = Ext.StoreMgr.lookup(storeID);
19581
                            var grid = Ext.getCmp(gridName);
19582
                            Ext.MessageBox.show({
19583
                                title: 'Remove tab',
19584
                                msg: "This will remove. Do you want to continue?",
19585
                                buttons: Ext.MessageBox.YESNO,
19586
                                fn: function (choice) {
19587
                                    console.log(choice);
19588
                                    if (choice === 'yes') {
19589
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
19590
                                        if (selection) {
19591
                                            store.remove(selection);
19592
                                        }
19593
                                    }
19594
                                }
19595
                            });
19596
                        }
19597
                    }
19598
					,{ //// add by Tri nwh 20211119
19599
                        text: 'Check Stock',
19600
						hidden: hideCheckStock,
19601
                        name: 'checkStock' + tableName,
19602
                        //iconCls: 'fa-trash-o',
19603
                        style: 'font-family: FontAwesome',
19604
                        handler: function () { //add by Tri nwh 20220829
19605
							var getPnl = Ext.ComponentQuery.query('[name=panelTabPTRSALESITEMS]')[0];
19606
							var getTbl = getPnl.query('[name=gridCELLGRIDPTRSALESITEMS]')[0];
19607
							var recC = getTbl.store.getNewRecords(); console.log(recC);
19608
							var obj = [];
19609
							for (var i = 0; i < recC.length; i++) {
19610
								var temp = [];
19611
								temp.push(recC[i]);
19612
								Ext.each(temp, function (rec) {
19613
									var x = Ext.decode(Ext.encode(rec.data));
19614
									obj.push(x);
19615
								});
19616
							}
19617
							var __param = Ext.encode(obj);
19618
							store = Ext.StoreMgr.lookup(storeID);
19619
							var afterCheck = store.getNewRecords();
19620
							if (afterCheck.length != '0') {
19621
								store.remove(afterCheck);
19622
							}
19623
							idx = store.getCount();
19624
							var _data = '';
19625
							Ext.Ajax.request({
19626
								async: false,
19627
								method: 'POST',
19628
								url: '/UserControl/GetStore',
19629
								params: {
19630
									tableName: 'PDSTRALLOCATION',
19631
									param: __param
19632
								},
19633
								success: function (response) {
19634
									var results = Ext.decode(response.responseText);
19635
									_data = results.data;
19636
								}
19637
							});
19638
							store.insert(idx, _data);
19639
						}
19640
                    }
19641
                    ]
19642
                }
19643
                ],
19644
                columns: cols,
19645
                selModel: {
19646
                    type: 'cellmodel'
19647
                },
19648
                plugins: [this.cellEditing],
19649
                //For Auto Size Coloum Mode - Nana
19650
                viewConfig: {
19651
                    emptyText: 'No Data Display',
19652
                    deferEmptyText: false,
19653
                    listeners: {
19654
                        refresh: function (dataview) {
19655
                            Ext.each(dataview.panel.columns, function (column) {
19656
                                if (column.autoSizeColumn == false)
19657
                                    column.autoSizeColumn = true;
19658
                                column.autoSize();
19659
                            })
19660
                        }
19661
                    }
19662
                },listeners: {
19663
					'beforeedit': function (editor, e, eOpts) {
19664
						if (e.colIdx == 2 && tableName == 'PTRMATERIALITEM') {
19665
							var store = Ext.StoreMgr.lookup('store_' + tableName + 'MaterialID');
19666
							var itemType = e.record.get('ItemType');
19667
							console.log(itemType);
19668
							if (itemType == '0') {
19669
								store.proxy.extraParams = {
19670
									tableName: 'PDSTRANSITEMS',
19671
									param: "TableName[=]PMDMAT0001",
19672
									menuId: MinovaUtil.GetMenuID()
19673
								};
19674
							} else if (itemType == '1') {
19675
								store.proxy.extraParams = {
19676
									tableName: 'PDSTRANSITEMS',
19677
									param: "TableName[=]PMDSRV0001",
19678
									menuId: MinovaUtil.GetMenuID()
19679
								};
19680
							} else if (itemType == '2') {
19681
								store.proxy.extraParams = {
19682
									tableName: 'PDSTRANSITEMS',
19683
									param: "TableName[=]PMDAST0001",
19684
									menuId: MinovaUtil.GetMenuID()
19685
								};
19686
							} else if (itemType == 'Material') {
19687
								store.proxy.extraParams = {
19688
									tableName: 'PDSTRANSITEMS',
19689
									param: "TableName[=]PMDMAT0001",
19690
									menuId: MinovaUtil.GetMenuID()
19691
								};
19692
							} else {
19693
								store.proxy.extraParams = {
19694
									tableName: '',
19695
									param: "",
19696
									menuId: MinovaUtil.GetMenuID()
19697
								};
19698
							}
19699
							store.removeAll();
19700
							store.reload();
19701
						}
19702
					}
19703
					}
19704
            }
19705
            ]
19706
        });
19707
        me.callParent(arguments);
19708
    }
19709
});
19710
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid Sum For ERP )*/
19711
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEditSum', {
19712
	extend: 'Ext.form.Panel',
19713
	alias: 'widget.docgridcelleditsum',
19714
	requires: [
19715
		'Ext.grid.plugin.CellEditing',
19716
		'Ext.grid.Panel',
19717
		'Ext.grid.RowNumberer'
19718
	],
19719
	autoScroll: true,
19720
	anchor: '100%',
19721
	tableName: undefined,
19722
	docType: undefined,
19723
	transType: undefined,
19724
	docNo: undefined,
19725
	hideButton: undefined,
19726
	multiSelect: undefined,
19727
	initComponent: function () {
19728
		var me = this;
19729
		var isLookup = me.isLookup;
19730
		var hide_ = false;
19731
		var hideUploadDownload = false;
19732
		var widthLock = 250;
19733
		var checkSelection = '';
19734
		
19735
		Ext.Ajax.request({
19736
			async: false,
19737
			method: 'POST',
19738
			url: '/UserControl/GetStore',
19739
			params: {
19740
				tableName: "PCMBSTRANSLIST",
19741
				param: 'TableName[=]' + me.tableName + ',' + 'DocType[=]' + me.docType		// add Tri nwh 20240220
19742
			},
19743
			success: function (response) {
19744
				var results = Ext.decode(response.responseText);
19745
				if (results.data[0].UploadDownloadEnable == '0') {
19746
					hideUploadDownload = true;
19747
				} else {
19748
					hideUploadDownload = false;
19749
				}
19750
			}
19751
		});
19752

    
19753
		if (me.hideButton == true) {
19754
			hide_ = true;
19755
		}
19756
		if (me.multiSelect) {
19757
			locking = false;
19758
			checkSelection = 'checkboxmodel';
19759
			widthLock = 40;
19760
		}
19761
		var tableName = me.tableName;
19762
		var cols = [];
19763
		var fieldStore = [];
19764
		var _url = 'GetAllField';
19765
		var hasil = null;
19766
		var height = me.height;
19767
		var storeID = 'store' + me.tableName;
19768
		var gridName = 'grid' + me.name;
19769
		if (me.storeName) {
19770
			storeID = me.storeName;
19771
		}
19772
		var LangID = MinovaUtil.GetLangID();
19773
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
19774
		Ext.Ajax.request({
19775
			async: false,
19776
			method: 'POST',
19777
			url: '/UserControl/GetStore',
19778
			params: {
19779
				tableName: 'PDSDOCFIELD',
19780
				param: parameter
19781
			},
19782
			success: function (response) {
19783
				var results = Ext.decode(response.responseText);
19784
				hasil = results.data;
19785
			}
19786
		});
19787
		cols.push({
19788
			xtype: 'rownumberer'
19789
		});
19790
		var addData = '({';
19791
		if (hasil.length > 0) {
19792
			Ext.each(hasil, function (rec) {
19793
				fieldStore.push(rec.FieldName);
19794
				var defaultValue = rec.DefaultValue;
19795
				if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
19796
					Ext.Ajax.request({
19797
						async: false,
19798
						method: 'POST',
19799
						url: '/UserControl/GetStore',
19800
						params: {
19801
							tableName: 'PCMFUNC',
19802
							param: 'FuncName[equal]' + rec.DefaultValue
19803
						},
19804
						success: function (response) {
19805
							var results = Ext.decode(response.responseText);
19806
							data_ = results.data;
19807
							if (data_.length > 0) {
19808
								defaultValue = eval(data_[0].FunctionCode);
19809
							}
19810
						}
19811
					});
19812
				}
19813
				addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
19814
				var null_ = null;
19815
				var ReadOnly_ = false;
19816
				if (rec.IsPrimaryKey == true) {
19817
					null_ = false;
19818
				}
19819
				if (rec.IsRequired == true) {
19820
					null_ = false;
19821
				} else {
19822
					null_ = true;
19823
				}
19824
				var Hidden_ = false;
19825
				if (rec.ReadOnly == '1') {
19826
					ReadOnly_ = true;
19827
				}
19828
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
19829
					Hidden_ = true;
19830
					null_ = true;
19831
				}
19832
				var isSum = rec.IsSummary;
19833
				if (rec.GridView == 1) {
19834
					switch (rec.FormatRef) {
19835
					case "date":
19836
						cols.push({
19837
							xtype: 'minovadatecolumn',
19838
							hidden: Hidden_,
19839
							text: rec.HeaderTitle,
19840
							dataIndex: rec.FieldName,
19841
							filter: {
19842
								itemDefaults: {
19843
									emptyText: 'Search for...'
19844
								}
19845
							},
19846
							isSummary: isSum,
19847
							editor: {
19848
								allowBlank: null_,
19849
								xtype: 'datefield',
19850
								hideMode: 'visibility',
19851
								readOnly: ReadOnly_,
19852
								id: tableName + rec.FieldName,
19853
								value: defaultValue
19854
							}
19855
						});
19856
						break
19857
					case "amount":
19858
						cols.push({
19859
							xtype: 'numbercolumn',
19860
							text: rec.HeaderTitle,
19861
							align: 'right',
19862
							dataIndex: rec.FieldName,
19863
							isSummary: isSum,
19864
							hidden: Hidden_,
19865
							filter: {
19866
								itemDefaults: {
19867
									emptyText: 'Search for...'
19868
								}
19869
							},						
19870
							autoSizeColumn: false,
19871
							width: 140,
19872
							editor: {
19873
								allowBlank: null_,
19874
								xtype: 'textfield',
19875
								readOnly: ReadOnly_,
19876
								id: tableName + rec.FieldName,
19877
								nameTable: rec.TableName,
19878
								fieldGrid: rec.FieldName,
19879
								fieldStyle: 'text-align:right;',
19880
								vtype: 'validateMinovaNumber',
19881
								value: '0',
19882
								listeners: {
19883
									change: function (val, recs) {
19884
										var fvalue = val.getValue();
19885
										var custumFunc = rec.SelectFunction;
19886
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19887
											Ext.Ajax.request({
19888
												async: false,
19889
												method: 'POST',
19890
												url: '/UserControl/GetStore',
19891
												params: {
19892
													tableName: 'PCMFUNC',
19893
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19894
												},
19895
												success: function (response) {
19896
													var results = Ext.decode(response.responseText);
19897
													var dt = results.data[0];
19898
													if (dt != undefined) {
19899
														custumFunc = dt.FunctionCode;
19900
													}
19901
												}
19902
											});
19903
										}
19904
										if (custumFunc) {
19905
											eval(custumFunc)
19906
										}
19907
									}
19908
								}
19909
							}
19910
						});
19911
						break
19912
					default:
19913
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
19914
							cols.push({
19915
								text: rec.HeaderTitle,
19916
								dataIndex: rec.FieldName,
19917
								width: 100,
19918
								isSummary: isSum,
19919
								filter: {
19920
									type: 'string',
19921
									itemDefaults: {
19922
										emptyText: 'Search for...'
19923
									}
19924
								}
19925
							});
19926
						} else if (rec.SearchType == '0') {
19927
							var valueField = null;
19928
							var displayValue = null;
19929
							var TableRef = undefined;
19930
							if (rec.TableRef != '') {
19931
								TableRef = rec.TableRef;
19932
								Ext.Ajax.request({
19933
									async: false,
19934
									method: 'POST',
19935
									url: '/UserControl/GetStore',
19936
									params: {
19937
										tableName: 'SDATATABLEFIELD',
19938
										param: 'TableName[equal]' + rec.TableRef
19939
									},
19940
									success: function (response) {
19941
										var results = Ext.decode(response.responseText);
19942
										data_ = results.data;
19943
										if (data_ != undefined) {
19944
											valueField_ = $.grep(data_, function (r) {
19945
													return r.ValueField == '1'
19946
												});
19947
											valueField = valueField_[0].FieldName
19948
												displayValue_ = $.grep(data_, function (r) {
19949
													return r.DisplayValue == '1'
19950
												});
19951
											displayValue = displayValue_[0].FieldName
19952
										}
19953
									}
19954
								});
19955
							}
19956
							Ext.create('Ext.data.Store', {
19957
								storeId: 'store_' + me.tableName + rec.FieldName,
19958
								autoLoad: true,
19959
								proxy: {
19960
									method: 'POST',
19961
									type: 'ajax',
19962
									url: '/UserControl/GetStoreAuth',
19963
									extraParams: {
19964
										tableName: TableRef,
19965
										param: rec.ParamCombo,
19966
										menuId: MinovaUtil.GetMenuID()
19967
									},
19968
									reader: {
19969
										type: 'json',
19970
										root: 'data',
19971
										totalProperty: 'data[0].TotalCount'
19972
									}
19973
								}
19974
							});
19975
							cols.push({
19976
								xtype: 'minovacombocolumn',
19977
								hidden: Hidden_,
19978
								text: rec.HeaderTitle,
19979
								dataIndex: rec.FieldName,
19980
								valueField: valueField,
19981
								displayField: displayValue,
19982
								store: 'store_' + me.tableName + rec.FieldName,
19983
								isSummary: isSum,
19984
								autoSizeColumn: true,
19985
								width: 200,
19986
								minWidth: 150,
19987
								editor: {
19988
									allowBlank: null_,
19989
									xtype: 'minovacombobox',
19990
									readOnly: ReadOnly_,
19991
									id: tableName + rec.FieldName,
19992
									valueField: valueField,
19993
									displayField: displayValue,
19994
									store: 'store_' + me.tableName + rec.FieldName,
19995
									forceSelection: false,
19996
									lazyRender: true,
19997
									listeners: {
19998
										change: function (val) {
19999
											var fvalue = val.getValue();
20000
											var custumFunc = rec.SelectFunction;
20001
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20002
												Ext.Ajax.request({
20003
													async: false,
20004
													method: 'POST',
20005
													url: '/UserControl/GetStore',
20006
													params: {
20007
														tableName: 'PCMFUNC',
20008
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20009
													},
20010
													success: function (response) {
20011
														var results = Ext.decode(response.responseText);
20012
														var dt = results.data[0];
20013
														if (dt != undefined) {
20014
															custumFunc = dt.FunctionCode;
20015
														}
20016
													}
20017
												});
20018
											}
20019
											if (custumFunc) {
20020
												eval(custumFunc)
20021
											}
20022
										}
20023
									}
20024
								},
20025
								filter: {
20026
									type: 'list',
20027
									itemDefaults: {
20028
										emptyText: 'Search for...'
20029
									}
20030
								}
20031
							});
20032
						} else if (rec.SearchType == '5') {
20033
							var valueField = null;
20034
							var displayValue = null;
20035
							var AdditionaldisplayValue = null;
20036
							var TableRef = undefined;
20037
							if (rec.TableRef != '') {
20038
								TableRef = rec.TableRef;
20039
								Ext.Ajax.request({
20040
									async: false,
20041
									method: 'POST',
20042
									url: '/UserControl/GetStore',
20043
									params: {
20044
										tableName: 'SDATATABLEFIELD',
20045
										param: 'TableName[equal]' + rec.TableRef
20046
									},
20047
									success: function (response) {
20048
										var results = Ext.decode(response.responseText);
20049
										data_ = results.data;
20050
										if (data_ != undefined) {
20051
											valueField_ = $.grep(data_, function (r) {
20052
													return r.ValueField == '1'
20053
												});
20054
											if (valueField_.length > 0) {
20055
												valueField = valueField_[0].FieldName
20056
											}
20057

    
20058
											displayValue_ = $.grep(data_, function (r) {
20059
													return r.DisplayValue == '1' || r.DisplayValue == '2'
20060
												});
20061
											if (displayValue_.length > 0) {
20062
												displayValue = displayValue_[0].FieldName;
20063
											}
20064
											if (displayValue_.length >= 2) {
20065
												AdditionaldisplayValue = displayValue_[1].FieldName
20066
											}
20067
										}
20068
									}
20069
								});
20070
							}
20071
							Ext.create('Ext.data.Store', {
20072
								storeId: 'store_' + me.tableName + rec.FieldName,
20073
								autoLoad: true,
20074
								proxy: {
20075
									method: 'POST',
20076
									type: 'ajax',
20077
									url: '/UserControl/GetStoreAuth',
20078
									extraParams: {
20079
										tableName: TableRef,
20080
										param: rec.ParamCombo,
20081
										menuId: MinovaUtil.GetMenuID()
20082
									},
20083
									reader: {
20084
										type: 'json',
20085
										root: 'data',
20086
										totalProperty: 'data[0].TotalCount'
20087
									}
20088
								}
20089
							});
20090
							cols.push({
20091
								xtype: 'minovacombocolumn',
20092
								hidden: Hidden_,
20093
								text: rec.HeaderTitle,
20094
								dataIndex: rec.FieldName,
20095
								valueField: valueField,
20096
								displayField: displayValue,
20097
								store: 'store_' + me.tableName + rec.FieldName,
20098
								tpl: Ext.create('Ext.XTemplate',
20099
									'<ul class="x-list-plain"><tpl for=".">',
20100
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20101
									'</tpl></ul>'),
20102
								displayTpl: Ext.create('Ext.XTemplate',
20103
									'<tpl for=".">',
20104
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20105
									'</tpl>'),
20106
								editor: {
20107
									allowBlank: null_,
20108
									xtype: 'combobox',
20109
									readOnly: ReadOnly_,
20110
									id: rec.TableName + rec.FieldName,
20111
									nameTable: rec.TableName,
20112
									fieldGrid: rec.FieldName,
20113
									valueField: valueField,
20114
									displayField: displayValue,
20115
									store: 'store_' + me.tableName + rec.FieldName,
20116
									value: rec.DefaultValue,
20117
									tpl: Ext.create('Ext.XTemplate',
20118
										'<ul class="x-list-plain"><tpl for=".">',
20119
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20120
										'</tpl></ul>'),
20121
									displayTpl: Ext.create('Ext.XTemplate',
20122
										'<tpl for=".">',
20123
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20124
										'</tpl>'),
20125
										listeners: {
20126
										change: function (val) {
20127
											var fvalue = val.getValue();
20128
											var custumFunc = rec.SelectFunction;
20129
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20130
												Ext.Ajax.request({
20131
													async: false,
20132
													method: 'POST',
20133
													url: '/UserControl/GetStore',
20134
													params: {
20135
														tableName: 'PCMFUNC',
20136
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20137
													},
20138
													success: function (response) {
20139
														var results = Ext.decode(response.responseText);
20140
														var dt = results.data[0];
20141
														if (dt != undefined) {
20142
															custumFunc = dt.FunctionCode;
20143
														}
20144
													}
20145
												});
20146
											}
20147
											if (custumFunc) {
20148
												eval(custumFunc)
20149
											}
20150
										}
20151
									}
20152

    
20153
								},
20154
								renderer: function (value) {
20155
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
20156
									console.log(store);
20157
									var index = store.find(valueField, value);
20158
									var val = "";
20159
									if (index != -1) {
20160
										var rc = store.getAt(index);
20161
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
20162
									} else {
20163
										val = value;
20164
									}
20165
									return val;
20166
								},
20167
								filter: {
20168
									type: 'list',
20169
									itemDefaults: {
20170
										emptyText: 'Search for...'
20171
									}
20172
								},
20173
								tpl: Ext.create('Ext.XTemplate',
20174
									'<ul class="x-list-plain"><tpl for=".">',
20175
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20176
									'</tpl></ul>'),
20177
								displayTpl: Ext.create('Ext.XTemplate',
20178
									'<tpl for=".">',
20179
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20180
									'</tpl>')
20181
							});
20182
						} else if (rec.SearchType == '2') {
20183
							var triger = (rec.TriggerCombo).split('$');
20184
							var targetField_ = triger[0];
20185
							var fieldValue_ = triger[1];
20186
							cols.push({
20187
								text: rec.HeaderTitle,
20188
								hidden: Hidden_,
20189
								dataIndex: rec.FieldName,
20190
								isSummary: isSum,
20191
								filter: {
20192
									itemDefaults: {
20193
										emptyText: 'Search for...'
20194
									}
20195
								},
20196
								autoSizeColumn: true,
20197
								width: 200,
20198
								editor: {
20199
									allowBlank: null_,
20200
									xtype: 'minovalookupgrid',
20201
									readOnly: ReadOnly_,
20202
									isGrid: true,
20203
									fieldTarget: targetField_,
20204
									fieldValue: fieldValue_,
20205
									isGrid: true,
20206
									id: tableName + rec.FieldName,
20207
									tableName: rec.TableRef,
20208
									triggerCls: 'x-form-search-trigger',
20209
									vtype: 'alphanum',
20210
									listeners: {
20211
										change: function (val) {
20212
											var custumFunc = rec.SelectFunction;
20213
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20214
												Ext.Ajax.request({
20215
													async: false,
20216
													method: 'POST',
20217
													url: '/UserControl/GetStore',
20218
													params: {
20219
														tableName: 'PCMFUNC',
20220
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20221
													},
20222
													success: function (response) {
20223
														var results = Ext.decode(response.responseText);
20224
														var dt = results.data[0];
20225
														if (dt != undefined) {
20226
															custumFunc = dt.FunctionCode;
20227
														}
20228
													}
20229
												});
20230
											}
20231
											if (custumFunc) {
20232
												eval(custumFunc)
20233
											}
20234
										}
20235
									}
20236
								}
20237
							});
20238
						} else if (rec.SearchType == '3') {
20239
							cols.push({
20240
								text: rec.HeaderTitle,
20241
								hidden: Hidden_,
20242
								dataIndex: rec.FieldName,
20243
								isSummary: isSum,
20244
								filter: {
20245
									itemDefaults: {
20246
										emptyText: 'Search for...'
20247
									}
20248
								},
20249
								autoSizeColumn: true,
20250
								width: 200,
20251
								editor: {
20252
									allowBlank: null_,
20253
									xtype: 'MinovaLookupTree',
20254
									readOnly: ReadOnly_,
20255
									id: tableName + rec.FieldName,
20256
									tableName: rec.TableRef,
20257
									triggerCls: 'x-form-search-trigger',
20258
									vtype: 'alphanum',
20259
									treeSructure: rec.SearchFunction,
20260
									objClassValue: rec.ParamCombo,
20261
									listeners: {
20262
										change: function (val) {
20263
											var custumFunc = rec.SelectFunction;
20264
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20265
												Ext.Ajax.request({
20266
													async: false,
20267
													method: 'POST',
20268
													url: '/UserControl/GetStore',
20269
													params: {
20270
														tableName: 'PCMFUNC',
20271
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20272
													},
20273
													success: function (response) {
20274
														var results = Ext.decode(response.responseText);
20275
														var dt = results.data[0];
20276
														if (dt != undefined) {
20277
															custumFunc = dt.FunctionCode;
20278
														}
20279
													}
20280
												});
20281
											}
20282
											if (custumFunc) {
20283
												eval(custumFunc)
20284
											}
20285
										}
20286
									}
20287
								}
20288
							});
20289
						} 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) {
20290
							var triger = (rec.TriggerCombo).split('&');
20291
							var targetField_ = triger[0];
20292
							var fieldValue_ = triger[0];
20293
							cols.push({
20294
								text: rec.HeaderTitle,
20295
								hidden: Hidden_,
20296
								dataIndex: rec.FieldName,
20297
								isSummary: isSum,
20298
								filter: {
20299
									itemDefaults: {
20300
										emptyText: 'Search for...'
20301
									}
20302
								},
20303
								autoSizeColumn: true,
20304
								width: 200,
20305
								editor: {
20306
									allowBlank: null_,
20307
									xtype: 'lookupemployee',
20308
									readOnly: ReadOnly_,
20309
									isGrid: true,
20310
									fieldTarget: targetField_,
20311
									fieldValue: fieldValue_,
20312
									isGrid: true,
20313
									id: tableName + rec.FieldName,
20314
									tableName: rec.TableRef,
20315
									triggerCls: 'x-form-search-trigger',
20316
									vtype: 'alphanum',
20317
									listeners: {
20318
										change: function (val) {
20319
											var custumFunc = rec.SelectFunction;
20320
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20321
												Ext.Ajax.request({
20322
													async: false,
20323
													method: 'POST',
20324
													url: '/UserControl/GetStore',
20325
													params: {
20326
														tableName: 'PCMFUNC',
20327
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20328
													},
20329
													success: function (response) {
20330
														var results = Ext.decode(response.responseText);
20331
														var dt = results.data[0];
20332
														if (dt != undefined) {
20333
															custumFunc = dt.FunctionCode;
20334
														}
20335
													}
20336
												});
20337
											}
20338
											if (custumFunc) {
20339
												eval(custumFunc)
20340
											}
20341
										}
20342
									}
20343
								}
20344
							});
20345
						} else if (rec.SearchType == '4' && isLookup != true) {
20346
							cols.push({
20347
								text: rec.HeaderTitle,
20348
								hidden: Hidden_,
20349
								dataIndex: rec.FieldName,
20350
								isSummary: isSum,
20351
								filter: {
20352
									itemDefaults: {
20353
										emptyText: 'Search for...'
20354
									}
20355
								},
20356
								autoSizeColumn: true,
20357
								width: 200,
20358
								editor: {
20359
									allowBlank: null_,
20360
									xtype: 'lookupemployee',
20361
									readOnly: ReadOnly_,
20362
									isGrid: true,
20363
									fieldTarget: targetField_,
20364
									fieldValue: fieldValue_,
20365
									isGrid: true,
20366
									id: tableName + rec.FieldName,
20367
									tableName: rec.TableRef,
20368
									triggerCls: 'x-form-search-trigger',
20369
									vtype: 'alphanum',
20370
									listeners: {
20371
										change: function (val) {
20372
											var custumFunc = rec.SelectFunction;
20373
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20374
												Ext.Ajax.request({
20375
													async: false,
20376
													method: 'POST',
20377
													url: '/UserControl/GetStore',
20378
													params: {
20379
														tableName: 'PCMFUNC',
20380
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20381
													},
20382
													success: function (response) {
20383
														var results = Ext.decode(response.responseText);
20384
														var dt = results.data[0];
20385
														if (dt != undefined) {
20386
															custumFunc = dt.FunctionCode;
20387
														}
20388
													}
20389
												});
20390
											}
20391
											if (custumFunc) {
20392
												eval(custumFunc)
20393
											}
20394
										}
20395
									}
20396
								}
20397
							});
20398
						} else if (rec.FixedValue != '') {
20399
							cols.push({
20400
								text: rec.HeaderTitle,
20401
								hidden: Hidden_,
20402
								dataIndex: rec.FieldName,
20403
								isSummary: isSum,
20404
								filter: {
20405
									itemDefaults: {
20406
										emptyText: 'Search for...'
20407
									}
20408
								},
20409
								autoSizeColumn: true,
20410
								width: 200,
20411
								editor: {
20412
									allowBlank: null_,
20413
									xtype: 'minovafixvalue',
20414
									readOnly: ReadOnly_,
20415
									forceSelection: false,
20416
									id: tableName + rec.FieldName,
20417
									nameTable: tableName,
20418
									fieldGrid: rec.FieldName,
20419
									fixedValue: rec.FixedValue,
20420
									valueField: 'code',
20421
									displayField: 'desc',
20422
									value: defaultValue,
20423
									/*Add by Midi 12 Juni 2019*/
20424
									listeners: {
20425
										change: function (val) {
20426
											var custumFunc = rec.SelectFunction;
20427
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20428
												Ext.Ajax.request({
20429
													async: false,
20430
													method: 'POST',
20431
													url: '/UserControl/GetStore',
20432
													params: {
20433
														tableName: 'PCMFUNC',
20434
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20435
													},
20436
													success: function (response) {
20437
														var results = Ext.decode(response.responseText);
20438
														var dt = results.data[0];
20439
														if (dt != undefined) {
20440
															custumFunc = dt.FunctionCode;
20441
														}
20442
													}
20443
												});
20444
											}
20445
											if (custumFunc) {
20446
												eval(custumFunc)
20447
											}
20448
										}
20449
									}
20450
									//
20451
								},
20452
								renderer: function (value) {
20453
									var val = "";
20454
									var storeData = [];
20455
									var str = rec.FixedValue;
20456
									var hasil = str.split('||');
20457
									hasil.forEach(function (h) {
20458
										store_ = h.split('=')
20459
											storeData.push({
20460
												code: store_[0],
20461
												desc: store_[1]
20462
											});
20463
									});
20464
									var item = storeData.find(x => x.code == value);
20465
									if (item != undefined) {
20466
										val = item.desc;
20467
									}
20468
									return val;
20469
								}
20470
							});
20471
						} else if (rec.FieldDataType == 3) {
20472
							cols.push({
20473
								text: rec.HeaderTitle,
20474
								hidden: Hidden_,
20475
								dataIndex: rec.FieldName,
20476
								isSummary: isSum,
20477
								filter: {
20478
									itemDefaults: {
20479
										emptyText: 'Search for...'
20480
									}
20481
								},
20482
								autoSizeColumn: true,
20483
								width: 200,
20484
								editor: {
20485
									allowBlank: null_,
20486
									xtype: 'textfield',
20487
									readOnly: ReadOnly_,
20488
									id: tableName + rec.FieldName,
20489
									nameTable: rec.TableName,
20490
									fieldGrid: rec.FieldName,
20491
									vtype: 'validateDecimal',
20492
									maxLength: rec.Length,
20493
									precision: rec.Prec,
20494
									fieldStyle: 'text-align:right;',
20495
									value: defaultValue,
20496
									listeners: {
20497
										change: function (val) {
20498
											var custumFunc = rec.SelectFunction;
20499
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20500
												Ext.Ajax.request({
20501
													async: false,
20502
													method: 'POST',
20503
													url: '/UserControl/GetStore',
20504
													params: {
20505
														tableName: 'PCMFUNC',
20506
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20507
													},
20508
													success: function (response) {
20509
														var results = Ext.decode(response.responseText);
20510
														var dt = results.data[0];
20511
														if (dt != undefined) {
20512
															custumFunc = dt.FunctionCode;
20513
														}
20514
													}
20515
												});
20516
											}
20517
											if (custumFunc) {
20518
												eval(custumFunc)
20519
											}
20520
										}
20521
									}
20522
								}
20523
							});
20524
						} else {
20525
							cols.push({
20526
								text: rec.HeaderTitle,
20527
								hidden: Hidden_,
20528
								dataIndex: rec.FieldName,
20529
								isSummary: isSum,
20530
								filter: {
20531
									itemDefaults: {
20532
										emptyText: 'Search for...'
20533
									}
20534
								},
20535
								autoSizeColumn: true,
20536
								width: 200,
20537
								editor: {
20538
									allowBlank: null_,
20539
									xtype: 'textfield',
20540
									readOnly: ReadOnly_,
20541
									id: tableName + rec.FieldName,
20542
									value: defaultValue,
20543
									vtype: 'validateMinovaXss', //// Tri 20210906
20544
									listeners: {
20545
										change: function (val) {
20546
											var custumFunc = rec.SelectFunction;
20547
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20548
												Ext.Ajax.request({
20549
													async: false,
20550
													method: 'POST',
20551
													url: '/UserControl/GetStore',
20552
													params: {
20553
														tableName: 'PCMFUNC',
20554
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20555
													},
20556
													success: function (response) {
20557
														var results = Ext.decode(response.responseText);
20558
														var dt = results.data[0];
20559
														if (dt != undefined) {
20560
															custumFunc = dt.FunctionCode;
20561
														}
20562
													}
20563
												});
20564
											}
20565
											if (custumFunc) {
20566
												eval(custumFunc)
20567
											}
20568
										}
20569
									}
20570
								}
20571
							});
20572
						}
20573
						break
20574
					}
20575
				} else {
20576
					cols.push({
20577
						text: rec.HeaderTitle,
20578
						hidden: Hidden_,
20579
						dataIndex: rec.FieldName,
20580
						isSummary: isSum,
20581
						hidden: true,
20582
						editor: {
20583
							allowBlank: true,
20584
							xtype: 'textfield',
20585
							readOnly: ReadOnly_,
20586
							id: tableName + rec.FieldName,
20587
							value: defaultValue,
20588
							vtype: 'validateMinovaXss' //// Tri 20210906
20589
						},
20590
						filter: {
20591
							itemDefaults: {
20592
								emptyText: 'Search for...'
20593
							}
20594
						}
20595
					});
20596
				}
20597
			});
20598
		};
20599
		addData = addData + "})";
20600
		Ext.applyIf(me, {
20601
			items: [{
20602
					xtype: 'grid',
20603
					autoScroll: true,
20604
					id: gridName,
20605
					name: gridName,
20606
					height: height,
20607
					store: Ext.create('Ext.data.Store', {
20608
						storeId: storeID,
20609
						fields: fieldStore,
20610
						proxy: {
20611
							method: 'POST',
20612
							type: 'ajax',
20613
							url: '',
20614
							reader: {
20615
								type: 'json',
20616
								root: 'data'
20617
							}
20618
						}
20619
					}),
20620
					dockedItems: [{
20621
							xtype: 'toolbar',
20622
							items: [{
20623
									text: 'Add',
20624
									hidden: hide_,
20625
									name: 'add' + tableName,
20626
									iconCls: 'fa-plus-circle',
20627
									style: 'font-family: FontAwesome',
20628
									handler: function () {
20629
										var store = Ext.StoreMgr.lookup(storeID);
20630
										var data = eval(addData);
20631
										if (me.transType == "FIN") {
20632
											var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
20633
											var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
20634
											var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
20635
											var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
20636
											var cc = Ext.ComponentQuery.query("[name=CostCenter]")[0].getValue();
20637
											// var desc = Ext.ComponentQuery.query("[name=Description]")[0].getValue();
20638
											data["FiscalPeriod"] = fp;
20639
											data["FiscalYear"] = fy;
20640
											data["CompanyID"] = cp;
20641
											data["BusinessUnit"] = bu;
20642
											// data["CostCenter"] = cc;
20643
											// data["Description"] = desc;
20644
										}
20645
										/*idx = store.getCount();
20646
										store.insert(idx, data);*/
20647
										
20648
										idx = store.getCount();
20649
										if(parseFloat(idx) <= 39) //// Tri 20210907
20650
										{
20651
											if(store.getCount() > 0 && me.transType == "FIN") //// Tri nwh 20211111, edit by Tri nwh 20220420
20652
											{	console.log('siwan'); 
20653
												var IsCostCenter = '';
20654
												var grid = Ext.getCmp(gridName);
20655
												var selection = grid.getView().getSelectionModel().getSelection()[0];
20656
												if( selection != undefined)   //// add by Tri nwh 20211124
20657
												{
20658
													var GLAccountID = selection.data.GLAccountID;
20659
													var CostCenter = selection.data.CostCenter;
20660
													MinovaUtil.ExecuteParamQuery({
20661
														ID: 'FINANCEITEMISCOSTCENTER',
20662
														GlAccountID: GLAccountID
20663
													}, function (s) {
20664
														var result = Ext.decode(s.responseText);
20665
														var dt = Ext.decode(Ext.decode(result.data));
20666
														IsCostCenter = dt[0].CostCenter;
20667
													});
20668
												}
20669
												
20670
												if(IsCostCenter == '1')
20671
												{	console.log('chani');
20672
													var panelHead = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
20673
													var formheader = panelHead.getForm();
20674
													console.log(formheader.findField("DocStatus").getValue());
20675
													if(formheader.findField("DocStatus").getValue() == '9')
20676
													{
20677
														if(CostCenter == '' || CostCenter.isnull == true)
20678
														{	console.log('1');
20679
															alert('please fill field cost center'); 
20680
														}
20681
														else
20682
														{	console.log('2');
20683
															store.insert(idx, data);
20684
														}
20685
													}
20686
													else
20687
													{	console.log('3');
20688
														store.insert(idx, data);
20689
													}
20690
												}
20691
												else
20692
												{	console.log('4');
20693
													store.insert(idx, data);
20694
												}
20695
											}
20696
											else
20697
											{	console.log('5');
20698
												store.insert(idx, data);
20699
											}
20700
											//alert('nwh');
20701
											
20702
										}
20703
										else if (parseFloat(idx) > 39)
20704
										{
20705
											var tb = Ext.ComponentQuery.query('[name=panelTab]')[0];
20706
											var activeTab = tb.activeTab;
20707
											var tbl = activeTab.tbl;
20708
											var btnadd = Ext.ComponentQuery.query('[name=add' + tbl + ']')[0].setDisabled(true);
20709
											//alert('Can not insert data, because row data has reached the maximum');
20710
											alert('Anda sudah melebihi batas maksimal penginputan');
20711
										}
20712
									}
20713
	
20714
								}, {
20715
									text: 'Delete',
20716
									hidden: hide_,
20717
									name: 'delete' + tableName,
20718
									iconCls: 'fa-trash-o',
20719
									style: 'font-family: FontAwesome',
20720
									handler: function () {
20721
										var me = this,
20722
										store = Ext.StoreMgr.lookup(storeID)
20723
											var grid = Ext.getCmp(gridName);
20724
										Ext.MessageBox.show({
20725
											title: 'Remove tab',
20726
											msg: "This will remove. Do you want to continue?",
20727
											buttons: Ext.MessageBox.YESNO,
20728
											fn: function (choice) {
20729
												if (choice === 'yes') {
20730
													var selection = grid.getView().getSelectionModel().getSelection()[0];
20731
													if (selection) {
20732
														store.remove(selection);
20733
														var amountdebet = selection.data.AmountDebetCompCurr;  ////// add by tri yooma
20734
														var amountcredit = selection.data.AmountCreditCompCurr;
20735
														var totdebetexist = Ext.ComponentQuery.query('[name=TotalDebet]')[0].getValue().toString();
20736
														var totdebet =  parseFloat(totdebetexist.toString().replace(',', '')) - parseFloat(amountdebet);
20737
														var totcredit = parseFloat(Ext.ComponentQuery.query('[name=TotalCredit]')[0].getValue().toString().replace(',', '')) - amountcredit;
20738
														Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(totdebet);
20739
														Ext.ComponentQuery.query('[name=AmountDebet]')[0].setValue(Ext.util.Format.number(totdebet, '0,000.00'));	
20740
														Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(totcredit);
20741
														Ext.ComponentQuery.query('[name=AmountCredit]')[0].setValue(Ext.util.Format.number(totcredit, '0,000.00'));
20742
														//alert('nwh');
20743
													}
20744
												}
20745
											}
20746
										});
20747
									}
20748
								}, {
20749
									xtype: 'filefield',
20750
									buttonOnly: true,
20751
									buttonConfig: {
20752
										width: 160,
20753
										text: 'Upload',
20754
										ui: 'default-toolbar',
20755
										iconCls: 'icon-arrow-up',
20756
										style: 'font-family: FontAwesome',
20757
										hidden: hideUploadDownload,
20758
										name: 'upload' + tableName,
20759
										html: "<input id='inputFile' type='file' name='uploaded'/>",
20760
									},
20761
									listeners: {
20762
										change: function (f, value) {
20763
											var store = Ext.StoreMgr.lookup(storeID);
20764
											var newValue = '';
20765
											var afterDot = '';
20766
											var files = event.target.files;
20767
											var fileName = files[0].name;
20768
											var fileType = fileName.substr(fileName.indexOf('.'));
20769
											if (!files || files.length == 0) {
20770
												MinovaMessageError("File Error", "FILOFILE", "");
20771
											} else {
20772
												if (fileType == '.xls' || fileType == '.xlsx') {
20773
													var reader = new FileReader();
20774

    
20775
													//For Browsers other than IE.
20776
													if (reader.readAsBinaryString) {
20777
														reader.onload = function (e) {
20778
															var data = e.target.result;
20779
															//Read the Excel File data.
20780
															var workbook = XLSX.read(data, {
20781
																	type: 'binary'
20782
																});
20783
															//Fetch the name of First Sheet.
20784
															var firstSheet = workbook.SheetNames[0];
20785

    
20786
															//Read all rows from First Sheet into an JSON array.
20787
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
20788
															var data = eval(excelRows);
20789
															var dataLength = data.length;
20790
															idx = store.getCount();
20791
															var seq = idx + 1;
20792
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
20793
															for (var i = 0; i < dataLength; i++) {
20794
																data[i]["DocNo"] = dn;
20795
																data[i]["DocItemID"] = seq;
20796
																if (me.transType == "MTR" || me.transType == "PUR") {
20797
																	data[i].ARAPID = "";
20798
																	data[i].DocItemRef = "";
20799
																}
20800
																if (me.transType == "MTR") {
20801
																	data[i].Storage = "";
20802
																}
20803
																seq = seq + 1;
20804
															}
20805

    
20806
															var fields = store.model.getFields();
20807
															var gridFields = []
20808
															for (var i = 0; i < fields.length; i++) {
20809
																gridFields.push(fields[i].name);
20810
															}
20811

    
20812
															var index = [];
20813
															// build the index
20814
															for (var x in excelRows[0]) {
20815
																index.push(x);
20816
															}
20817
															var excelFields = []
20818
															for (var i = 0; i < index.length; i++) {
20819
																excelFields.push(index[i]);
20820
															}
20821

    
20822
															var template = [];
20823
															for (var i = 0; i < excelFields.length; i++) {
20824
																for (var j = 0; j < gridFields.length; j++) {
20825
																	if (excelFields[i] === gridFields[j]) {
20826
																		template.push(excelFields[i]);
20827
																	}
20828
																}
20829
															}
20830
															if (excelFields.length === template.length) {
20831
																store.insert(idx, data);
20832
															} else {
20833
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
20834
															}
20835
														};
20836
														reader.readAsBinaryString(files[0]);
20837

    
20838
													} else {
20839
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
20840
													}
20841
												} else {
20842
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
20843
												}
20844
											}
20845
										}
20846
									}
20847
								}, {
20848
									text: 'Download',
20849
									hidden: hideUploadDownload,
20850
									name: 'download' + tableName,
20851
									iconCls: 'icon-arrow-down',
20852
									style: 'font-family: FontAwesome',
20853
									handler: function (b, e) {
20854
										b.up('grid').downloadExcelXml();
20855
									}
20856
								}
20857
							]
20858
						}
20859
					],
20860
					columns: cols,
20861
					selType: 'cellmodel',
20862
					plugins: [
20863
						Ext.create('Ext.grid.plugin.CellEditing', {
20864
							clicksToEdit: 1
20865
						})
20866
					],
20867
					//Add For Auto Size Coloum Mode - Nana
20868
					viewConfig: {
20869
						emptyText: 'No Data Display',
20870
						deferEmptyText: false,
20871
						listeners: {
20872
							refresh: function (dataview) {
20873
								Ext.each(dataview.panel.columns, function (column) {
20874
									if (column.autoSizeColumn == true)
20875
									column.autoSize();
20876
								})
20877
							}
20878
						}
20879
					},
20880
					listeners: {
20881
						'edit': function (editor, e, eOpts) {
20882
							/*Update By Midi 13 Juni 2019*/
20883
							var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20884
							var sumForm = sumPanel.getForm();
20885
							var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20886
							var sumFields = sumForm.getFields();
20887
							for (var i = 0; i < sumFields.length; i++) {
20888
								var fField = sumFields.items[i].name;
20889
								var fldValue = 0;
20890
								Ext.each(grid.store.getRange(), function (r) {
20891
									var fValue = r.data[fField];
20892
									fldValue = fldValue + parseFloat(fValue);
20893
								});
20894
								
20895
								fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20896
								sumForm.findField(fField).setValue(fldValue);
20897
								if (fField.toLowerCase().includes("cred")) {
20898
                                    if (Ext.ComponentQuery.query('[name=TotalCredit]')[0] != undefined) {
20899
                                        Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(fldValue);
20900
                                    }
20901
                                }
20902
                                if (fField.toLowerCase().includes("deb")) {
20903
                                    if (Ext.ComponentQuery.query('[name=TotalDebet]')[0] != undefined) {
20904
                                        Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(fldValue);
20905
                                    }
20906
                                }
20907
							}							
20908
							// var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20909
							// var fField = e.field;
20910
							// if (e.column.isSummary == '1') {
20911
								// var fldValue = 0;
20912
								// Ext.each(grid.store.getRange(), function (r) {
20913
									// var fValue = r.data[fField];
20914
									// fldValue = fldValue + parseFloat(fValue);
20915
								// });
20916
								// var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20917
								// var sumForm = sumPanel.getForm();
20918
								// fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20919
								// sumForm.findField(fField).setValue(fldValue);
20920
							// }
20921
						}
20922
						// ,
20923
						/*Add By Midi For Store Combobox With Param In Grid */
20924
						// 'beforeedit': function (editor, e, eOpts) {
20925
							// if (e.colIdx == 1 && tableName == 'PTRPURCHITEM') {
20926
								// var store = Ext.StoreMgr.lookup('store_' + tableName + 'Material');
20927
								// var itemType = e.record.get('ItemType');
20928
								// store.clearFilter();
20929
								// store.filter('MaterialType', itemType);
20930
							// }
20931
							// // if (e.colIdx == 1 && tableName == 'PTRFINANCEITEM') {
20932
								// // var store = Ext.StoreMgr.lookup('store_' + tableName + 'GLAccountID');
20933
								// // var itemType = e.record.get('CompanyID');
20934
								// // store.clearFilter();
20935
								// // store.filter('CompanyID', itemType);
20936
							// // }
20937
						// }
20938
					}
20939
				}
20940
			]
20941
		});
20942
		me.callParent(arguments);
20943
	}
20944
});
20945
Ext.define('MinovaUtil.MinovaES.LookupDoc', {
20946
	extend : 'Ext.window.Window',
20947
	alias : 'widget.lookupdocument',
20948
	requires : [],
20949
	//height : '87%',
20950
	height : '73%',//saswanto28jan2022
20951
	width : '41%',
20952
	minWidth : '50%',
20953
	maxWidth : '100%',
20954
	bodyPadding : 0,
20955
	formname : undefined,
20956
	name : 'LookupDocumentTrans',
20957
	test : undefined,
20958
	vtype : 'validateMinovaXss',
20959
	targetField : undefined,
20960
	valueField : undefined,
20961
	tableName : undefined,
20962
	LookupFunction : undefined,
20963
	isGrid : undefined,
20964
	listeners : {
20965
		afterrender : function (f) {
20966
			f.setTitle('Lookup - Document');
20967
		}
20968
	},
20969
	initComponent : function () {
20970
		var me = this;
20971
		var targetField_ = me.targetField;
20972
		var valueField_ = me.valueField;
20973
		var form = me.test;
20974
		var tableName_ = me.tableName;
20975
		var isGrid = me.isGrid_;
20976
		var LookupFunction = me.LookupFunction;
20977
		param_ = null;
20978
		var filterParam_ = me.filterParam;
20979
		var fieldLabel_ = 'Document No';
20980
		Ext.applyIf(me, {
20981
			items : [{
20982
					items : [{
20983
							xtype : 'tabpanel',
20984
							items : [{
20985
									xtype : 'form',
20986
									title : 'Quick Search',
20987
									height : '70%',
20988
									items : [{
20989
											xtype : 'form',
20990
											name : 'frmSearch',
20991
											width : '100%',
20992
											height : 'auto',
20993
											dockedItems : [{
20994
													xtype : 'toolbar',
20995
													dock : 'top',
20996
													layout : 'vbox',
20997
													bodyPadding : 10,
20998
													border : 0,
20999
													items : [{
21000
															xtype : 'fieldset',
21001
															layout : 'hbox',
21002
															width : '100%',
21003
															border : 0,
21004
															padding : 0,
21005
															items : [{
21006
																	xtype : 'textfield',
21007
																	name : 'DocSearch',
21008
																	fieldLabel : fieldLabel_,
21009
																	width : 470,
21010
																	labelWidth : 185,
21011
																	enableKeyEvents : true,
21012
																	filterParam : filterParam_,
21013
																	listeners : {
21014
																		specialkey : function (f, e) {
21015
																			if (e.getKey() == e.ENTER) {
21016
																				var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
21017
																				var docNo = doc.getValue();
21018
																				var store = Ext.data.StoreManager.lookup('storeQC');
21019
																				param_ = 'DocNo[like]' + docNo
21020
																					if (this.filterParam) {
21021
																						param_ = param_ + ',' + this.filterParam_
21022
																					}
21023
																					store.proxy.extraParams = {
21024
																					tableName : tableName_,
21025
																					param : param_,
21026
																					menuId : MinovaUtil.GetMenuID()
21027
																				};
21028
																				store.removeAll();
21029
																				store.reload();
21030
																				store.loadPage(1);
21031
																			}
21032
																		}
21033
																	}
21034
																}, {
21035
																	xtype : 'tbspacer',
21036
																	width : 5
21037
																}, {
21038
																	xtype : 'button',
21039
																	name : 'Search',
21040
																	text : 'Search',
21041
																	filterParam : filterParam_,
21042
																	handler : function () {
21043
																		var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
21044
																		var docNo = doc.getValue();
21045
																		var store = Ext.data.StoreManager.lookup('storeQC');
21046
																		param_ = 'DocNo[like]' + docNo
21047
																			if (this.filterParam) {
21048
																				param_ = param_ + ',' + this.filterParam
21049
																			}
21050
																			store.proxy.extraParams = {
21051
																			tableName : tableName_,
21052
																			param : param_,
21053
																			menuId : MinovaUtil.GetMenuID()
21054
																		};
21055
																		store.removeAll();
21056
																		store.reload();
21057
																		store.loadPage(1);
21058
																	}
21059
																}
21060
															]
21061
														}
21062
													]
21063
												}
21064
											]
21065
										}, {
21066
											items : [{
21067
													xtype : "minovagrid1",
21068
													name : "GridDocNo",
21069
													storename : 'storeQC',
21070
													tableName : tableName_,
21071
													param : this.filterParam,
21072
													isLookup : true,
21073
													pagesize : 25,
21074
													height : 398,
21075
													LookupFunction : LookupFunction,
21076
													valueField : valueField_,
21077
													targetField : targetField_,
21078
													isGrid : true,
21079
													listeners : {
21080
														beforeedit : function () {
21081
															return false;
21082
														},
21083
														itemdblclick : function () {
21084
															var grid = Ext.ComponentQuery.query('[name=GridDocNo]')[0];
21085
															var selection = grid.getView().getSelectionModel().getSelection()[0];
21086
															var documentno = selection.data.DocNo;
21087
															LookupFunction = this.LookupFunction;
21088
															eval(LookupFunction);
21089
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
21090
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
21091
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
21092
														}
21093
													},
21094
												}, {
21095
													xtype : 'pagingtoolbar',
21096
													store : 'storeQC',
21097
													dock : 'bottom',
21098
													displayInfo : true
21099
												}
21100
											]
21101
										}
21102
									]
21103
								}, {
21104
									title : 'Advance Search',
21105
									items : [{
21106
											xtype : 'form',
21107
											name : 'formlookup',
21108
											items : [{
21109
													xtype : 'minovaform',
21110
													name : 'frmlookup',
21111
													tableName : tableName_,
21112
													param : filterParam_,
21113
													isLookup : true,
21114
													buttons : [{
21115
															text : 'Search',
21116
															filterParam : filterParam_,
21117
															listeners : {
21118
																click : function () {
21119
																	var store = Ext.data.StoreManager.lookup('storeadvance');
21120
																	var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
21121
																	grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
21122
																	var values_ = form.getValues();
21123
																	var fields_ = form.getFields().items;
21124
																	var param_ = '';
21125
																	for (var i = 0; i < fields_.length; i++) {
21126
																		var val_ = form.getFields().items[i].getValue();
21127
																		var xtype_ = form.getFields().items[i].xtype;
21128
																		var oprator_ = '[like]';
21129
																		if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
21130
																			oprator_ = '[Equal]';
21131
																		}
21132
																		if (xtype_ == 'datefield') {
21133
																			if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
21134
																				oprator_ = '[LessThanEqual]';
21135
																			} else {
21136
																				oprator_ = '[GreaterThanEqual]';
21137
																			}
21138
																		}
21139
																		if (val_ != 'undefined' && val_ != "" && val_ != null) {
21140
																			param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
21141
																		}
21142
																	}
21143
																	if (this.filterParam_) {
21144
																		param_ = param_ + ',' + this.filterParam_
21145
																	}
21146
																	store.proxy.extraParams = {
21147
																		tableName : grid.tableName,
21148
																		param : param_,
21149
																		menuId : MinovaUtil.GetMenuID()
21150
																	};
21151
																	store.removeAll();
21152
																	store.reload();
21153
																	store.loadPage(1);
21154
																}
21155
															}
21156
														}
21157
													]
21158
												}, {
21159
													xtype : 'minovagrid1',
21160
													name : 'gridlookup',
21161
													minHeight : 312,
21162
													height : 290,
21163
													tableName : tableName_,
21164
													param : this.filterParam,
21165
													isLookup : true,
21166
													storename : 'storeadvance',
21167
													pagesize : 25,
21168
													valueField : valueField_,
21169
													targetField : targetField_,
21170
													hidebutton : 0,
21171
													isGrid : true,
21172
													listeners : {
21173
														beforeedit : function () {
21174
															return false;
21175
														},
21176
														itemdblclick : function () {
21177
															var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
21178
															var selection = grid.getView().getSelectionModel().getSelection()[0];
21179
															var documentno = selection.data.DocNo;
21180
															LookupFunction = this.LookupFunction;
21181
															eval(LookupFunction);
21182
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
21183
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
21184
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
21185
														}
21186
													},
21187
													dockedItems : [{
21188
															xtype : 'pagingtoolbar',
21189
															store : 'storeadvance',
21190
															dock : 'bottom',
21191
															displayInfo : true
21192
														}
21193
													]
21194
												}
21195
											]
21196
										}
21197
									]
21198
								}
21199
							]
21200
						}
21201
					]
21202
				}
21203
			]
21204
		});
21205
		me.callParent(arguments);
21206
	}
21207
});
21208
Ext.define('MinovaUtil.MinovaES.MinovaSummaryDocForm', {
21209
	extend : 'Ext.form.Panel',
21210
	alias : ['widget.summarydocform'],
21211
	formname : this.name,
21212
	tableName : undefined,
21213
	docType : undefined,
21214
	transType : undefined,
21215
	resizable : true,
21216
	border : false,
21217
	autoScroll : true,
21218
	layout : 'column',
21219
	defaults : {
21220
		layout : 'form',
21221
		xtype : 'container',
21222
		defaultType : 'textfield',
21223
		style : 'width: 50%',
21224
	},
21225
	initComponent : function () {
21226
		var me = this;
21227
		var col1 = [];
21228
		var col2 = [];
21229
		var LangID = localStorage.LangId;
21230
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "',IsSummary=1";
21231
		var formname_ = me.name;
21232
		var nameTable_ = me.tableName;
21233
		Ext.Ajax.request({
21234
			async : false,
21235
			method : 'POST',
21236
			url : '/UserControl/GetStore',
21237
			params : {
21238
				tableName : 'PDSDOCFIELD',
21239
				param : parameter
21240
			},
21241
			success : function (response) {
21242
				var results = Ext.decode(response.responseText);
21243
				hasil = results.data;
21244
			}
21245
		});
21246
		if (hasil.length > 0) {
21247
			Ext.each(hasil, function (rec) {
21248
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, false, true, me.tableName, false);
21249
				var descField = undefined;
21250
				if (rec.ColumnNo == 1) {
21251
					col1.push(formfield);
21252
					if (descField) {
21253
						col1.push(descField)
21254
					}
21255
				} else {
21256
					col2.push(formfield);
21257
					if (descField) {
21258
						col2.push(descField)
21259
					}
21260
				}
21261
			});
21262
		}
21263
		Ext.applyIf(me, {
21264
			items : [{
21265
					style : 'width: 50%',
21266
					items : col1
21267
				}, {
21268
					style : 'width: 50%',
21269
					items : col2
21270
				}
21271
			]
21272
		});
21273
		this.callParent();
21274
	}
21275
});
21276
Ext.define('MinovaUtil.MinovaES.LookupDocRef', {
21277
	extend : 'Ext.window.Window',
21278
	alias : 'widget.lookupdocumentref',
21279
	requires : [],
21280
	maxHeight : '52%',//saswanto28jan2022
21281
	minHeight: '30%',
21282
	width : '60%',
21283
	//minWidth : '50%',
21284
	//maxHeight : '75%',
21285
	bodyPadding : 0,
21286
	formname : undefined,
21287
	name : 'LookupDocRef',
21288
	test : undefined,
21289
	vtype : 'validateMinovaXss',
21290
	targetField : undefined,
21291
	valueField : undefined,
21292
	tableName : 'PDSDOCREF',
21293
	transType : undefined,
21294
	docType : undefined,
21295
	LookupFunction : undefined,
21296
	datarecord : undefined,
21297
	isGrid : undefined,
21298
	filterParam : undefined,
21299
	listeners : {
21300
		afterrender : function (f) {
21301
			f.setTitle('Lookup - Document');
21302
		}
21303
	},
21304
	initComponent : function () {
21305
		var me = this;
21306
		var targetField_ = me.targetField;
21307
		var valueField_ = me.valueField;
21308
		var form = me.test;
21309
		var tableName_ = me.tableName;
21310
		var transType_ = ""; ////---- add by Tri nwh 20220413 status look up doc ref
21311
		MinovaUtil.ExecuteParamQuery({		
21312
			ID: "FILOGetTransType",
21313
			MenuID: MinovaUtil.GetMenuID()
21314
			}, function (s) {
21315
				var result = Ext.decode(s.responseText);
21316
				var dt = Ext.decode(Ext.decode(result.data));
21317
				if (dt.length !== 0 || dt !== null) {
21318
					transType_ = dt[0].TransType;
21319
					if(transType_ == 'FIN') { tableName_ = 'PDSDOCREF'; }
21320
					else { tableName_ = 'PDSDOCREFLOG'; }
21321
				}
21322
		}, function (f) {});	////---- add by Tri nwh 20220413 status look up doc ref
21323
		var isGrid = me.isGrid_;
21324
		var LookupFunction = me.LookupFunction;
21325
		param_ = null;
21326
		var filterParam_ = me.filterParam;
21327
		var compselect = "";
21328
		var buselect = "";
21329
		Ext.applyIf(me, {
21330
			items : [{
21331
					xtype : 'form',
21332
					name : 'formlookup',
21333
					items : [{
21334
							xtype : 'minovaform',
21335
							bodyPadding:10,
21336
							name : 'frmlookup',
21337
							tableName : tableName_,
21338
							param : filterParam_,
21339
							isLookup : true,
21340
							buttons : [{
21341
									text : 'Search',
21342
									filterParam : filterParam_,
21343
									listeners : {
21344
										click : function () {
21345
											var store = Ext.data.StoreManager.lookup('storeadvance');
21346
											var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
21347
											grid = Ext.ComponentQuery.query('[name=gridlookupdocref]')[0];
21348
											var values_ = form.getValues();
21349
											var fields_ = form.getFields().items;
21350
											var param_ = '';
21351
											for (var i = 0; i < fields_.length; i++) {
21352
												var val_ = form.getFields().items[i].getValue();
21353
												var xtype_ = form.getFields().items[i].xtype;
21354
												var oprator_ = '[like]';
21355
												if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
21356
													oprator_ = '[Equal]';
21357
												}
21358
												if (xtype_ == 'datefield') {
21359
													if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
21360
														oprator_ = '[LessThanEqual]';
21361
													} else {
21362
														oprator_ = '[GreaterThanEqual]';
21363
													}
21364
												}
21365
												if (val_ != 'undefined' && val_ != "" && val_ != null) {
21366
													param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
21367
												}
21368
											}
21369
											if (filterParam_) {
21370
												param_ = param_ + ',' + filterParam_
21371
											}
21372
											store.proxy.extraParams = {
21373
												tableName : grid.tableName,
21374
												param : param_,
21375
												menuId : MinovaUtil.GetMenuID()
21376
											};
21377
											store.removeAll();
21378
											store.reload();
21379
											store.loadPage(1);
21380
										}
21381
									}
21382
								}
21383
							]
21384
						}, {
21385
							xtype : 'minovagrid1',
21386
							name : 'gridlookupdocref',
21387
							//minHeight : 312,
21388
							//height : 290,
21389
							tableName : tableName_,
21390
							param : this.filterParam,
21391
							isLookup : true,
21392
							storename : 'storeadvance',
21393
							bodyPadding:10,
21394
							pagesize : 25,
21395
							maxHeight: 300,
21396
							valueField : valueField_,
21397
							targetField : targetField_,
21398
							multiSelect : true,
21399
							hidebutton : 0,
21400
							isGrid : true,
21401
							listeners : {
21402
								beforeedit : function () {
21403
									return false;
21404
								},
21405
								itemdblclick : function () {},
21406
								select : function (t, record, index, eOpts) {
21407
									if (compselect !== "") {
21408
										if (compselect !== record.data.CompanyID) {
21409
											// MinovaMessageError("", "FILO06", "");
21410
											return;
21411
										}
21412
									}
21413
									if (buselect !== "") {
21414
										if (buselect !== record.data.BusinessUnit) {
21415
											// MinovaMessageError("", "FILO07", "");
21416
											return;
21417
										}
21418
									}
21419
									compselect = record.data.CompanyID;
21420
									buselect = record.data.BusinessUnit;
21421
								}
21422
							},
21423
							dockedItems : [{
21424
									xtype : 'pagingtoolbar',
21425
									store : 'storeadvance',
21426
									dock : 'bottom',
21427
									displayInfo : true
21428
								}, {
21429
									xtype : 'button',
21430
									name : 'select',
21431
									text : 'Select',
21432
									dock : 'bottom'
21433
								}
21434
							]
21435
						}
21436
					]
21437
				}
21438
			]
21439
		});
21440
		me.callParent(arguments);
21441
	}
21442
});
21443
var Base64 = (function () {
21444
	// Private property
21445
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
21446

    
21447
	// Private method for UTF-8 encoding
21448

    
21449
	function utf8Encode(string) {
21450
		string = string.replace(/\r\n/g, "\n");
21451
		var utftext = "";
21452
		for (var n = 0; n < string.length; n++) {
21453
			var c = string.charCodeAt(n);
21454
			if (c < 128) {
21455
				utftext += String.fromCharCode(c);
21456
			} else if ((c > 127) && (c < 2048)) {
21457
				utftext += String.fromCharCode((c >> 6) | 192);
21458
				utftext += String.fromCharCode((c & 63) | 128);
21459
			} else {
21460
				utftext += String.fromCharCode((c >> 12) | 224);
21461
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
21462
				utftext += String.fromCharCode((c & 63) | 128);
21463
			}
21464
		}
21465
		return utftext;
21466
	}
21467

    
21468
	// Public method for encoding
21469
	return {
21470
		encode: (typeof btoa == 'function') ? function (input) {
21471
			return btoa(utf8Encode(input));
21472
		}
21473
		 : function (input) {
21474
			var output = "";
21475
			var chr1,
21476
			chr2,
21477
			chr3,
21478
			enc1,
21479
			enc2,
21480
			enc3,
21481
			enc4;
21482
			var i = 0;
21483
			input = utf8Encode(input);
21484
			while (i < input.length) {
21485
				chr1 = input.charCodeAt(i++);
21486
				chr2 = input.charCodeAt(i++);
21487
				chr3 = input.charCodeAt(i++);
21488
				enc1 = chr1 >> 2;
21489
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
21490
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
21491
				enc4 = chr3 & 63;
21492
				if (isNaN(chr2)) {
21493
					enc3 = enc4 = 64;
21494
				} else if (isNaN(chr3)) {
21495
					enc4 = 64;
21496
				}
21497
				output = output +
21498
					keyStr.charAt(enc1) + keyStr.charAt(enc2) +
21499
					keyStr.charAt(enc3) + keyStr.charAt(enc4);
21500
			}
21501
			return output;
21502
		}
21503
	};
21504
})();
21505
Ext.define('MyApp.view.override.Grid', {
21506
	override: 'Ext.grid.GridPanel',
21507
	requires: 'Ext.form.action.StandardSubmit',
21508

    
21509
	/*
21510
	Kick off process
21511
	 */
21512

    
21513
	downloadExcelXml: function (includeHidden, name) {
21514

    
21515
		if (!name)
21516
			title = this.name;
21517

    
21518
		var vExportContent = this.getExcelXml(includeHidden, title);
21519

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

    
21522
		/*
21523
		dynamically create and anchor tag to force download with suggested filename
21524
		note: download attribute is Google Chrome specific
21525
		 */
21526

    
21527
		if (Ext.isChrome) {
21528
			var gridEl = this.getEl();
21529

    
21530
			var el = Ext.DomHelper.append(gridEl, {
21531
					tag: "a",
21532
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
21533
					href: location
21534
				});
21535

    
21536
			el.click();
21537

    
21538
			Ext.fly(el).destroy();
21539

    
21540
		} else {
21541

    
21542
			var form = this.down('form#uploadForm');
21543
			if (form) {
21544
				form.destroy();
21545
			}
21546
			form = this.add({
21547
					xtype: 'form',
21548
					itemId: 'uploadForm',
21549
					hidden: true,
21550
					standardSubmit: true,
21551
					url: 'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&filename=' + escape(title + ".xls"),
21552
					items: [{
21553
							xtype: 'hiddenfield',
21554
							name: 'data',
21555
							value: vExportContent
21556
						}
21557
					]
21558
				});
21559

    
21560
			form.getForm().submit();
21561

    
21562
		}
21563
	},
21564

    
21565
	/*
21566

    
21567
	Welcome to XML Hell
21568
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
21569
	for more details
21570

    
21571
	 */
21572
	getExcelXml: function (includeHidden, title) {
21573

    
21574
		var theTitle = title || this.title;
21575

    
21576
		var worksheet = this.createWorksheet(includeHidden, theTitle);
21577
		var totalWidth = this.columnManager.columns.length;
21578

    
21579
		return ''.concat(
21580
			'<?xml version="1.0"?>',
21581
			'<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">',
21582
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
21583
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
21584
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
21585
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
21586
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
21587
			'<ProtectStructure>False</ProtectStructure>',
21588
			'<ProtectWindows>False</ProtectWindows>',
21589
			'</ExcelWorkbook>',
21590

    
21591
			'<Styles>',
21592

    
21593
			'<Style ss:ID="Default" ss:Name="Normal">',
21594
			'<Alignment ss:Vertical="Bottom"/>',
21595
			'<Borders/>',
21596
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
21597
			'<Interior/>',
21598
			'<NumberFormat/>',
21599
			'<Protection/>',
21600
			'</Style>',
21601

    
21602
			'<Style ss:ID="title">',
21603
			'<Borders />',
21604
			'<Font ss:Bold="1" ss:Size="18" />',
21605
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
21606
			'<NumberFormat ss:Format="@" />',
21607
			'</Style>',
21608

    
21609
			'<Style ss:ID="headercell">',
21610
			'<Font ss:Bold="1" ss:Size="10" />',
21611
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
21612
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
21613
			'</Style>',
21614

    
21615
			'<Style ss:ID="even">',
21616
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
21617
			'</Style>',
21618

    
21619
			'<Style ss:ID="evendate" ss:Parent="even">',
21620
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21621
			'</Style>',
21622

    
21623
			'<Style ss:ID="evenint" ss:Parent="even">',
21624
			'<Numberformat ss:Format="0" />',
21625
			'</Style>',
21626

    
21627
			'<Style ss:ID="evenfloat" ss:Parent="even">',
21628
			'<Numberformat ss:Format="0.00" />',
21629
			'</Style>',
21630

    
21631
			'<Style ss:ID="odd">',
21632
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
21633
			'</Style>',
21634

    
21635
			'<Style ss:ID="groupSeparator">',
21636
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
21637
			'</Style>',
21638

    
21639
			'<Style ss:ID="odddate" ss:Parent="odd">',
21640
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21641
			'</Style>',
21642

    
21643
			'<Style ss:ID="oddint" ss:Parent="odd">',
21644
			'<NumberFormat Format="0" />',
21645
			'</Style>',
21646

    
21647
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
21648
			'<NumberFormat Format="0.00" />',
21649
			'</Style>',
21650

    
21651
			'</Styles>',
21652
			worksheet.xml,
21653
			'</Workbook>');
21654
	},
21655

    
21656
	/*
21657

    
21658
	Support function to return field info from store based on fieldname
21659

    
21660
	 */
21661

    
21662
	getModelField: function (fieldName) {
21663

    
21664
		var fields = this.store.model.getFields();
21665
		for (var i = 0; i < fields.length; i++) {
21666
			if (fields[i].name === fieldName) {
21667
				return fields[i];
21668
			}
21669
		}
21670
	},
21671

    
21672
	/*
21673

    
21674
	Convert store into Excel Worksheet
21675

    
21676
	 */
21677
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
21678

    
21679
		var cm = this.columnManager.columns;
21680
		var colCount = cm.length;
21681
		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>';
21682
		var visibleCols = 0;
21683

    
21684
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
21685

    
21686
		for (var j = 0; j < colCount; j++) {
21687
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21688
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
21689
				visibleCols++;
21690
			}
21691
		}
21692

    
21693
		// rowXml += "</Row>";
21694

    
21695
		return Ext.String.format(rowTpl, visibleCols - 1, value);
21696
	},
21697

    
21698
	createWorksheet: function (includeHidden, theTitle) {
21699
		// Calculate cell data types and extra class names which affect formatting
21700
		var cellType = [];
21701
		var cellTypeClass = [];
21702
		var cm = this.columnManager.columns;
21703

    
21704
		var totalWidthInPixels = 0;
21705
		var colXml = '';
21706
		var headerXml = '';
21707
		var visibleColumnCountReduction = 0;
21708
		var colCount = cm.length;
21709
		for (var i = 0; i < colCount; i++) {
21710
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
21711
				var w = cm[i].getEl().getWidth();
21712
				totalWidthInPixels += w;
21713

    
21714
				if (cm[i].text === "") {
21715
					cellType.push("None");
21716
					cellTypeClass.push("");
21717
					++visibleColumnCountReduction;
21718
				} else {
21719
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21720
					headerXml += '<Cell ss:StyleID="headercell">' +
21721
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21722
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21723

    
21724
					var fld = this.getModelField(cm[i].dataIndex);
21725
					switch (fld.type.type) {
21726
					case "int":
21727
						cellType.push("Number");
21728
						cellTypeClass.push("int");
21729
						break;
21730
					case "float":
21731
						cellType.push("Number");
21732
						cellTypeClass.push("float");
21733
						break;
21734

    
21735
					case "bool":
21736

    
21737
					case "boolean":
21738
						cellType.push("String");
21739
						cellTypeClass.push("");
21740
						break;
21741
					case "date":
21742
						cellType.push("DateTime");
21743
						cellTypeClass.push("date");
21744
						break;
21745
					default:
21746
						cellType.push("String");
21747
						cellTypeClass.push("");
21748
						break;
21749
					}
21750
				}
21751
			}
21752
		}
21753
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21754

    
21755
		var result = {
21756
			height: 9000,
21757
			width: Math.floor(totalWidthInPixels * 30) + 50
21758
		};
21759

    
21760
		// Generate worksheet header details.
21761

    
21762
		// determine number of rows
21763
		var numGridRows = this.store.getCount() + 2;
21764
		if (!Ext.isEmpty(this.store.groupField)) {
21765
			numGridRows = numGridRows + this.store.getGroups().length;
21766
		}
21767

    
21768
		// create header for worksheet
21769
		var t = ''.concat(
21770
				'<Worksheet ss:Name="' + theTitle + '">',
21771

    
21772
				'<Names>',
21773
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
21774
				'</NamedRange></Names>',
21775

    
21776
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
21777
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
21778
				colXml,
21779
				'<Row ss:AutoFitHeight="1">',
21780
				headerXml +
21781
				'</Row>');
21782

    
21783
		// Generate the data rows from the data in the Store
21784
		var groupVal = "";
21785
		var groupField = "";
21786

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

    
21789
			if (!Ext.isEmpty(groupField)) {
21790
				if (groupVal != this.store.getAt(i).get(groupField)) {
21791
					groupVal = this.store.getAt(i).get(groupField);
21792
					t += this.generateEmptyGroupRow(groupField, groupVal, cellType, includeHidden);
21793
				}
21794
			}
21795
			t += '<Row>';
21796
			var cellClass = (i & 1) ? 'odd' : 'even';
21797
			r = it[i].data;
21798
			var k = 0;
21799
			for (var j = 0; j < colCount; j++) {
21800
				if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21801
					var v = r[cm[j].dataIndex];
21802
					if (cellType[k] !== "None") {
21803
						t += '<Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"><Data ss:Type="' + cellType[k] + '">';
21804
						if (cellType[k] == 'DateTime') {
21805
							t += Ext.Date.format(v, 'Y-m-d');
21806
						} else {
21807
							t += v;
21808
						}
21809
						t += '</Data></Cell>';
21810
					}
21811
					k++;
21812
				}
21813
			}
21814
			t += '</Row>';
21815
		}
21816

    
21817
		result.xml = t.concat(
21818
				'</Table>',
21819
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
21820
				'<PageLayoutZoom>0</PageLayoutZoom>',
21821
				'<Selected/>',
21822
				'<Panes>',
21823
				'<Pane>',
21824
				'<Number>3</Number>',
21825
				'<ActiveRow>2</ActiveRow>',
21826
				'</Pane>',
21827
				'</Panes>',
21828
				'<ProtectObjects>False</ProtectObjects>',
21829
				'<ProtectScenarios>False</ProtectScenarios>',
21830
				'</WorksheetOptions>',
21831
				'</Worksheet>');
21832
		return result;
21833
	}
21834
});
21835

    
21836
/*Add Midi For Grid Mass Posting Filo*/
21837
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
21838
    extend: 'Ext.form.Panel',
21839
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
21840
    requires: [
21841
		'Ext.grid.plugin.CellEditing',
21842
		'Ext.grid.RowNumberer',
21843
		'Ext.grid.Panel',
21844
    ],
21845

    
21846
    //renderTo: 'panel-extjs',
21847
    anchor: '100%',
21848
    tableName: undefined,
21849
    hideButton: undefined,
21850
    multiSelect: undefined,
21851
    initComponent: function () {
21852
        var me = this;
21853
        var isLookup = me.isLookup;
21854
        var hide_ = false;
21855
        var widthLock = 250;
21856
        var checkSelection = '';
21857

    
21858
        if (me.hideButton == true) {
21859
            hide_ = true;
21860
        }
21861
        if (me.multiSelect) {
21862
            locking = false;
21863
            checkSelection = 'checkboxmodel';
21864
            widthLock = 40;
21865
        }
21866
        var tableName = me.tableName;
21867
        var cols = [];
21868
        var fieldStore = [];
21869
        var _url = 'GetAllField';
21870
        var hasil = null;
21871
        var height = me.height;
21872
        var storeID = 'store' + me.tableName;
21873
        var gridName = 'grid' + me.name;
21874
        if (me.storeName) {
21875
            storeID = me.storeName;
21876
        }
21877
        var LangID = MinovaUtil.GetLangID();
21878
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
21879
        Ext.Ajax.request({
21880
            async: false,
21881
            method: 'POST',
21882
            url: '/UserControl/GetStore',
21883
            params: {
21884
                tableName: 'PDSBS0007',
21885
                param: parameter
21886
            },
21887
            success: function (response) {
21888
                var results = Ext.decode(response.responseText);
21889
                hasil = results.data;
21890
            }
21891
        });
21892
        cols.push({
21893
            xtype: 'rownumberer'
21894
        });
21895
        var addData = 'var data={';
21896
        if (hasil.length > 0) {
21897
            Ext.each(hasil, function (rec) {
21898
                fieldStore.push(rec.FieldName);
21899
                if (rec.FieldName != 'Sequence') {
21900
                    addData = addData + rec.FieldName + ":" + "'',";
21901
                }
21902

    
21903
                var null_ = null;
21904
                var ReadOnly_ = false;
21905
                if (rec.IsPrimaryKey == true) {
21906
                    null_ = false;
21907
                }
21908
                if (rec.IsRequired == true) {
21909
                    null_ = false;
21910
                } else {
21911
                    null_ = true;
21912
                }
21913
                if (rec.ReadOnly == '1') {
21914
                    ReadOnly_ = true;
21915
                }
21916
                var Hidden_ = false;
21917
                if (rec.ReadOnly == '1') {
21918
                    ReadOnly_ = true;
21919
                }
21920

    
21921
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
21922
                    Hidden_ = true;
21923
                    null_ = true;
21924
                }
21925

    
21926
                if (rec.GridView == 1) {
21927
                    switch (rec.FormatRef) {
21928
                        case "date":
21929
                            cols.push({
21930
                                xtype: 'minovadatecolumn',
21931
                                hidden: Hidden_,
21932
                                text: rec.HeaderTitle,
21933
                                dataIndex: rec.FieldName,
21934
                                filter: {
21935
                                    itemDefaults: {
21936
                                        emptyText: 'Search for...',
21937

    
21938
                                    }
21939
                                },
21940
                                editor: {
21941
                                    allowBlank: null_,
21942
                                    xtype: 'datefield',
21943
                                    hideMode: 'visibility',
21944
                                    readOnly: ReadOnly_,
21945
                                    id: tableName + rec.FieldName,
21946
                                    fieldGrid: rec.FieldName,
21947
                                    nameTable: rec.TableName,
21948
                                }
21949
                            });
21950
                            break
21951
                        case "amount":
21952
                            cols.push({
21953
                                xtype: 'minovacurrancycolumn',
21954
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
21955
                                text: rec.HeaderTitle,
21956
                                align: 'right',
21957
                                dataIndex: rec.FieldName,
21958
                                hidden: Hidden_,
21959
                                filter: {
21960
                                    itemDefaults: {
21961
                                        emptyText: 'Search for...'
21962
                                    }
21963
                                },
21964
                                editor: {
21965
                                    allowBlank: null_,
21966
                                    xtype: 'minovacurrencyfield',
21967
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
21968
                                    //vtype: 'validateDecimal',
21969
                                    readOnly: ReadOnly_,
21970
                                    id: tableName + rec.FieldName,
21971
                                    nameTable: rec.TableName,
21972
                                    fieldGrid: rec.FieldName,
21973
                                    fieldStyle: 'text-align:right;',
21974
                                    value: '0',
21975

    
21976
                                }
21977
                            });
21978
                            break
21979
                        case "time":
21980
                            var DefaultValue = rec.DefaultValue;
21981
                            if (DefaultValue == '') {
21982
                                defaultValue = '00:00';
21983
                            }
21984
                            cols.push({
21985
                                //xtype: 'minovatimecolumn',
21986
                                xtype: 'timefield',
21987
                                format: 'H:i',
21988
                                submitFormat: 'Hi',
21989
                                text: rec.HeaderTitle,
21990
                                dataIndex: rec.FieldName,
21991
                                hidden: Hidden_,
21992
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
21993
                                filter: {
21994
                                    itemDefaults: {
21995
                                        emptyText: 'Search for...'
21996
                                    }
21997
                                },
21998
                                editor: {
21999
                                    allowBlank: null_,
22000
                                    xtype: 'timefield',
22001
                                    readOnly: ReadOnly_,
22002
                                    id: tableName + rec.FieldName,
22003
                                    format: 'H:i',
22004
                                    submitFormat: 'Hi',
22005
                                    increment: 5,
22006
                                    value: DefaultValue,
22007
                                    anchor: '100%',
22008
                                    listeners: {}
22009
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
22010
                                }
22011
                            });
22012
                            break
22013
                            //case "datetime":
22014
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
22015
                            //        cols.push({
22016
                            //            xtype: 'minovadatetimecolumn',
22017
                            //            text: rec.HeaderTitle,
22018
                            //            dataIndex: rec.FieldName,
22019
                            //            filter: {
22020
                            //                itemDefaults: {
22021
                            //                    emptyText: 'Search for...'
22022
                            //                }
22023
                            //            },
22024
                            //            editor: {
22025
                            //                allowBlank: null_,
22026
                            //                xtype: 'textfield',
22027
                            //            }
22028
                            //        });
22029
                            //    }
22030
                            //    break
22031
                        default:
22032
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
22033
                                cols.push({
22034
                                    text: rec.HeaderTitle,
22035
                                    dataIndex: rec.FieldName,
22036
                                    width: 100,
22037
                                    filter: {
22038
                                        type: 'string',
22039
                                        itemDefaults: {
22040
                                            emptyText: 'Search for...'
22041
                                        }
22042
                                    }
22043
                                });
22044
                            } else if (rec.SearchType == '0') {
22045
                                var valueField = null;
22046
                                var displayValue = null;
22047
                                var TableRef = undefined;
22048
                                if (rec.TableRef != '') {
22049
                                    TableRef = rec.TableRef;
22050

    
22051
                                    Ext.Ajax.request({
22052
                                        async: false,
22053
                                        method: 'POST',
22054
                                        url: '/UserControl/GetStore',
22055
                                        params: {
22056
                                            tableName: 'SDATATABLEFIELD',
22057
                                            param: 'TableName[equal]' + rec.TableRef
22058
                                        },
22059
                                        success: function (response) {
22060
                                            var results = Ext.decode(response.responseText);
22061
                                            data_ = results.data;
22062
                                            if (data_ != undefined) {
22063
                                                valueField_ = $.grep(data_, function (r) {
22064
                                                    return r.ValueField == '1'
22065
                                                });
22066
                                                valueField = valueField_[0].FieldName
22067
                                                displayValue_ = $.grep(data_, function (r) {
22068
                                                    return r.DisplayValue == '1'
22069
                                                });
22070
                                                displayValue = displayValue_[0].FieldName
22071
                                            }
22072
                                        }
22073
                                    });
22074

    
22075
                                    //create Store
22076
                                    Ext.create('Ext.data.Store', {
22077
                                        storeId: 'store_' + me.tableName + rec.FieldName,
22078
                                        autoLoad: true,
22079
                                        proxy: {
22080
                                            method: 'POST',
22081
                                            type: 'ajax',
22082
                                            url: '/UserControl/GetStoreAuth',
22083
                                            extraParams: {
22084
                                                tableName: TableRef,
22085
                                                param: rec.ParamCombo,
22086
                                                menuId: MinovaUtil.GetMenuID()
22087
                                            },
22088
                                            reader: {
22089
                                                type: 'json',
22090
                                                root: 'data',
22091
                                                totalProperty: 'data[0].TotalCount'
22092
                                            }
22093
                                        }
22094
                                    });
22095
                                } else if (rec.FixedValue != '') {
22096
                                    var storeData = [];
22097
                                    var str = rec.FixedValue;
22098
                                    var hasil = str.split('||');
22099
                                    hasil.forEach(function (h) {
22100
                                        store_ = h.split('=')
22101
                                        storeData.push({
22102
                                            code: store_[0],
22103
                                            desc: store_[1],
22104

    
22105
                                        });
22106
                                    });
22107

    
22108
                                    valueField = 'code';
22109
                                    displayValue = 'desc';
22110

    
22111
                                    Ext.create('Ext.data.Store', {
22112
                                        storeId: 'store_' + me.tableName + rec.FieldName,
22113
                                        autoLoad: true,
22114
                                        data: storeData
22115
                                    })
22116
                                }
22117

    
22118
                                cols.push({
22119
                                    xtype: 'minovacombocolumn',
22120
                                    hidden: Hidden_,
22121
                                    text: rec.HeaderTitle,
22122
                                    dataIndex: rec.FieldName,
22123
                                    valueField: valueField,
22124
                                    displayField: displayValue,
22125
                                    store: 'store_' + me.tableName + rec.FieldName,
22126
                                    editor: {
22127
                                        allowBlank: null_,
22128
                                        xtype: 'combobox',
22129
                                        readOnly: ReadOnly_,
22130
                                        id: tableName + rec.FieldName,
22131
                                        nameTable: rec.TableName,
22132
                                        fieldGrid: rec.FieldName,
22133
                                        valueField: valueField,
22134
                                        displayField: displayValue,
22135
                                        vtype: 'validateCombobox',
22136
                                        store: 'store_' + me.tableName + rec.FieldName,
22137
                                    },
22138
                                    filter: {
22139
                                        type: 'list',
22140
                                        itemDefaults: {
22141
                                            emptyText: 'Search for...'
22142
                                        }
22143
                                    }
22144
                                });
22145

    
22146
                            } else if (rec.SearchType == '5') {							
22147
                                var valueField = null;
22148
                                var displayValue = null;
22149
                                var AdditionaldisplayValue = null;
22150
                                var TableRef = undefined;
22151
                                if (rec.TableRef != '') {
22152
                                    TableRef = rec.TableRef;
22153
                                    Ext.Ajax.request({
22154
                                        async: false,
22155
                                        method: 'POST',
22156
                                        url: '/UserControl/GetStore',
22157
                                        params: {
22158
                                            tableName: 'SDATATABLEFIELD',
22159
                                            param: 'TableName[equal]' + rec.TableRef
22160
                                        },
22161
                                        success: function (response) {
22162
                                            var results = Ext.decode(response.responseText);
22163
                                            data_ = results.data;
22164
                                            if (data_ != undefined) {
22165
                                                valueField_ = $.grep(data_, function (r) {
22166
                                                    return r.ValueField == '1'
22167
                                                });
22168
                                                if (valueField_.length > 0) {
22169
                                                    valueField = valueField_[0].FieldName
22170
                                                }
22171

    
22172
                                                displayValue_ = $.grep(data_, function (r) {
22173
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
22174
                                                });
22175
                                                if (displayValue_.length > 0) {
22176
                                                    displayValue = displayValue_[0].FieldName;
22177
                                                }
22178
                                                if (displayValue_.length >= 2) {
22179
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
22180
                                                }
22181
                                            }
22182
                                        }
22183
                                    });
22184
                                }
22185
                                Ext.create('Ext.data.Store', {
22186
                                    storeId: 'store_' + me.tableName + rec.FieldName,
22187
                                    autoLoad: true,
22188
                                    proxy: {
22189
                                        method: 'POST',
22190
                                        type: 'ajax',
22191
                                        url: '/UserControl/GetStoreAuth',
22192
                                        extraParams: {
22193
                                            tableName: TableRef,
22194
                                            param: rec.ParamCombo,
22195
                                            menuId: MinovaUtil.GetMenuID()
22196
                                        },
22197
                                        reader: {
22198
                                            type: 'json',
22199
                                            root: 'data',
22200
                                            totalProperty: 'data[0].TotalCount'
22201
                                        }
22202
                                    }
22203
                                });
22204
                                cols.push({
22205
                                    xtype : 'minovacombocolumn',
22206
                                    hidden: Hidden_,
22207
                                    text: rec.HeaderTitle,
22208
                                    dataIndex: rec.FieldName,
22209
                                    valueField : valueField,
22210
                                    displayField : displayValue,
22211
                                    store : 'store_' + me.tableName + rec.FieldName,
22212
                                    tpl: Ext.create('Ext.XTemplate',
22213
                                            '<ul class="x-list-plain"><tpl for=".">',
22214
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
22215
                                            '</tpl></ul>'),
22216
                                    displayTpl: Ext.create('Ext.XTemplate',
22217
                                        '<tpl for=".">',
22218
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
22219
                                        '</tpl>'),
22220
                                    editor: {
22221
                                        allowBlank: null_,
22222
                                        xtype: 'combobox',
22223
                                        readOnly: ReadOnly_,
22224
                                        id: rec.TableName + rec.FieldName,
22225
                                        nameTable: rec.TableName,
22226
                                        fieldGrid: rec.FieldName,
22227
                                        valueField: valueField,
22228
                                        displayField: displayValue,
22229
                                        store: 'store_' + me.tableName + rec.FieldName,
22230
                                        value: rec.DefaultValue,
22231
                                        tpl: Ext.create('Ext.XTemplate',
22232
                                            '<ul class="x-list-plain"><tpl for=".">',
22233
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
22234
                                            '</tpl></ul>'),
22235
                                        displayTpl: Ext.create('Ext.XTemplate',
22236
                                            '<tpl for=".">',
22237
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
22238
                                            '</tpl>')
22239
                                    },
22240
                                    renderer: function (value) {
22241
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
22242
                                        var index = store.find(valueField, value);
22243
                                        var val = "";
22244
                                        if (index != -1) {
22245
                                            var rc = store.getAt(index);
22246
                                            //val = rc.get(displayValue);
22247
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
22248
                                        } else {
22249
                                            val = value;
22250
                                        }
22251
                                        return val;
22252
                                    },
22253
                                    filter: {
22254
                                        type: 'list',
22255
                                        itemDefaults: {
22256
                                            emptyText: 'Search for...'
22257
                                        }
22258
                                    }
22259
                                });
22260
                            } else if (rec.SearchType == '2') {
22261
                                var triger = (rec.TriggerCombo).split('$');
22262
                                var targetField_ = triger[0];
22263
                                var fieldValue_ = triger[1];
22264
                                cols.push({
22265
                                    text: rec.HeaderTitle,
22266
                                    hidden: Hidden_,
22267
                                    dataIndex: rec.FieldName,
22268
                                    filter: {
22269
                                        itemDefaults: {
22270
                                            emptyText: 'Search for...'
22271
                                        }
22272
                                    },
22273
                                    editor: {
22274
                                        allowBlank: null_,
22275
                                        xtype: 'minovalookupgrid',
22276
                                        readOnly: ReadOnly_,
22277
                                        isGrid: true,
22278
                                        fieldTarget: targetField_,
22279
                                        fieldValue: fieldValue_,
22280
                                        isGrid: true,
22281
                                        id: tableName + rec.FieldName,
22282
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22283
                                        triggerCls: 'x-form-search-trigger',
22284
                                        vtype: 'alphanum', // disable space
22285
                                        nameTable: rec.TableName,
22286
                                        fieldGrid: rec.FieldName,
22287
                                        LookupFunction: rec.LookupFunction,
22288
                                        listeners: {
22289
                                            change: function (val) {
22290
                                                var custumFunc = rec.SelectFunction;
22291
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22292
                                                    Ext.Ajax.request({
22293
                                                        async: false,
22294
                                                        method: 'POST',
22295
                                                        url: '/UserControl/GetStore',
22296
                                                        params: {
22297
                                                            tableName: 'PCMFUNC',
22298
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22299
                                                        },
22300
                                                        success: function (response) {
22301
                                                            var results = Ext.decode(response.responseText);
22302
                                                            data_ = results.data[0];
22303
                                                            if (data_ != undefined) {
22304
                                                                custumFunc = data_.FunctionCode;
22305
                                                            }
22306
                                                        }
22307
                                                    });
22308
                                                }
22309
                                                if (custumFunc) {
22310
                                                    eval(custumFunc)
22311
                                                }
22312
                                            }
22313
                                        }
22314
                                    }
22315
                                });
22316
                            } else if (rec.SearchType == '3') {
22317
                                cols.push({
22318
                                    text: rec.HeaderTitle,
22319
                                    hidden: Hidden_,
22320
                                    dataIndex: rec.FieldName,
22321
                                    filter: {
22322
                                        itemDefaults: {
22323
                                            emptyText: 'Search for...'
22324
                                        }
22325
                                    },
22326
                                    editor: {
22327
                                        allowBlank: null_,
22328
                                        // xtype: 'minovalookuptreePopup',
22329
                                        xtype: 'MinovaLookupTree',
22330
                                        readOnly: ReadOnly_,
22331
                                        id: tableName + rec.FieldName,
22332
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22333
                                        triggerCls: 'x-form-search-trigger',
22334
                                        vtype: 'alphanum', // disable space
22335
                                        treeSructure: rec.SearchFunction, //'O-O-P',
22336
                                        objClassValue: rec.ParamCombo, //'O',
22337
                                        nameTable: rec.TableName,
22338
                                        fieldGrid: rec.FieldName,
22339
                                        listeners: {
22340
                                            change: function (val) {
22341
                                                var custumFunc = rec.SelectFunction;
22342
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22343
                                                    Ext.Ajax.request({
22344
                                                        async: false,
22345
                                                        method: 'POST',
22346
                                                        url: '/UserControl/GetStore',
22347
                                                        params: {
22348
                                                            tableName: 'PCMFUNC',
22349
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22350
                                                        },
22351
                                                        success: function (response) {
22352
                                                            var results = Ext.decode(response.responseText);
22353
                                                            data_ = results.data[0];
22354
                                                            if (data_ != undefined) {
22355
                                                                custumFunc = data_.FunctionCode;
22356
                                                            }
22357
                                                        }
22358
                                                    });
22359
                                                }
22360
                                                if (custumFunc) {
22361
                                                    eval(custumFunc)
22362
                                                }
22363
                                            }
22364
                                        }
22365
                                    }
22366
                                });
22367
                            } 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) {
22368
                                var triger = (rec.TriggerCombo).split('&');
22369
                                var targetField_ = triger[0];
22370
                                var fieldValue_ = triger[0];
22371
                                cols.push({
22372
                                    text: rec.HeaderTitle,
22373
                                    hidden: Hidden_,
22374
                                    dataIndex: rec.FieldName,
22375
                                    filter: {
22376
                                        itemDefaults: {
22377
                                            emptyText: 'Search for...'
22378
                                        }
22379
                                    },
22380
                                    editor: {
22381
                                        allowBlank: null_,
22382
                                        xtype: 'lookupemployee',
22383
                                        readOnly: ReadOnly_,
22384
                                        isGrid: true,
22385
                                        fieldTarget: targetField_,
22386
                                        fieldValue: fieldValue_,
22387
                                        isGrid: true,
22388
                                        id: tableName + rec.FieldName,
22389
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22390
                                        triggerCls: 'x-form-search-trigger',
22391
                                        vtype: 'alphanum', // disable space
22392
                                        nameTable: rec.TableName,
22393
                                        fieldGrid: rec.FieldName,
22394
                                        listeners: {
22395
                                            change: function (val) {
22396
                                                var custumFunc = rec.SelectFunction;
22397
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22398
                                                    Ext.Ajax.request({
22399
                                                        async: false,
22400
                                                        method: 'POST',
22401
                                                        url: '/UserControl/GetStore',
22402
                                                        params: {
22403
                                                            tableName: 'PCMFUNC',
22404
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22405
                                                        },
22406
                                                        success: function (response) {
22407
                                                            var results = Ext.decode(response.responseText);
22408
                                                            data_ = results.data[0];
22409
                                                            if (data_ != undefined) {
22410
                                                                custumFunc = data_.FunctionCode;
22411
                                                            }
22412
                                                        }
22413
                                                    });
22414
                                                }
22415
                                                if (custumFunc) {
22416
                                                    eval(custumFunc)
22417
                                                }
22418
                                            }
22419
                                        }
22420
                                    }
22421
                                });
22422
                            } else if (rec.SearchType == '4' && isLookup != true) {
22423
                                cols.push({
22424

    
22425
                                    text: rec.HeaderTitle,
22426
                                    hidden: Hidden_,
22427
                                    dataIndex: rec.FieldName,
22428
                                    filter: {
22429
                                        itemDefaults: {
22430
                                            emptyText: 'Search for...'
22431
                                        }
22432
                                    },
22433
                                    editor: {
22434
                                        allowBlank: null_,
22435
                                        xtype: 'lookupemployee',
22436
                                        readOnly: ReadOnly_,
22437
                                        isGrid: true,
22438
                                        fieldTarget: targetField_,
22439
                                        fieldValue: fieldValue_,
22440
                                        isGrid: true,
22441
                                        id: tableName + rec.FieldName,
22442
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22443
                                        triggerCls: 'x-form-search-trigger',
22444
                                        vtype: 'alphanum', // disable space
22445
                                        nameTable: rec.TableName,
22446
                                        fieldGrid: rec.FieldName,
22447
                                        listeners: {
22448
                                            change: function (val) {
22449
                                                var custumFunc = rec.SelectFunction;
22450
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22451
                                                    Ext.Ajax.request({
22452
                                                        async: false,
22453
                                                        method: 'POST',
22454
                                                        url: '/UserControl/GetStore',
22455
                                                        params: {
22456
                                                            tableName: 'PCMFUNC',
22457
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22458
                                                        },
22459
                                                        success: function (response) {
22460
                                                            var results = Ext.decode(response.responseText);
22461
                                                            data_ = results.data[0];
22462
                                                            if (data_ != undefined) {
22463
                                                                custumFunc = data_.FunctionCode;
22464
                                                            }
22465
                                                        }
22466
                                                    });
22467
                                                }
22468
                                                if (custumFunc) {
22469
                                                    eval(custumFunc)
22470
                                                }
22471
                                            }
22472
                                        }
22473
                                    }
22474
                                });
22475
                            } else {
22476
                                if (rec.FieldDataType == 3) { //add by taufan
22477
                                    cols.push({
22478
                                        text: rec.HeaderTitle,
22479
                                        hidden: Hidden_,
22480
                                        dataIndex: rec.FieldName,
22481
                                        filter: {
22482
                                            itemDefaults: {
22483
                                                emptyText: 'Search for...'
22484
                                            }
22485
                                        },
22486
                                        editor: {
22487
                                            allowBlank: null_,
22488
                                            xtype: 'textfield',
22489
                                            readOnly: ReadOnly_,
22490
                                            id: tableName + rec.FieldName,
22491
                                            nameTable: rec.TableName,
22492
                                            fieldGrid: rec.FieldName,
22493
                                            vtype: 'validateDecimal',
22494
                                            maxLength: rec.Length,
22495
                                            precision: rec.Prec,
22496
                                            fieldStyle: 'text-align:right;',
22497
                                            listeners: {
22498
                                                change: function (val) {
22499
                                                    var custumFunc = null;
22500
                                                    Ext.Ajax.request({
22501
                                                        async: false,
22502
                                                        method: 'POST',
22503
                                                        url: '/UserControl/GetStore',
22504
                                                        params: {
22505
                                                            tableName: 'SDATATABLEFIELD',
22506
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
22507
                                                        },
22508
                                                        success: function (response) {
22509
                                                            var results = Ext.decode(response.responseText);
22510
                                                            data_ = results.data[0];
22511
                                                            if (data_ != undefined) {
22512
                                                                custumFunc = data_.SelectFunction;
22513
                                                                //console.log(data_)
22514
                                                            }
22515
                                                        }
22516
                                                    });
22517

    
22518
                                                    if (custumFunc) {
22519
                                                        eval(custumFunc)
22520
                                                    }
22521
                                                }
22522
                                            }
22523
                                        }
22524
                                    });
22525
                                } else {
22526
                                    cols.push({
22527
                                        text: rec.HeaderTitle,
22528
                                        hidden: Hidden_,
22529
                                        dataIndex: rec.FieldName,
22530
                                        filter: {
22531
                                            itemDefaults: {
22532
                                                emptyText: 'Search for...'
22533
                                            }
22534
                                        },
22535
                                        editor: {
22536
                                            allowBlank: null_,
22537
                                            xtype: 'textfield',
22538
                                            readOnly: ReadOnly_,
22539
                                            id: tableName + rec.FieldName,
22540
                                            nameTable: rec.TableName,
22541
                                            fieldGrid: rec.FieldName,
22542
                                            listeners: {
22543
                                                change: function (val) {
22544
                                                    var custumFunc = null;
22545
                                                    Ext.Ajax.request({
22546
                                                        async: false,
22547
                                                        method: 'POST',
22548
                                                        url: '/UserControl/GetStore',
22549
                                                        params: {
22550
                                                            tableName: 'SDATATABLEFIELD',
22551
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
22552
                                                        },
22553
                                                        success: function (response) {
22554
                                                            var results = Ext.decode(response.responseText);
22555
                                                            data_ = results.data[0];
22556
                                                            if (data_ != undefined) {
22557
                                                                custumFunc = data_.SelectFunction;
22558
                                                                //console.log(data_)
22559
                                                            }
22560
                                                        }
22561
                                                    });
22562

    
22563
                                                    if (custumFunc) {
22564
                                                        eval(custumFunc)
22565
                                                    }
22566
                                                }
22567
                                            }
22568
                                        }
22569
                                    });
22570
                                }
22571
                            }
22572

    
22573
                            break
22574

    
22575
                    }
22576
                } else {
22577
                    cols.push({
22578
                        text: rec.HeaderTitle,
22579
                        hidden: Hidden_,
22580
                        dataIndex: rec.FieldName,
22581
                        hidden: true,
22582
                        editor: {
22583
                            allowBlank: true,
22584
                            xtype: 'textfield',
22585
                            readOnly: ReadOnly_,
22586
                            id: tableName + rec.FieldName,
22587
                            nameTable: rec.TableName,
22588
                            fieldGrid: rec.FieldName,
22589
                        },
22590
                        filter: {
22591
                            itemDefaults: {
22592
                                emptyText: 'Search for...'
22593
                            }
22594
                        }
22595
                    });
22596
                }
22597
            });
22598

    
22599
        };
22600
        addData = addData + "}";
22601
        Ext.applyIf(me, {
22602
            items: [{
22603
                xtype: 'grid',
22604
                id: gridName,
22605
                name: gridName,
22606
                height: height,
22607
                viewConfig: {
22608
                    emptyText: 'No Data Display',
22609
                    deferEmptyText: false,
22610
                    //Add Nana For Autosize Column Mode
22611
                    listeners: {
22612
                        refresh: function (dataview) {
22613
                            Ext.each(dataview.panel.columns, function (column) {
22614
                                //if (column.autoSizeColumn == false)
22615
                                //	column.autoSizeColumn = true;
22616
                                column.autoSize();
22617
                                //dataview.store.reload();
22618
                            })
22619
                        }
22620
                    },
22621
                    render: function (comp) {
22622
                        comp.getStore().reload();
22623
                        console.log(comp);
22624
                    }
22625
                },
22626
                //store: 'gridStore',
22627
                store: Ext.create('Ext.data.Store', {
22628
                    storeId: storeID,
22629
                    fields: fieldStore,
22630
                    proxy: {
22631
                        method: 'POST',
22632
                        type: 'ajax',
22633
                        url: '',
22634
                        reader: {
22635
                            type: 'json',
22636
                            root: 'data'
22637
                        }
22638
                    }
22639
                }),
22640
                dockedItems: [{
22641
                    xtype: 'toolbar',
22642
                    items: [{
22643
                        text: 'Add',
22644
                        hidden: hide_,
22645
                        name: tableName + 'Add',
22646
                        iconCls: 'fa-plus-circle',
22647
                        style: 'font-family: FontAwesome',
22648
                        handler: function () {
22649
                            var store = Ext.StoreMgr.lookup(storeID)
22650
                            idx = store.getCount();
22651
                            var action = getParam('action');
22652
                            var data = '';
22653
                            var Sequence = 0;
22654
                            if (idx == 0) {
22655
                                Sequence = 1;
22656
                            } else {
22657
                                Sequence = 1 + idx;
22658
                            }
22659
                            //data = {
22660
                            //    Sequence: Sequence
22661
                            //};
22662

    
22663
                            var seq = 'Sequence';
22664
                            var SequenceValue = Sequence;
22665
                            eval(addData);
22666
                            data[seq] = SequenceValue;
22667

    
22668
                            store.insert(idx, data);
22669
                        }
22670

    
22671
                    }, {
22672
                        text: 'Delete',
22673
                        hidden: hide_,
22674
                        name: tableName + 'DeleteText',
22675
                        iconCls: 'fa-trash-o',
22676
                        style: 'font-family: FontAwesome',
22677
                        //disabled: true
22678
                        handler: function () {
22679
                            var me = this,
22680
                            store = Ext.StoreMgr.lookup(storeID)
22681

    
22682
                            var grid = Ext.getCmp(gridName);
22683

    
22684
                            Ext.MessageBox.show({
22685
                                title: 'Remove tab',
22686
                                msg: "This will remove. Do you want to continue?",
22687
                                buttons: Ext.MessageBox.YESNO,
22688
                                fn: function (choice) {
22689
                                    console.log(choice);
22690
                                    if (choice === 'yes') {
22691
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
22692
                                        if (selection) {
22693
                                            store.remove(selection);
22694
                                        }
22695
                                    }
22696
                                    //delete panel.pendingClose;
22697
                                }
22698
                            });
22699
                        }
22700

    
22701
                    }
22702
                    ]
22703
                }
22704
                ],
22705
                columns: cols,
22706
                selType: checkSelection,
22707
                //selType: 'rowmodel',
22708
                plugins: {
22709
                    ptype: 'rowediting',
22710
                    pluginId: 'rowEditing',
22711
                    clicksToEdit: 1,
22712
                    listeners: {
22713
                        //edit: 'onGridEditorEdit'
22714
                    }
22715
                }
22716
            }, ]
22717

    
22718
        });
22719

    
22720
        me.callParent(arguments);
22721
    }
22722
});
22723

    
22724
/*Add by Midi ( Tab List Mass Posting ERP DocType AR)*/
22725
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTransAR', {
22726
	extend: 'Ext.tab.Panel',
22727
	alias: ['widget.doctablistAR'],
22728
	transType: undefined,
22729
	docType: undefined,
22730
	docNo: undefined,
22731
	langId: undefined,
22732
	param: undefined,
22733
	layout: 'fit',
22734
	name: 'panelTabAR',
22735
	id: 'mainTabAR',
22736
	action: undefined,
22737
	initComponent: function () {
22738
		var me = this;
22739
		var documentType = me.docType;
22740
		var transactionType = me.transType;
22741
		var hasil = null;
22742
		var _items = [];
22743
		Ext.Ajax.request({
22744
			async: false,
22745
			method: 'POST',
22746
			url: '/UserControl/GetStore',
22747
			params: {
22748
				tableName: 'PCMBSTRANSLIST',
22749
				param: 'TransType[=]' + me.transType + ',' + 'DocType[=]' + me.docType		// add Tri nwh 20240220
22750
			},
22751
			success: function (response) {
22752
				var results = Ext.decode(response.responseText);
22753
				hasil = results.data;
22754
			}
22755
		});
22756
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22757
		if (hasil.length > 0) {
22758
			Ext.each(hasil, function (rec) {
22759
				if (rec.LayoutType == "L004") { // L004=Custom
22760
					var pnl = Ext.create(rec.CustomLayout, {
22761
							title: rec.Title,
22762
							tableName: rec.TableName,
22763
							//minHeight: 200,
22764
							name: 'panelTab' + rec.TableName,
22765
							tbl: rec.TableName,
22766
							layoutType: rec.LayoutType
22767
						});
22768
					_items.push(pnl)
22769
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
22770
					_items.push({
22771
						xtype: 'panel',
22772
						title: rec.Title,
22773
						name: 'panelTab' + rec.TableName,
22774
						tbl: rec.TableName,
22775
						layoutType: rec.LayoutType,
22776
						items: [{
22777
								xtype: 'docgrid',
22778
								//minHeight: 200,
22779
								tableName: rec.TableName,
22780
								docType: me.docType,
22781
								transType: me.transType,
22782
								storename: 'store' + rec.TableName,
22783
								pagesize: 25,
22784
								name: 'GRID' + rec.TableName,
22785
								margin: '0 0 10 0',
22786
								autoLoad: false,
22787
								tbar: [{
22788
										xtype: 'button',
22789
										text: 'Action',
22790
										name: 'actionGrid' + rec.TableName,
22791
										menu: [{
22792
												text: 'Add',
22793
												name: 'add' + rec.TableName,
22794
												tbl: rec.TableName,
22795
												style: 'font-family: FontAwesome',
22796
												iconCls: 'fa-plus-circle',
22797
												handler: function () {
22798
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22799
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22800
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22801
													frmDisplay.reset();
22802
													frmForm.reset();
22803
													frmDisplay.setHidden(true);
22804
													frmForm.setHidden(false);
22805
													grdPanel.setHidden(true);
22806
													action = "0";
22807
												}
22808
											}, {
22809
												text: 'Delete',
22810
												name: 'delete' + rec.TableName,
22811
												tbl: rec.TableName,
22812
												iconCls: 'fa-trash-o',
22813
												style: 'font-family: FontAwesome',
22814
												handler: function () {
22815
													var me = this;
22816
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
22817
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22818
													Ext.MessageBox.show({
22819
														title: 'Remove tab',
22820
														msg: "This will remove. Do you want to continue?",
22821
														buttons: Ext.MessageBox.YESNO,
22822
														fn: function (choice) {
22823
															console.log(choice);
22824
															if (choice === 'yes') {
22825
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
22826
																if (selection) {
22827
																	store.remove(selection);
22828
																}
22829
															}
22830
														}
22831
													});
22832
												}
22833
											}
22834
										]
22835
									}, {
22836
										xtype: 'tbfill'
22837
									}, {
22838
										text: 'Clear Filters',
22839
										tooltip: 'Clear all filters',
22840
										name: 'clearbtn',
22841
										handler: function () {}
22842
									}
22843
								],
22844
								dockedItems: [{
22845
										xtype: 'pagingtoolbar',
22846
										store: 'store' + rec.TableName,
22847
										dock: 'bottom',
22848
										pageSize: me.pagesize,
22849
										displayInfo: true
22850
									}
22851
								],
22852
								listeners: {
22853
									'itemdblclick': function (me, record, item, index, e, eOpts) {
22854
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22855
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22856
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22857
										frmDisplay.reset();
22858
										frmForm.reset();
22859
										frmDisplay.getForm().setValues(record.data);
22860
										frmForm.getForm().setValues(record.data);
22861
										frmDisplay.setHidden(false);
22862
										frmForm.setHidden(true);
22863
										grdPanel.setHidden(true);
22864
										me.action = "1";
22865
									}
22866
								}
22867
							}, {
22868
								xtype: 'minovadocform',
22869
								name: 'DISPLAY' + rec.TableName,
22870
								id: 'DISPLAY' + rec.TableName,
22871
								itemId: 'DISPLAY' + rec.TableName,
22872
								tableName: rec.TableName,
22873
								docType: me.docType,
22874
								transType: me.transType,
22875
								isDisplay: true,
22876
								hidden: true,
22877
								buttons: [{
22878
										text: 'Edit',
22879
										name: 'editDISPLAY' + rec.TableName,
22880
										handler: function () {
22881
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22882
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22883
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22884
											frmDisplay.setHidden(true);
22885
											frmForm.setHidden(false);
22886
											grdPanel.setHidden(true);
22887
										}
22888
									}, {
22889
										text: 'Cancel',
22890
										name: 'cancelDISPLAY' + rec.TableName,
22891
										handler: function () {
22892
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22893
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22894
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22895
											frmDisplay.setHidden(true);
22896
											frmForm.setHidden(true);
22897
											grdPanel.setHidden(false);
22898
											grdPanel.getStore().reload();
22899
										}
22900
									}
22901
								]
22902
							}, {
22903
								xtype: 'minovadocform',
22904
								name: 'FORM' + rec.TableName,
22905
								id: 'FORM' + rec.TableName,
22906
								itemId: 'FORM' + rec.TableName,
22907
								tableName: rec.TableName,
22908
								docType: me.docType,
22909
								transType: me.transType,
22910
								isDisplay: false,
22911
								hidden: true,
22912
								buttons: [{
22913
										text: 'Submit',
22914
										name: 'submitFORM' + rec.TableName,
22915
										handler: function () {
22916
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22917
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22918
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22919
											var frm = frmForm.getForm();
22920
											if (frm.isValid()) {
22921
												var table = rec.TableName;
22922
												var data = frmForm.getValues();
22923
												var token = MinovaUtil.SESSIONS.Token;
22924
												var str = grdPanel.getStore();
22925
												var idx = str.getCount();
22926
												str.insert(idx, data);
22927
												frmDisplay.setHidden(true);
22928
												frmForm.setHidden(true);
22929
												grdPanel.setHidden(false);
22930
											}
22931
										}
22932
									}, {
22933
										text: 'Cancel',
22934
										name: 'cancelFORM' + rec.TableName,
22935
										handler: function () {
22936
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22937
												if (respone == "yes") {
22938
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22939
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22940
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22941
													frmDisplay.setHidden(true);
22942
													frmForm.setHidden(true);
22943
													grdPanel.setHidden(false);
22944
												}
22945
											});
22946
										}
22947
									}
22948
								]
22949
							}
22950
						]
22951
					});
22952
				} else if (rec.LayoutType == "L005") { // Grid View Only
22953
					_items.push({
22954
						xtype: 'panel',
22955
						title: rec.Title,
22956
						name: 'panelTab' + rec.TableName,
22957
						tbl: rec.TableName,
22958
						layoutType: rec.LayoutType,
22959
						items: [{
22960
								xtype: 'docgrid',
22961
								//minHeight: 200,
22962
								tableName: rec.TableName,
22963
								docType: me.docType,
22964
								transType: me.transType,
22965
								storename: 'store' + rec.TableName,
22966
								pagesize: 25,
22967
								name: 'GRID' + rec.TableName,
22968
								margin: '0 0 10 0',
22969
								autoLoad: false,
22970
								tbar: [{
22971
										xtype: 'tbfill'
22972
									}, {
22973
										text: 'Clear Filters',
22974
										tooltip: 'Clear all filters',
22975
										name: 'clearbtn',
22976
										handler: function () {}
22977
									}
22978
								],
22979
								dockedItems: [{
22980
										xtype: 'pagingtoolbar',
22981
										store: 'store' + rec.TableName,
22982
										dock: 'bottom',
22983
										pageSize: me.pagesize,
22984
										displayInfo: true
22985
									}
22986
								]
22987
							}
22988
						]
22989
					});
22990
				} else if (rec.LayoutType == "L006") {
22991
					_items.push({
22992
						xtype: 'panel',
22993
						title: rec.Title,
22994
						name: 'panelTab' + rec.TableName,
22995
						tbl: rec.TableName,
22996
						layoutType: rec.LayoutType,
22997
						items: [{
22998
								xtype: 'docgridcelledit',
22999
								name: 'CELLGRID' + rec.TableName,
23000
								tableName: rec.TableName,
23001
								docType: me.docType,
23002
								transType: me.transType,
23003
								docNo: me.docNo,
23004
								height: 400,
23005
								hideButton: false,
23006
								margin: '0 0 10 0'
23007
							}
23008
						]
23009
					});
23010
				} else if (rec.LayoutType == "L007") {
23011
					_items.push({
23012
						xtype: 'panel',
23013
						title: rec.Title,
23014
						name: 'panelTab' + rec.TableName,
23015
						tbl: rec.TableName,
23016
						layoutType: rec.LayoutType,
23017
						items: [{
23018
								xtype: 'docgridcelleditsum',
23019
								name: 'CELLGRID' + rec.TableName,
23020
								tableName: rec.TableName,
23021
								docType: me.docType,
23022
								transType: me.transType,
23023
								docNo: me.docNo,
23024
								height: 400,
23025
								hideButton: false,
23026
								margin: '0 0 10 0'
23027
							}, {
23028
								xtype: 'summarydocform',
23029
								name: 'SUM' + rec.TableName,
23030
								id: 'SUM' + rec.TableName,
23031
								itemId: 'SUM' + rec.TableName,
23032
								tableName: rec.TableName,
23033
								docType: me.docType,
23034
								transType: me.transType,
23035
							}
23036
						]
23037
					});
23038
				} else { // L001=Default Form Only
23039
					_items.push({
23040
						xtype: 'panel',
23041
						title: rec.LabelName,
23042
						name: 'panelTab' + rec.TableName,
23043
						tbl: rec.TableName,
23044
						layoutType: rec.LayoutType,
23045
						items: [{
23046
								xtype: 'minovadocform',
23047
								name: 'DISPLAY' + rec.TableName,
23048
								id: 'DISPLAY' + rec.TableName,
23049
								itemId: 'DISPLAY' + rec.TableName,
23050
								tableName: rec.TableName,
23051
								docType: me.docType,
23052
								transType: me.transType,
23053
								isDisplay: true,
23054
								hidden: false,
23055
								buttons: [{
23056
										text: 'Edit',
23057
										name: 'editDISPLAY' + rec.TableName,
23058
										iconCls: 'fa-edit',
23059
										style: 'font-family: FontAwesome',
23060
										handler: function () {
23061
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23062
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23063
											frmDisplay.setHidden(true);
23064
											frmForm.setHidden(false);
23065
											me.action = "1";
23066
										}
23067
									}, {
23068
										text: 'Cancel',
23069
										name: 'cancelDISPLAY' + rec.TableName,
23070
										iconCls: 'fa-reply',
23071
										style: 'font-family: FontAwesome',
23072
										hidden: true
23073
									}
23074
								]
23075
							}, {
23076
								xtype: 'minovadocform',
23077
								name: 'FORM' + rec.TableName,
23078
								id: 'FORM' + rec.TableName,
23079
								itemId: 'FORM' + rec.TableName,
23080
								tableName: rec.TableName,
23081
								docType: me.docType,
23082
								transType: me.transType,
23083
								isDisplay: false,
23084
								hidden: true,
23085
								buttons: [{
23086
										text: 'Save',
23087
										name: 'saveDISPLAY' + rec.TableName,
23088
										iconCls: 'fa-save',
23089
										style: 'font-family: FontAwesome',
23090
										handler: function () {
23091
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23092
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23093
											 var headerDisplay =undefined;
23094
											if(rec.TableName=="PTRPRODUCTIONHEAD"){
23095
												headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
23096
												frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
23097
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
23098
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
23099
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
23100
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
23101
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
23102
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());	
23103
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());	
23104
											}else{
23105
												headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
23106
											}
23107
											var frm = frmForm.getForm();
23108
											if (frm.isValid()) {
23109
												
23110
												
23111
												var table = rec.TableName;
23112
												var data = Ext.encode(frmForm.getValues());
23113
												var token = MinovaUtil.SESSIONS.Token;
23114
												var action=action;
23115
												if(action==undefined){action=0};
23116
												var params = {
23117
													apiController: 'api/Devt',
23118
													methodName: 'SaveTableMaster',
23119
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23120
												};
23121
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23122
													var result = Ext.decode(xhr.responseText);
23123
													var r = Ext.decode(result.data);
23124
													if (r.success) {
23125
														headerDisplay.mask("Loading...");
23126
														var idNo = r.data;
23127
														frmForm.getForm().findField("DocNo").setValue(idNo);
23128
														frmDisplay.getForm().setValues(frmForm.getValues());
23129
												headerDisplay.getForm().setValues(frmForm.getValues());
23130
														frmDisplay.setHidden(false);
23131
														frmForm.setHidden(true);
23132
														MinovaMessage('Not Null', '000006', '', 'S');
23133
														headerDisplay.unmask();
23134
													} else {
23135
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23136
													}
23137
												});
23138
											}
23139
										}
23140
									}, {
23141
										text: 'Delete',
23142
										name: 'deleteDISPLAY' + rec.TableName,
23143
										iconCls: 'fa-trash-o',
23144
										style: 'font-family: FontAwesome',
23145
										handler: function () {}
23146
									}, {
23147
										text: 'Cancel',
23148
										name: 'cancelDISPLAY' + rec.TableName,
23149
										iconCls: 'fa-reply',
23150
										style: 'font-family: FontAwesome',
23151
										handler: function () {
23152
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
23153
												if (respone == "yes") {
23154
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23155
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23156
													frmDisplay.setHidden(false);
23157
													frmForm.setHidden(true);
23158
												}
23159
											});
23160
										}
23161
									}
23162
								]
23163
							}
23164
						]
23165
					});
23166
				}
23167
			});
23168
		}
23169
		Ext.applyIf(me, {
23170
			items: _items
23171
		});
23172
		me.callParent(arguments);
23173
	}
23174
});
23175

    
23176
/*Add by YN ( Tab List for PA on Top)*/
23177
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDNew', {
23178
    extend: 'Ext.form.Panel',
23179
    alias: ['widget.MinovaHeadermdNew', 'widget.MinovaHeaderMDNew'],
23180
    allTableName: undefined,
23181
    param: undefined,
23182
    //frame: true,
23183
    resizable: true,
23184
    autoScroll: true,
23185
    minHeight: 20,
23186
    layout: 'column',
23187
    name: 'HeaderMD',
23188
    getAllTableName: function () {
23189
        return this.allTableName;
23190
    },
23191
    setAllTableName: function (value) {
23192
        var me = this;
23193
        me.allTableName = value;
23194
        return me;
23195
    },
23196
    listeners: {
23197
        afterrender: function (me) {
23198
            var nowDate = MinovaUtil.GetNowDate()
23199
            var allTbl = me.getAllTableName();
23200
            //alert(allTbl);
23201
            var splitTable = allTbl.split(',')
23202
            splitTable.forEach(function (tbl) {
23203
                // console.log(tbl);
23204
                //set values form
23205
                var nowDate = MinovaUtil.GetNowDate();
23206
                parameter = null;
23207
                if (me.isEmployee == true) {
23208
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
23209
                } else {
23210
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
23211
                }
23212
                Ext.Ajax.request({
23213
                    method: 'POST',
23214
                    //async: false,
23215
                    url: '/UserControl/GetStore',
23216
                    params: {
23217
                        tableName: tbl,
23218
                        param: parameter
23219
                    },
23220
                    success: function (response) {
23221
                        var results = Ext.decode(response.responseText);
23222
                        hasil = results.data;
23223
                        if (hasil.length > 0) {
23224
                            me.getForm().setValues(hasil[0]);
23225

    
23226
                            //console.log(me)
23227
                        }
23228

    
23229
                    }
23230
                });
23231
            });
23232

    
23233
            //setTimeout(function () {
23234
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
23235
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
23236
            //}, 100);
23237

    
23238
        },
23239

    
23240
    },
23241

    
23242
    initComponent: function () {
23243
        var me = this;
23244
        var col1 = [];
23245
        var col2 = [];
23246
        var hasil = null;
23247
        //get moduletype
23248
        //var ModuleType = 'PA';
23249
        //var ModuleType = MinovaUtil.GetModuleType()
23250
        //get Lang
23251
        var LangId = localStorage.LangId;
23252
        var allTable = null;
23253
        var tbl = null;
23254
        var tblTemp = null;
23255
        var nowDate = MinovaUtil.GetNowDate();
23256
        //var Photo_ = 'nophoto.gif';
23257
        var Photo = 'nophoto.gif';
23258
        tableName = null;
23259
        parameter = null;
23260
        // get Photo
23261
        //hamid200916
23262
        if (me.isEmployee == true) {
23263
            tableName = 'PHRPA0001';
23264
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
23265
        } else {
23266
            tableName = 'PHRRC0001';
23267
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
23268
        }
23269
        Ext.Ajax.request({
23270
            method: 'POST',
23271
            async: false,
23272
            url: '/UserControl/GetStore',
23273
            params: {
23274
                tableName: tableName,
23275
                param: parameter
23276
            },
23277
            success: function (response) {
23278
                var results = Ext.decode(response.responseText);
23279
                hasil = results.data;
23280
                if (hasil.length > 0) {
23281
                    dataPhoto = hasil[0].Picture
23282
                    if (dataPhoto != "") {
23283
                        Photo = dataPhoto;
23284
                    }
23285
                }
23286

    
23287
            }
23288
        });
23289

    
23290
        var hasil = undefined;
23291
        Ext.Ajax.request({
23292
            async: false,
23293
            method: 'POST',
23294
            url: '/UserControl/GetStore',
23295
            params: {
23296
                tableName: 'PDSBS0009',
23297
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
23298
            },
23299
            success: function (response) {
23300
                hasil = Ext.decode(response.responseText).data;
23301

    
23302
            }
23303
        });
23304

    
23305
        //sorting results
23306
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
23307
        if (hasil.length > 0) {
23308
            Ext.each(hasil, function (rec) {
23309
                tblTemp = rec.TableName;
23310
                if (tbl != tblTemp) {
23311
                    tbl = tblTemp;
23312
                    if (allTable == null) {
23313
                        allTable = tbl
23314
                    } else {
23315
                        allTable = allTable + ',' + tbl
23316
                    }
23317

    
23318
                }
23319
                // build form
23320
                if (rec.TableRef != '') {
23321
                    valueField = null;
23322
                    displayValue = null;
23323
                    Ext.Ajax.request({
23324
                        async: false,
23325
                        method: 'POST',
23326
                        url: '/UserControl/GetStore',
23327
                        params: {
23328
                            tableName: 'SDATATABLEFIELD',
23329
                            param: 'TableName[equal]' + rec.TableRef
23330
                        },
23331
                        success: function (response) {
23332
                            var results = Ext.decode(response.responseText);
23333
                            data_ = results.data;
23334
                            if (data_ != undefined) {
23335
                                valueField_ = $.grep(data_, function (r) {
23336
                                    return r.ValueField == '1'
23337
                                });
23338
                                if (valueField_.length > 0) {
23339
                                    valueField = valueField_[0].FieldName
23340
                                }
23341

    
23342
                                displayValue_ = $.grep(data_, function (r) {
23343
                                    return r.DisplayValue == '1'
23344
                                });
23345
                                if (displayValue_.length > 0) {
23346
                                    displayValue = displayValue_[0].FieldName
23347
                                }
23348
                            }
23349
                        }
23350
                    });
23351

    
23352
                    formfield = new Ext.form.Display({
23353
                        fieldLabel: rec.ScreenCaption,
23354
                        name: rec.FieldName,
23355
                        //value: rec.DefaultValue,
23356
                        padding: 0,
23357
                        labelCls: 'label-minova',
23358
                        labelWidth: 150,
23359
                        anchor: '80%',
23360
                        store: Ext.create('Ext.data.Store', {
23361
                            storeId: 'storeDisplay' + rec.FieldName,
23362
                            //autoLoad: true,
23363
                            proxy: {
23364
                                method: 'POST',
23365
                                type: 'ajax',
23366
                                extraParams: {
23367
                                    tableName: rec.TableRef,
23368
                                    param: ''
23369
                                },
23370
                                reader: {
23371
                                    type: 'json',
23372
                                    root: 'data',
23373
                                    totalProperty: 'data[0].TotalCount'
23374
                                }
23375
                            }
23376
                        }),
23377
                        listeners: {
23378
                            afterrender: function (f) {
23379
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
23380
                                var ParamCombo = rec.ParamCombo;
23381
                                var param = '';
23382
                                //if (ParamCombo != '') {
23383
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
23384
                                    var splitParam = ParamCombo.split(']');
23385
                                    switch (rec.FieldName) {
23386
                                        case 'Position':
23387
                                            ParamCombo = 'P'
23388
                                            break;
23389
                                        case 'CostCenter':
23390
                                            ParamCombo = 'CC'
23391
                                            break;
23392
                                        case 'Organization':
23393
                                            ParamCombo = 'O'
23394
                                            break;
23395
                                        case 'Job':
23396
                                            ParamCombo = 'J'
23397
                                            break;
23398
                                    }
23399
                                    //if (splitParam.length == 1) {
23400
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
23401
                                    //} else {
23402
                                    //    param = ParamCombo;
23403
                                    //}
23404
                                }
23405
                                //}
23406
                                Ext.Ajax.request({
23407
                                    method: 'POST',
23408
                                    async: false,
23409
                                    url: '/UserControl/GetStore',
23410
                                    params: {
23411
                                        tableName: rec.TableRef,
23412
                                        param: param
23413
                                    },
23414
                                    success: function (response) {
23415
                                        var results = Ext.decode(response.responseText);
23416

    
23417
                                        //dt = results.data;
23418
                                        store.loadData(results.data);
23419

    
23420
                                    }
23421
                                });
23422
                            },
23423
                            change: function (f) {
23424
                                //alert(this.valueField, value);
23425
                                var display = this.displayField;
23426
                                var value = this.getValue();
23427
                                var st = f.store
23428
                                var r = st.findRecord(f.valueField, f.value)
23429
                                if (r != null) {
23430
                                    f.setRawValue(r.get(f.displayField))
23431
                                } else {
23432
                                    f.setRawValue(f.value);
23433

    
23434
                                }
23435
                            }
23436
                        },
23437
                        queryMode: 'local',
23438
                        displayField: displayValue,
23439
                        valueField: valueField,
23440
                    });
23441
                }
23442
                else {
23443
                    formfield = new Ext.form.Display({
23444
                        fieldLabel: rec.ScreenCaption,
23445
                        name: rec.FieldName,
23446
                        labelCls: 'label-minova',
23447
                        labelWidth: 150,
23448
                        //value: rec.DefaultValue,
23449
                        padding: 0,
23450
                        anchor: '80%'
23451
                    });
23452
                }
23453
                if (isDesk) {
23454
                    if (rec.Column == 1) {
23455
                        col1.push(formfield);
23456
                    } else {
23457
                        col2.push(formfield);
23458
                    }
23459
                } else {
23460
                    col1.push(formfield);
23461
                }
23462

    
23463
            });
23464
            //set allTable
23465
            this.setAllTableName(allTable);
23466
        }
23467

    
23468
        Ext.applyIf(me, {
23469
            items: [
23470
                {
23471
                    width: 150,
23472
                    //margin: '10 5 3 30',
23473
                    margin: '5 0 0 30',
23474
                    height: 130,
23475
                    items: [
23476
                        {
23477
                            xtype: 'image',
23478
                            id: 'imageusermd',
23479
                            name: 'imageusermd',
23480
                            width: 120,
23481
                            height: 120,
23482
                            padding: 5,
23483
                            border: true,
23484
                            src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
23485
                        }
23486
                    ]
23487
                },
23488
                {
23489
                    bodyPadding: 0,
23490
                    width: 300,
23491
                    margin: '15 0 0 30', //margin: '10 5 3 30',
23492
                    items: col1
23493
                },
23494
                {
23495
                    bodyPadding: 0,
23496
                    //width: 350,
23497
                    margin: '15 0 0 30', //margin: '10 5 3 30',
23498
                    items: col2
23499
                }
23500
            ],
23501
        });
23502

    
23503
        me.callParent(arguments);
23504

    
23505
    }
23506
});
23507

    
23508
//panelTab->panelTab+TableName->GRID+TableName | DISPLAY+TableName | FORM+TableName 
23509
Ext.define('MinovaUtil.MinovaES.MinovaTabListMDNew', {
23510
    extend: 'Ext.tab.Panel',
23511
    alias: ['widget.MinovaTabListMDNew'],
23512
    mixins: [
23513
        'Ext.util.StoreHolder'
23514
    ],
23515
    config: {
23516
        titleField: 'title'
23517
    },
23518
    name: 'gridMenuMD',
23519
    id: 'mainTab',
23520
    moduleType: undefined,
23521
    tablenameheader: undefined,
23522
    langId: undefined,
23523
    param: undefined,
23524
    frame: true,
23525
    //style: {
23526
    //    background: '#ffc'
23527
    //},
23528
    //cls: 'modern-tabpanel',
23529
    //bodyStyle: {
23530
    //    background: '#ffc',
23531
    //    padding: '10px'
23532
    //},
23533
    defaults: {
23534
        scrollable: true,
23535
        iconAlign: 'top',
23536
        userSelectable: {
23537
            bodyElement: true
23538
        }
23539
    },
23540
    tabBar: {
23541
        layout: { pack: 'center' }
23542
    },
23543
    initComponent: function () {
23544
        var me = this;
23545
        var hasil = null;
23546
        var _items = [];
23547

    
23548
        // Ambil Daftar Master Data dari PCMEPMDLIST untuk ditampilkan di Tab
23549
        Ext.Ajax.request({
23550
            async: false,
23551
            method: 'POST',
23552
            url: '/UserControl/GetStore',
23553
            params: {
23554
                tableName: 'PCMEPMDLIST',
23555
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
23556
            },
23557
            success: function (response) {
23558
                var results = Ext.decode(response.responseText);
23559
                hasil = results.data;
23560
            }
23561
        });
23562
        hasil = hasil.sort(MinovaUtil.SortBySeq("Sequence"));
23563

    
23564
        // Jika Daftar Master ada, Load dari Table PA satu persatu ke setiap Tab
23565
        if (hasil.length > 0) {
23566
            Ext.each(hasil, function (rec) {
23567
                if ((rec.LayoutType == "L003") || (rec.LayoutType == "L004"))  { // L003=GRID, DISPLAY, FORM
23568
                    //panelTab+TableName
23569
                    _items.push({
23570
                        xtype: 'panel',
23571
                        iconCls: rec.IconCls, //"fa fa-address-book-o",
23572
                        title: rec.LabelName,
23573
                        name: 'panelTab' + rec.TableName,
23574
                        record: rec, //dipanggil di mainNew1Controller.js
23575
                        tbl: rec.TableName,
23576
                        //layout: 'center', //bikin layout kacau
23577
                        //cls: 'card',
23578
                        //items: [
23579
                        //    //GRID+TableName (minovagrid1)
23580
                        //    {
23581
                        //        xtype: 'minovagrid1new',
23582
                        //        height: 450,
23583
                        //        tableName: rec.TableName,
23584
                        //        storename: 'store' + rec.TableName,
23585
                        //        pagesize: 25,
23586
                        //        name: 'GRID' + rec.TableName,
23587
                        //        margin: '0 0 10 0',
23588
                        //        autoLoad: false,
23589
                        //        param: 'EmployeeID[=]' + getParam("EmployeeID"),
23590
                        //        //Top Toolbar
23591
                        //        tbar: [
23592
                        //            //tbfill
23593
                        //            {
23594
                        //                xtype: 'tbfill'
23595
                        //            },
23596
                        //            //Combo Action
23597
                        //            {
23598
                        //                xtype: 'button',
23599
                        //                text: 'Action',
23600
                        //                name: 'actionGrid' + rec.TableName,
23601
                        //                menu: [
23602
                        //                    //Add
23603
                        //                    {
23604
                        //                        text: 'Add',
23605
                        //                        name: 'add' + rec.TableName,
23606
                        //                        tbl: rec.TableName,
23607
                        //                        style: 'font-family: FontAwesome',
23608
                        //                        iconCls: 'fa-plus-circle',
23609
                        //                        handler: function () {
23610
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23611
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23612
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23613
                        //                            var keyField = getParam("KeyID");
23614
                        //                            var keyValue = getParam("KeyValue");
23615
                        //                            frmDisplay.reset();
23616
                        //                            frmForm.reset();
23617
                        //                            var idseq = 0;
23618
                        //                            var params = {
23619
                        //                                apiController: 'api/Devt',
23620
                        //                                methodName: 'GetLastSeqID',
23621
                        //                                parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
23622
                        //                            };
23623
                        //                            MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23624
                        //                                var result = Ext.decode(xhr.responseText);
23625
                        //                                var r = Ext.decode(result.data);
23626
                        //                                idseq = r.data + 1;
23627
                        //                                frmForm.getForm().findField(keyField).setValue(keyValue);
23628
                        //                                frmForm.getForm().findField("SeqID").setValue(idseq);
23629
                        //                            });
23630
                        //                            frmDisplay.setHidden(true);
23631
                        //                            frmForm.setHidden(false);
23632
                        //                            grdPanel.setHidden(true);
23633
                        //                            action = "0";
23634
                        //                        }
23635
                        //                    },
23636
                        //                    //Copy
23637
                        //                    {
23638
                        //                        text: 'Copy',
23639
                        //                        name: 'copy' + rec.TableName,
23640
                        //                        tbl: rec.TableName,
23641
                        //                        iconCls: 'fa-copy',
23642
                        //                        style: 'font-family: FontAwesome',
23643
                        //                        handler: function () {
23644
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23645
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23646
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23647
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23648
                        //                            var keyField = getParam("KeyID");
23649
                        //                            if (dtrec) {
23650
                        //                                frmDisplay.reset();
23651
                        //                                frmForm.reset();
23652
                        //                                frmForm.getForm().setValues(dtrec.data);
23653
                        //                                frmDisplay.setHidden(true);
23654
                        //                                frmForm.setHidden(false);
23655
                        //                                grdPanel.setHidden(true);
23656
                        //                                action = "0";
23657
                        //                                frmForm.getForm().findField(keyField).setValue("");
23658
                        //                            }
23659
                        //                        }
23660
                        //                    },
23661
                        //                    //Edit
23662
                        //                    {
23663
                        //                        text: 'Edit',
23664
                        //                        name: 'edit' + rec.TableName,
23665
                        //                        tbl: rec.TableName,
23666
                        //                        iconCls: 'fa-edit',
23667
                        //                        style: 'font-family: FontAwesome',
23668
                        //                        handler: function () {
23669
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23670
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23671
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23672
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23673
                        //                            if (dtrec) {
23674
                        //                                frmDisplay.reset();
23675
                        //                                frmForm.reset();
23676
                        //                                frmForm.getForm().setValues(dtrec.data);
23677
                        //                                frmDisplay.setHidden(true);
23678
                        //                                frmForm.setHidden(false);
23679
                        //                                grdPanel.setHidden(true);
23680
                        //                                action = "1";
23681
                        //                            }
23682
                        //                        }
23683
                        //                    }
23684
                        //                ]
23685
                        //            },
23686
                        //            //Btn Clear Filter
23687
                        //            {
23688
                        //                text: 'Clear Filters',
23689
                        //                tooltip: 'Clear all filters',
23690
                        //                name: 'clearbtn',
23691
                        //                handler: function () { }
23692
                        //            }
23693
                        //        ],
23694
                        //        //Paging Toolbar
23695
                        //        dockedItems: [
23696
                        //            {
23697
                        //                xtype: 'pagingtoolbar',
23698
                        //                store: 'store' + rec.TableName,
23699
                        //                dock: 'bottom',
23700
                        //                pageSize: me.pagesize,
23701
                        //                displayInfo: true
23702
                        //            }
23703
                        //        ],
23704
                        //        //Event Event itemdblclick
23705
                        //        listeners: {
23706
                        //            'itemdblclick': function (me, record, item, index, e, eOpts) {
23707
                        //                var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23708
                        //                var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23709
                        //                var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23710
                        //                frmDisplay.reset();
23711
                        //                frmForm.reset();
23712
                        //                frmDisplay.getForm().setValues(record.data);
23713
                        //                frmForm.getForm().setValues(record.data);
23714
                        //                frmDisplay.setHidden(false);
23715
                        //                frmForm.setHidden(true);
23716
                        //                grdPanel.setHidden(true);
23717
                        //                action = "1";
23718
                        //            }
23719
                        //        }
23720
                        //    },
23721
                        //    //DISPLAY+TableName (minovaform)
23722
                        //    {
23723
                        //        xtype: 'minovaformnew',
23724
                        //        name: 'DISPLAY' + rec.TableName,
23725
                        //        id: 'DISPLAY' + rec.TableName,
23726
                        //        itemId: 'DISPLAY' + rec.TableName,
23727
                        //        tableName: rec.TableName,
23728
                        //        isDisplay: true,
23729
                        //        hidden: true,
23730
                        //        buttons: [
23731
                        //            {
23732
                        //                text: 'Edit',
23733
                        //                name: 'editDISPLAY' + rec.TableName,
23734
                        //                iconCls: 'fa-edit',
23735
                        //                style: 'font-family: FontAwesome',
23736
                        //                handler: function () {
23737
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23738
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23739
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23740
                        //                    frmDisplay.setHidden(true);
23741
                        //                    frmForm.setHidden(false);
23742
                        //                    grdPanel.setHidden(true);
23743
                        //                }
23744
                        //            },
23745
                        //            {
23746
                        //                text: 'Cancel',
23747
                        //                name: 'cancelDISPLAY' + rec.TableName,
23748
                        //                iconCls: 'fa-reply',
23749
                        //                style: 'font-family: FontAwesome',
23750
                        //                handler: function () {
23751
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23752
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23753
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23754
                        //                    frmDisplay.setHidden(true);
23755
                        //                    frmForm.setHidden(true);
23756
                        //                    grdPanel.setHidden(false);
23757
                        //                }
23758
                        //            }
23759
                        //        ]
23760
                        //    },
23761
                        //    //FORM+TableName (minovaform)
23762
                        //    {
23763
                        //        xtype: 'minovaformnew',
23764
                        //        name: 'FORM' + rec.TableName,
23765
                        //        id: 'FORM' + rec.TableName,
23766
                        //        itemId: 'FORM' + rec.TableName,
23767
                        //        tableName: rec.TableName,
23768
                        //        isDisplay: false,
23769
                        //        hidden: true,
23770
                        //        buttons: [
23771
                        //            {
23772
                        //                text: 'Save',
23773
                        //                name: 'saveFORM' + rec.TableName,
23774
                        //                iconCls: 'fa-save',
23775
                        //                style: 'font-family: FontAwesome',
23776
                        //                handler: function () {
23777
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23778
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23779
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23780
                        //                    var frm = frmForm.getForm();
23781
                        //                    if (frm.isValid()) {
23782
                        //                        var keyField = getParam("KeyID");
23783
                        //                        var table = rec.TableName;
23784
                        //                        var data = Ext.encode(frmForm.getValues());
23785
                        //                        var token = MinovaUtil.SESSIONS.Token;
23786
                        //                        var params = {
23787
                        //                            apiController: 'api/Devt',
23788
                        //                            methodName: 'SaveTableMaster',
23789
                        //                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23790
                        //                        };
23791
                        //                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23792
                        //                            var result = Ext.decode(xhr.responseText);
23793
                        //                            var r = Ext.decode(result.data);
23794
                        //                            if (r.success) {
23795
                        //                                frmDisplay.setHidden(true);
23796
                        //                                frmForm.setHidden(true);
23797
                        //                                grdPanel.setHidden(false);
23798
                        //                                grdPanel.getStore().reload();
23799
                        //                                MinovaMessage('Not Null', '000006', '', 'S');
23800
                        //                            } else {
23801
                        //                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23802
                        //                            }
23803
                        //                        });
23804
                        //                    }
23805
                        //                }
23806
                        //            },
23807
                        //            {
23808
                        //                text: 'Delete',
23809
                        //                name: 'deleteFORM' + rec.TableName,
23810
                        //                iconCls: 'fa-trash-o',
23811
                        //                style: 'font-family: FontAwesome ',
23812
                        //                handler: function () {
23813
                        //                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
23814
                        //                        if (respone == "yes") {
23815
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23816
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23817
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23818
                        //                            var frm = frmForm.getForm();
23819
                        //                            if (frm.isValid()) {
23820
                        //                                var keyField = getParam("KeyID");
23821
                        //                                var table = rec.TableName;
23822
                        //                                var data = Ext.encode(frmForm.getValues());
23823
                        //                                var token = MinovaUtil.SESSIONS.Token;
23824
                        //                                action = "2";
23825
                        //                                var params = {
23826
                        //                                    apiController: 'api/Devt',
23827
                        //                                    methodName: 'SaveTableMaster',
23828
                        //                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23829
                        //                                };
23830
                        //                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23831
                        //                                    var result = Ext.decode(xhr.responseText);
23832
                        //                                    var r = Ext.decode(result.data);
23833
                        //                                    if (r.success) {
23834
                        //                                        frmDisplay.setHidden(true);
23835
                        //                                        frmForm.setHidden(true);
23836
                        //                                        grdPanel.setHidden(false);
23837
                        //                                        grdPanel.getStore().reload();
23838
                        //                                        MinovaMessage('Not Null', '000006', '', 'S');
23839
                        //                                    } else {
23840
                        //                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23841
                        //                                    }
23842
                        //                                });
23843
                        //                            }
23844
                        //                        }
23845
                        //                    });
23846
                        //                }
23847
                        //            },
23848
                        //            {
23849
                        //                text: 'Cancel',
23850
                        //                name: 'cancelFORM' + rec.TableName,
23851
                        //                iconCls: 'fa-reply',
23852
                        //                style: 'font-family: FontAwesome',
23853
                        //                handler: function () {
23854
                        //                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
23855
                        //                        if (respone == "yes") {
23856
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23857
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23858
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23859
                        //                            frmDisplay.setHidden(true);
23860
                        //                            frmForm.setHidden(true);
23861
                        //                            grdPanel.setHidden(false);
23862
                        //                            grdPanel.getStore().reload();
23863
                        //                        }
23864
                        //                    });
23865
                        //                }
23866
                        //            }
23867
                        //        ]
23868
                        //    }
23869
                        //]
23870
                        layoutType: rec.LayoutType //dikomen kalau mau test hilangkan items, bikin layout kacau                       
23871
                    })
23872
                }
23873
            })
23874
        }
23875
        Ext.applyIf(me, {
23876
            items: _items,
23877
            store: hasil
23878
        });
23879
        me.callParent(arguments);
23880
        this.bindStore(this.store, true);
23881
    },
23882

    
23883
    getStoreListeners: function () {
23884
        var me = this;
23885

    
23886
        return {
23887
            refresh: me.onDataRefresh,
23888
            /*replace: me.onReplace,
23889
            add: me.onAdd,
23890
            remove: me.onRemove,
23891
            update: me.onUpdate,
23892
            clear: me.onDataRefresh,
23893
            beginupdate: me.onBeginUpdate,
23894
            endupdate: me.onEndUpdate*/
23895
        };
23896
    },
23897

    
23898
    onBindStore: function (store) {
23899
        //this.onDataRefresh(store);
23900
    },
23901

    
23902
    onDataRefresh: function (store) {
23903
        var me = this,
23904
            titleField = me.getTitleField();
23905

    
23906
        store.each(function (record) {
23907
            var tab = me.getTabByRecord(record);
23908

    
23909
            if (!tab) {
23910
                me.add({
23911
                    title: record.get(titleField)
23912
                });
23913
            }
23914
        });
23915

    
23916
        if (!me.getActiveTab()) {
23917
            me.setActiveTab(0);
23918
        }
23919
    },
23920

    
23921
    getTabByRecord: function (record) {
23922
        var items = this.items,
23923
            tab;
23924

    
23925
        items.each(function (item) {
23926
            if (item.$record === record) {
23927
                tab = item;
23928

    
23929
                return false;
23930
            }
23931
        });
23932

    
23933
        return tab;
23934
    }
23935
});
23936

    
23937
Ext.define('MinovaUtil.MinovaES.MinovaTabListORMNew', {
23938
    extend: 'Ext.tab.Panel',
23939
    alias: ['widget.MinovaTabListORMNew'],
23940
    mixins: [
23941
        'Ext.util.StoreHolder'
23942
    ],
23943
    config: {
23944
        titleField: 'title'
23945
    },
23946
    id: 'mainTab',
23947
    //moduleType: undefined,
23948
    //tablenameheader: undefined,
23949
    //langId: undefined,
23950
    //param: undefined,
23951
    //frame: true,
23952
    //style: {
23953
    //    background: '#ffc'
23954
    //},
23955
    //cls: 'modern-tabpanel',
23956
    //bodyStyle: {
23957
    //    background: '#ffc',
23958
    //    padding: '10px'
23959
    //},
23960
    defaults: {
23961
        scrollable: true,
23962
        iconAlign: 'top',
23963
        userSelectable: {
23964
            bodyElement: true
23965
        }
23966
    },
23967
    tabBar: {
23968
        layout: { pack: 'center' }
23969
    },
23970
    initComponent: function () {
23971
        var me = this;
23972
        var hasil = null;
23973
        var _items = [];
23974
        Ext.applyIf(me, {
23975
            items: _items,
23976
            //store: hasil
23977
            store: Ext.create('Ext.data.Store', {
23978
                storeId: 'gridMenuMDOrm',
23979
                autoLoad: false,
23980
                proxy: {
23981
                    method: 'POST',
23982
                    type: 'ajax',
23983
                    //url: '../../extended/data/menu_md_orm.js',
23984
                    reader: {
23985
                        type: 'json',
23986
                        root: 'data'
23987
                    }
23988
                }
23989
            }),
23990
        });
23991
        me.callParent(arguments);
23992
        this.bindStore(this.store, true);
23993
    },
23994

    
23995
    //listeners: {
23996
    //    'viewready': function (grid) {
23997
    //        grid.getSelectionModel().select(0);
23998
    //        grid.fireEvent('rowClick', grid, 0);
23999
    //    }
24000
    //},
24001
    getStoreListeners: function () {
24002
        var me = this;
24003

    
24004
        return {
24005
            refresh: me.onDataRefresh,
24006
            /*replace: me.onReplace,
24007
            add: me.onAdd,
24008
            remove: me.onRemove,
24009
            update: me.onUpdate,
24010
            clear: me.onDataRefresh,
24011
            beginupdate: me.onBeginUpdate,
24012
            endupdate: me.onEndUpdate*/
24013
        };
24014
    },
24015

    
24016
    onBindStore: function (store) {
24017
        this.onDataRefresh(store);
24018
    },
24019

    
24020
    onDataRefresh: function (store) {
24021
        var me = this,
24022
            titleField = me.getTitleField();
24023
        me.removeAll();
24024
        store.each(function (record) {
24025
            var tab = me.getTabByRecord(record);
24026

    
24027
            if (!tab) {
24028
                me.add({
24029
                    iconCls: 'fa fa-address-book-o', //record.get('IconCls')
24030
                    title: record.get('LabelName'),
24031
                    name: 'panelTab' + record.get('TableName'),
24032
                    record: record, //dipanggil di mainNew1Controller.js
24033
                    tbl: record.get('TableName'),
24034
                    layoutType: record.get('LayoutType')
24035
                });
24036
            }
24037
        });
24038

    
24039
        if (!me.getActiveTab()) {
24040
            me.setActiveTab(0);
24041
        }
24042
    },
24043

    
24044
    getTabByRecord: function (record) {
24045
        var items = this.items,
24046
            tab;
24047

    
24048
        items.each(function (item) {
24049
            //if (item.$record === record) {
24050
            if (item.record === record) {
24051
                tab = item;
24052

    
24053
                return false;
24054
            }
24055
        });
24056

    
24057
        return tab;
24058
    }
24059
});
24060

    
24061
/* BEGIN YN 20211216 */
24062
/*NonEditableGrid ESS Generator YN 20211216 */
24063
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGrid', {
24064
    extend: 'Ext.form.Panel',
24065
    alias: ['widget.minovaworkflownoneditablegrid'],
24066
    requires: [
24067
        'Ext.grid.plugin.CellEditing',
24068
        'Ext.grid.RowNumberer',
24069
        'Ext.grid.Panel',
24070
    ],
24071
    cls: 'grid-ess',
24072
    anchor: '100%',
24073
    tableName: undefined,
24074
    tableNameT: undefined,
24075
    tableNameKey: undefined,
24076
    tableNameTKey: undefined,
24077
    hideButton: undefined,
24078
    multiSelect: undefined,
24079
    formname: this.name,
24080
    bizprocid: undefined,
24081
    bizflowid: undefined,
24082
    taskid: undefined,
24083
    features: undefined,
24084
    //height: 400,
24085
    minHeight: 20,
24086
    maxHeight: 500,
24087
    headerLayout: undefined,
24088
    summaryType: undefined,
24089
    labelText: undefined,
24090
    find: function (searchData, target, accum = []) {
24091
        target.forEach((f) => {
24092
            if (f.columns) {
24093
                //find(searchData, f.columns, accum)
24094
                //console.log(f.columns);
24095
                const newf = f.columns.map(o => {
24096
                    if (o.dataIndex == searchData.dataIndex) {
24097
                        searchData.menuDisabled = true;
24098
                        return searchData;
24099
                    } else {
24100
                        o.menuDisabled = true;
24101
                        return o
24102
                    }
24103
                });                
24104
                accum.push({
24105
                    header: f.header,
24106
                    //columns: {
24107
                    //    defaults: {
24108
                    //        menuDisabled: true
24109
                    //    },
24110
                    //    items: newf
24111
                    //}
24112
                    columns: newf
24113
                });
24114
            } else {
24115
                if (f.dataIndex.includes(searchData.dataIndex)) {
24116
                    accum.push(searchData);
24117
                }
24118
                else {
24119
                    accum.push(f);
24120
                }
24121
            }
24122
        })
24123
        return accum;
24124

    
24125
    },
24126
    initComponent: function () {
24127
        var me = this;
24128
        var isLookup = me.isLookup;
24129
        var hide_ = false;
24130
        var widthLock = 250;
24131
        var checkSelection = '';
24132
        if (me.hideButton == true) {
24133
            hide_ = true;
24134
        }
24135
        if (me.multiSelect) {
24136
            locking = false;
24137
            checkSelection = 'checkboxmodel';
24138
            widthLock = 40;
24139
        }
24140
        var tableName = me.tableName;
24141
        var features = me.features;
24142
        var cols = [];
24143
        var fieldStore = [];
24144
        var _url = 'GetAllField';
24145
        var hasil = null;
24146
        var height = me.height;
24147
        var storeID = 'store' + me.tableName;
24148
        var gridName = 'grid' + me.name;
24149
        if (me.storeName) {
24150
            storeID = me.storeName;
24151
        }
24152
        var LangID = MinovaUtil.GetLangID();
24153
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24154
        Ext.Ajax.request({
24155
            async: false,
24156
            method: 'POST',
24157
            url: '/UserControl/GetStore',
24158
            params: {
24159
                tableName: 'PDSWFSTRUCTUREFIELD',
24160
                param: parameter
24161
            },
24162
            success: function (response) {
24163
                var results = Ext.decode(response.responseText);
24164
                hasil = results.data;
24165
            }
24166
        });
24167
        //cols.push({
24168
        //    xtype: 'rownumberer'
24169
        //});
24170
        var addData = 'var data={';
24171
        if (hasil.length > 0) {
24172
            Ext.each(hasil, function (rec) {
24173
                fieldStore.push(rec.FieldName);
24174
                if (rec.FieldName != 'Sequence') {
24175
                    addData = addData + rec.FieldName + ":" + "'',";
24176
                }
24177
                var null_ = null;
24178
                var ReadOnly_ = false;
24179
                if (rec.IsRequired == '1') {
24180
                    null_ = false;
24181
                } else {
24182
                    null_ = true;
24183
                }
24184
                var Hidden_ = false;
24185
                if (rec.IsReadOnly == '1') {
24186
                    ReadOnly_ = true;
24187
                }
24188
                if (rec.IsVisible == '1') {
24189
                    switch (rec.FormatRef) {
24190
                        case "date":
24191
                            cols.push({
24192
                                xtype: 'minovadatecolumn',
24193
                                hidden: Hidden_,
24194
                                text: rec.HeaderTitle,
24195
                                dataIndex: rec.FieldName,
24196
                                filter: {
24197
                                    itemDefaults: {
24198
                                        emptyText: 'Search for...',
24199
                                    }
24200
                                }
24201
                            });
24202
                            break
24203
                        case "amount":
24204
                            cols.push({
24205
                                xtype: 'minovacurrancycolumn',
24206
                                align: 'right',
24207
                                text: rec.HeaderTitle,
24208
                                dataIndex: rec.FieldName,
24209
                                hidden: Hidden_,
24210
                                filter: {
24211
                                    itemDefaults: {
24212
                                        emptyText: 'Search for...'
24213
                                    }
24214
                                }
24215
                            });
24216
                            break
24217
                        default:
24218
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
24219
                                cols.push({
24220
                                    text: rec.HeaderTitle,
24221
                                    dataIndex: rec.FieldName,
24222
                                    width: 100,
24223
                                    filter: {
24224
                                        type: 'string',
24225
                                        itemDefaults: {
24226
                                            emptyText: 'Search for...'
24227
                                        }
24228
                                    }
24229
                                });
24230
                            } else if (rec.SearchType == '0') {
24231
                                var valueField = null;
24232
                                var displayValue = null;
24233
                                var TableRef = undefined;
24234
                                if (rec.TableRef != '') {
24235
                                    TableRef = rec.TableRef;
24236
                                    Ext.Ajax.request({
24237
                                        async: false,
24238
                                        method: 'POST',
24239
                                        url: '/UserControl/GetStore',
24240
                                        params: {
24241
                                            tableName: 'SDATATABLEFIELD',
24242
                                            param: 'TableName[equal]' + rec.TableRef
24243
                                        },
24244
                                        success: function (response) {
24245
                                            var results = Ext.decode(response.responseText);
24246
                                            data_ = results.data;
24247
                                            if (data_ != undefined) {
24248
                                                valueField_ = $.grep(data_, function (r) {
24249
                                                    return r.ValueField == '1'
24250
                                                });
24251
                                                valueField = valueField_[0].FieldName
24252
                                                displayValue_ = $.grep(data_, function (r) {
24253
                                                    return r.DisplayValue == '1'
24254
                                                });
24255
                                                displayValue = displayValue_[0].FieldName
24256
                                            }
24257
                                        }
24258
                                    });
24259
                                }
24260
                                Ext.create('Ext.data.Store', {
24261
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24262
                                    autoLoad: true,
24263
                                    proxy: {
24264
                                        method: 'POST',
24265
                                        type: 'ajax',
24266
                                        url: '/UserControl/GetStoreAuth',
24267
                                        extraParams: {
24268
                                            tableName: TableRef,
24269
                                            param: rec.ParamCombo,
24270
                                            menuId: MinovaUtil.GetMenuID()
24271
                                        },
24272
                                        reader: {
24273
                                            type: 'json',
24274
                                            root: 'data',
24275
                                            totalProperty: 'data[0].TotalCount'
24276
                                        }
24277
                                    }
24278
                                });
24279
                                cols.push({
24280
                                    //xtype : 'minovacombocolumn',
24281
                                    hidden: Hidden_,
24282
                                    text: rec.HeaderTitle,
24283
                                    dataIndex: rec.FieldName,
24284
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24285
                                    summaryType: function (records) {
24286
                                        var suma = 0;
24287
                                        if (me.summaryType == 'average') {
24288
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
24289
                                            Ext.each(records, function (record, index) {
24290
                                                if (record.get(rec.FieldName)) {
24291
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
24292
                                                }
24293
                                            });
24294
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
24295
                                        }
24296
                                        else if (me.summaryType == 'sum') {
24297
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
24298
                                            Ext.each(records, function (record, index) {
24299
                                                if (record.get(rec.FieldName)) {
24300
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
24301
                                                }
24302
                                            });
24303
                                        }
24304
                                        
24305
                                        return suma;
24306
                                    },
24307
                                    //valueField : valueField,
24308
                                    //displayField : displayValue,
24309
                                    //store : 'store_' + me.tableName + rec.FieldName,
24310
                                    //renderer: function (value) {
24311
                                    //    var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24312
                                    //    var index = store.find(valueField, value);
24313
                                    //    var val = "";
24314
                                    //    if (index != -1) {
24315
                                    //        var rc = store.getAt(index);
24316
                                    //        val = rc.get(displayValue);
24317
                                    //    } else {
24318
                                    //        val = value;
24319
                                    //    }
24320
                                    //    return val;
24321
                                    //},
24322
                                    //filter: {
24323
                                    //    type: 'list',
24324
                                    //    itemDefaults: {
24325
                                    //        emptyText: 'Search for...'
24326
                                    //    }
24327
                                    //}
24328
                                });
24329
                            } else if (rec.SearchType == '5') {
24330
                                var valueField = null;
24331
                                var displayValue = null;
24332
                                var AdditionaldisplayValue = null;
24333
                                var TableRef = undefined;
24334
                                if (rec.TableRef != '') {
24335
                                    TableRef = rec.TableRef;
24336
                                    Ext.Ajax.request({
24337
                                        async: false,
24338
                                        method: 'POST',
24339
                                        url: '/UserControl/GetStore',
24340
                                        params: {
24341
                                            tableName: 'SDATATABLEFIELD',
24342
                                            param: 'TableName[equal]' + rec.TableRef
24343
                                        },
24344
                                        success: function (response) {
24345
                                            var results = Ext.decode(response.responseText);
24346
                                            data_ = results.data;
24347
                                            if (data_ != undefined) {
24348
                                                valueField_ = $.grep(data_, function (r) {
24349
                                                    return r.ValueField == '1'
24350
                                                });
24351
                                                if (valueField_.length > 0) {
24352
                                                    valueField = valueField_[0].FieldName
24353
                                                }
24354

    
24355
                                                displayValue_ = $.grep(data_, function (r) {
24356
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
24357
                                                });
24358
                                                if (displayValue_.length > 0) {
24359
                                                    displayValue = displayValue_[0].FieldName;
24360
                                                }
24361
                                                if (displayValue_.length >= 2) {
24362
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
24363
                                                }
24364
                                            }
24365
                                        }
24366
                                    });
24367
                                }
24368
                                Ext.create('Ext.data.Store', {
24369
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24370
                                    autoLoad: true,
24371
                                    proxy: {
24372
                                        method: 'POST',
24373
                                        type: 'ajax',
24374
                                        url: '/UserControl/GetStoreAuth',
24375
                                        extraParams: {
24376
                                            tableName: TableRef,
24377
                                            param: rec.ParamCombo,
24378
                                            menuId: MinovaUtil.GetMenuID()
24379
                                        },
24380
                                        reader: {
24381
                                            type: 'json',
24382
                                            root: 'data',
24383
                                            totalProperty: 'data[0].TotalCount'
24384
                                        }
24385
                                    }
24386
                                });
24387
                                cols.push({
24388
                                    //xtype : 'minovacombocolumn',
24389
                                    hidden: Hidden_,
24390
                                    text: rec.HeaderTitle,
24391
                                    dataIndex: rec.FieldName,
24392
                                    //valueField : valueField,
24393
                                    //displayField : displayValue,
24394
                                    //store : 'store_' + me.tableName + rec.FieldName,
24395
                                    tpl: Ext.create('Ext.XTemplate',
24396
                                        '<ul class="x-list-plain"><tpl for=".">',
24397
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
24398
                                        '</tpl></ul>'),
24399
                                    displayTpl: Ext.create('Ext.XTemplate',
24400
                                        '<tpl for=".">',
24401
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
24402
                                        '</tpl>'),
24403
                                    renderer: function (value) {
24404
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24405
                                        var index = store.find(valueField, value);
24406
                                        var val = "";
24407
                                        if (index != -1) {
24408
                                            var rc = store.getAt(index);
24409
                                            //val = rc.get(displayValue);
24410
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
24411
                                        } else {
24412
                                            val = value;
24413
                                        }
24414
                                        return val;
24415
                                    },
24416
                                    filter: {
24417
                                        type: 'list',
24418
                                        itemDefaults: {
24419
                                            emptyText: 'Search for...'
24420
                                        }
24421
                                    }
24422
                                });
24423
                            } else if (rec.SearchType == '2') {
24424
                                var triger = (rec.TriggerCombo).split('$');
24425
                                var targetField_ = triger[0];
24426
                                var fieldValue_ = triger[1];
24427
                                cols.push({
24428
                                    text: rec.HeaderTitle,
24429
                                    hidden: Hidden_,
24430
                                    dataIndex: rec.FieldName,
24431
                                    filter: {
24432
                                        itemDefaults: {
24433
                                            emptyText: 'Search for...'
24434
                                        }
24435
                                    }
24436
                                });
24437
                            } else if (rec.SearchType == '3') {
24438
                                cols.push({
24439
                                    text: rec.HeaderTitle,
24440
                                    hidden: Hidden_,
24441
                                    dataIndex: rec.FieldName,
24442
                                    filter: {
24443
                                        itemDefaults: {
24444
                                            emptyText: 'Search for...'
24445
                                        }
24446
                                    }
24447
                                });
24448
                            } 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) {
24449
                                var triger = (rec.TriggerCombo).split('&');
24450
                                var targetField_ = triger[0];
24451
                                var fieldValue_ = triger[0];
24452
                                cols.push({
24453
                                    text: rec.HeaderTitle,
24454
                                    hidden: Hidden_,
24455
                                    dataIndex: rec.FieldName,
24456
                                    filter: {
24457
                                        itemDefaults: {
24458
                                            emptyText: 'Search for...'
24459
                                        }
24460
                                    }
24461
                                });
24462
                            } else if (rec.SearchType == '4' && isLookup != true) {
24463
                                cols.push({
24464
                                    text: rec.HeaderTitle,
24465
                                    hidden: Hidden_,
24466
                                    dataIndex: rec.FieldName,
24467
                                    filter: {
24468
                                        itemDefaults: {
24469
                                            emptyText: 'Search for...'
24470
                                        }
24471
                                    }
24472
                                });
24473
                            } else if (rec.FixedValue != '') { // add by taufan
24474
                                cols.push({
24475
                                    text: rec.HeaderTitle,
24476
                                    hidden: Hidden_,
24477
                                    dataIndex: rec.FieldName,
24478
                                    filter: {
24479
                                        itemDefaults: {
24480
                                            emptyText: 'Search for...'
24481
                                        }
24482
                                    },
24483
                                    renderer: function (value) {
24484
                                        var val = "";
24485
                                        var storeData = [];
24486
                                        var str = rec.FixedValue;
24487
                                        var hasil = str.split('||');
24488
                                        hasil.forEach(function (h) {
24489
                                            store_ = h.split('=')
24490
                                            storeData.push({
24491
                                                code: store_[0],
24492
                                                desc: store_[1]
24493
                                            });
24494
                                        });
24495
                                        var item = storeData.find(x => x.code == value);
24496
                                        if (item != undefined) {
24497
                                            val = item.desc;
24498
                                        }
24499
                                        return val;
24500
                                    }
24501
                                });
24502
                            } else {
24503
                                _xtype = 'textfield';
24504
                                if (rec.Length > 250) {
24505
                                    _xtype = 'textareafield';
24506
                                }
24507
                                var _custumFunc = null;
24508
                                Ext.Ajax.request({
24509
                                    async: false,
24510
                                    method: 'POST',
24511
                                    url: '/UserControl/GetStore',
24512
                                    params: {
24513
                                        tableName: 'SDATATABLEFIELD',
24514
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
24515
                                    },
24516
                                    success: function (response) {
24517
                                        var results = Ext.decode(response.responseText);
24518
                                        data_ = results.data[0];
24519
                                        if (data_ != undefined) {
24520
                                            _custumFunc = data_.SelectFunction;
24521
                                        }
24522
                                    }
24523
                                });
24524
                                cols.push({
24525
                                    text: rec.HeaderTitle,
24526
                                    xtype: 'gridcolumn',
24527
                                    hidden: Hidden_,
24528
                                    dataIndex: rec.FieldName,
24529
                                    filter: {
24530
                                        itemDefaults: {
24531
                                            emptyText: 'Search for...'
24532
                                        }
24533
                                    },
24534
                                    cellWrap: true,
24535
                                    //autoSizeColumn: true,
24536
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24537
                                    flex: (rec.Length == 'EISelfComent') ? 1 : 0,
24538
                                    renderer: function (v) {
24539
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
24540
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
24541
                                        return result
24542
                                    }
24543
                                });
24544
                            }
24545
                            break
24546
                    }
24547
                } else {
24548
                    cols.push({
24549
                        text: rec.HeaderTitle,
24550
                        hidden: Hidden_,
24551
                        dataIndex: rec.FieldName,
24552
                        hidden: true,
24553
                        filter: {
24554
                            itemDefaults: {
24555
                                emptyText: 'Search for...'
24556
                            }
24557
                        }
24558
                    });
24559
                }
24560
            });
24561

    
24562
        };
24563
        //Sesuaikan Header Layout
24564
        var col = me.headerLayout;
24565
        if (me.headerLayout != undefined) {
24566
            cols.forEach((f) => {
24567
                col = me.find(f, col);
24568
            })
24569
            cols = col;
24570
        }
24571
        addData = addData + "}";
24572
        Ext.applyIf(me, {            
24573
            items: [{
24574
                xtype: 'grid',
24575
                id: gridName,
24576
                name: gridName,
24577
                tableName: me.tableName,
24578
                tableNameT: me.tableNameT,
24579
                tableNameKey: me.tableNameKey,
24580
                tableNameTKey: me.tableNameTKey,
24581
                minHeight: me.minHeight,
24582
                maxHeight: me.maxHeight,
24583
                //height: me.height,                
24584
                //scrollable: true,
24585
                //flex: 1,
24586
                addFlag: true,
24587
                deleteFlag: true,
24588
                store: Ext.create('Ext.data.Store', {
24589
                    storeId: storeID,
24590
                    fields: fieldStore,
24591
                    //groupField: 'QuestionGroup',
24592
                    grouper: {
24593
                        sortProperty: 'SeqQuest',
24594
                        groupFn: function (record) {
24595
                            return record.get('QuestionGroup');
24596
                        }
24597
                    },
24598
                    proxy: {
24599
                        method: 'POST',
24600
                        type: 'ajax',
24601
                        url: '',
24602
                        reader: {
24603
                            type: 'json',
24604
                            root: 'data'
24605
                        }
24606
                    }
24607
                }),
24608
                dockedItems: [{
24609
                    xtype: 'toolbar',
24610
                    dock: 'bottom',
24611
                    items: [
24612
                        {
24613
                            xtype: 'label',
24614
                            html: me.labelText,
24615
                            margin: '0 0 10 0'
24616
                        },
24617
                        {
24618
                            text: 'Add',
24619
                            hidden: hide_,
24620
                            name: tableName + 'Add',
24621
                            iconCls: 'fa-plus-circle',
24622
                            style: 'font-family: FontAwesome',
24623
                            handler: function () {
24624
                                var grid = Ext.getCmp(gridName);
24625
                                if (grid.addFlag === true) {
24626
                                    var store = Ext.StoreMgr.lookup(storeID)
24627
                                    idx = store.getCount();
24628
                                    var action = getParam('action');
24629
                                    var data = '';
24630
                                    var Sequence = 0;
24631
                                    if (idx == 0) {
24632
                                        Sequence = 1;
24633
                                    } else {
24634
                                        Sequence = 1 + idx;
24635
                                    }
24636
                                    var seq = 'Sequence';
24637
                                    var SequenceValue = Sequence;
24638
                                    eval(addData);
24639
                                    data[seq] = SequenceValue;
24640
                                    store.insert(idx, data);
24641
                                }
24642
                            }
24643
                        },
24644
                        {
24645
                            text: 'Delete',
24646
                            hidden: hide_,
24647
                            name: tableName + 'DeleteText',
24648
                            iconCls: 'fa-trash-o',
24649
                            style: 'font-family: FontAwesome',
24650
                            handler: function () {
24651
                                var grid = Ext.getCmp(gridName);
24652
                                if (grid.deleteFlag === true) {
24653
                                    var me = this,
24654
                                        store = Ext.StoreMgr.lookup(storeID)
24655
                                    var grid = Ext.getCmp(gridName);
24656
                                    Ext.MessageBox.show({
24657
                                        title: 'Remove tab',
24658
                                        msg: "This will remove. Do you want to continue?",
24659
                                        buttons: Ext.MessageBox.YESNO,
24660
                                        fn: function (choice) {
24661
                                            console.log(choice);
24662
                                            if (choice === 'yes') {
24663
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
24664
                                                if (selection) {
24665
                                                    store.remove(selection);
24666
                                                }
24667
                                            }
24668
                                        }
24669
                                    });
24670
                                }
24671
                            }
24672
                        },
24673
                        {
24674
                            text: 'Edit',
24675
                            hidden: hide_,
24676
                            name: tableName + 'EditText',
24677
                            bizprocid: me.bizprocid,
24678
                            taskid: me.taskid,
24679
                            TableName: tableName,
24680
                            iconCls: 'fa-edit',
24681
                            style: 'font-family: FontAwesome',
24682
                            handler: function () {
24683
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
24684
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24685
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24686
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24687
                                //if (frmForm == undefined) {
24688
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24689
                                //        bizprocid: this.bizprocid,
24690
                                //        taskid: this.taskid,
24691
                                //        name: 'form' + this.TableName,
24692
                                //        tableName: this.TableName,
24693
                                //    });
24694
                                //}
24695
                                ////frmForm.reset();
24696
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
24697
                                //frmForm.show();
24698

    
24699
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24700
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24701
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24702
                                if (dtrec) {
24703
                                    //frmDisplay.reset();
24704
                                    frmForm.reset();
24705
                                    frmForm.getForm().setValues(dtrec.data);
24706
                                    //frmDisplay.setHidden(true);
24707
                                    frmForm.setHidden(false);
24708
                                    //grdPanel.setHidden(true);
24709
                                    me.action = "1";
24710
                                }
24711

    
24712
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24713
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24714
                                //if (dtrec) {
24715
                                //    var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24716
                                //    var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24717
                                //    var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24718
                                //    pnlT.setHidden(false);                                   
24719
                                //}
24720
                            }
24721
                        }
24722
                    ]
24723
                }
24724
                ],
24725
                columns: {
24726
                    defaults: {
24727
                        menuDisabled: true
24728
                    },
24729
                    items: cols
24730
                },
24731
                //selType: checkSelection,
24732
                //plugins: {
24733
                //    ptype: 'actionColumnRowEditing', //rowediting
24734
                //    pluginId: 'rowEditing',
24735
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24736
                //    clicksToEdit: 2,
24737
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24738
                //    listeners: {}
24739
                //},
24740
                listeners: {
24741
                    //'beforeedit': function (editor) {
24742
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24743
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24744
                    //}
24745
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24746
                        var me = this;
24747
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24748
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24749
                        var dtrec = record;
24750
                        if (dtrec) {
24751
                            //frmDisplay.reset();
24752
                            //frmForm.reset();
24753
                            frmForm.getForm().setValues(dtrec.data);
24754
                            //grdPanel.setHeight(0);
24755
                            //frmDisplay.setHidden(true);
24756
                            frmForm.setHidden(false);
24757
                            //grdPanel.setHidden(true);
24758

    
24759
                            //var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24760
                            //var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24761
                            //var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24762
                            //pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
24763
                            //pnlT.setHidden(false);
24764

    
24765
                            me.action = "1";
24766
                        }
24767
                    },
24768
                    'itemclickx': function (this_, record, item, index, e, eOpts) {
24769
                        var me = this;
24770
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24771
                        frmForm.setHidden(true);
24772
                        ////var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
24773
                        //var dtrec = record;
24774
                        //if (dtrec) {
24775
                        //    //frmDisplay.reset();
24776
                        //    //frmForm.reset();
24777
                        //    frmForm.getForm().setValues(dtrec.data);
24778
                        //    //grdPanel.setHeight(0);
24779
                        //    //frmDisplay.setHidden(true);
24780
                        //    frmForm.setHidden(false);
24781
                        //    //grdPanel.setHidden(true);
24782
                        //    action = "1";
24783
                        //}
24784
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24785
                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24786
                        if (dtrec) {
24787
                            var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24788
                            var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24789
                            var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24790
                            pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
24791
                            pnlT.setHidden(false);
24792
                        }
24793
                    }
24794
                },
24795
                features: features,
24796
                viewConfig: {
24797
                    listeners: {
24798
                        refresh: function (dataview) {
24799
                            Ext.each(dataview.panel.columns, function (column) {
24800
                                //column.autoSize();
24801
                            })
24802
                        }
24803
                    }
24804
                }
24805
            }
24806
            ]
24807
        });
24808
        me.callParent(arguments);  
24809
    },
24810
    listeners: {
24811
        boxready: function (dataview) {
24812
            var grd = Ext.ComponentQuery.query('[name=grid' + this.tableName + ']')[0];
24813
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
24814
        }
24815
    }
24816
});
24817

    
24818
/*NonEditableGridT ESS Generator YN 20211216 */
24819
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGridT', {
24820
    extend: 'Ext.form.Panel',
24821
    alias: ['widget.minovaworkflownoneditablegridT'],
24822
    requires: [
24823
        'Ext.grid.plugin.CellEditing',
24824
        'Ext.grid.RowNumberer',
24825
        'Ext.grid.Panel',
24826
    ],
24827
    anchor: '100%',
24828
    tableName: undefined,
24829
    tableNameP: undefined,
24830
    tableNameKey: undefined,
24831
    tableNameFKey: undefined,
24832
    tableNamePKey: undefined,
24833
    parentKey: undefined,
24834
    hideButton: undefined,
24835
    multiSelect: undefined,
24836
    formname: this.name,
24837
    bizprocid: undefined,
24838
    bizflowid: undefined,
24839
    taskid: undefined,
24840
    features: undefined,
24841
    height: 400,
24842
    minHeight: 20,
24843
    maxHeight: 400,
24844
    initComponent: function () {
24845
        var me = this;
24846
        var isLookup = me.isLookup;
24847
        var hide_ = false;
24848
        var widthLock = 250;
24849
        var checkSelection = '';
24850
        if (me.hideButton == true) {
24851
            hide_ = true;
24852
        }
24853
        if (me.multiSelect) {
24854
            locking = false;
24855
            checkSelection = 'checkboxmodel';
24856
            widthLock = 40;
24857
        }
24858
        var tableName = me.tableName;
24859
        var features = me.features;
24860
        var cols = [];
24861
        var fieldStore = [];
24862
        var _url = 'GetAllField';
24863
        var hasil = null;
24864
        var height = me.height;
24865
        var storeID = 'store' + me.tableName + '_' + me.parentKey;
24866
        var gridName = 'grid' + me.name;
24867
        if (me.storeName) {
24868
            storeID = me.storeName;
24869
        }
24870
        var LangID = MinovaUtil.GetLangID();
24871
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24872
        Ext.Ajax.request({
24873
            async: false,
24874
            method: 'POST',
24875
            url: '/UserControl/GetStore',
24876
            params: {
24877
                tableName: 'PDSWFSTRUCTUREFIELD',
24878
                param: parameter
24879
            },
24880
            success: function (response) {
24881
                var results = Ext.decode(response.responseText);
24882
                hasil = results.data;
24883
            }
24884
        });
24885
        //cols.push({
24886
        //    xtype: 'rownumberer'
24887
        //});
24888
        var addData = 'var data={';
24889
        if (hasil.length > 0) {
24890
            Ext.each(hasil, function (rec) {
24891
                fieldStore.push(rec.FieldName);
24892
                if (rec.FieldName != 'Sequence') {
24893
                    addData = addData + rec.FieldName + ":" + "'',";
24894
                }
24895
                var null_ = null;
24896
                var ReadOnly_ = false;
24897
                if (rec.IsRequired == '1') {
24898
                    null_ = false;
24899
                } else {
24900
                    null_ = true;
24901
                }
24902
                var Hidden_ = false;
24903
                if (rec.IsReadOnly == '1') {
24904
                    ReadOnly_ = true;
24905
                }
24906
                if (rec.IsVisible == '1') {
24907
                    switch (rec.FormatRef) {
24908
                        case "date":
24909
                            cols.push({
24910
                                xtype: 'minovadatecolumn',
24911
                                hidden: Hidden_,
24912
                                text: rec.HeaderTitle,
24913
                                dataIndex: rec.FieldName,
24914
                                filter: {
24915
                                    itemDefaults: {
24916
                                        emptyText: 'Search for...',
24917
                                    }
24918
                                }
24919
                            });
24920
                            break
24921
                        case "amount":
24922
                            cols.push({
24923
                                xtype: 'minovacurrancycolumn',
24924
                                align: 'right',
24925
                                text: rec.HeaderTitle,
24926
                                dataIndex: rec.FieldName,
24927
                                hidden: Hidden_,
24928
                                filter: {
24929
                                    itemDefaults: {
24930
                                        emptyText: 'Search for...'
24931
                                    }
24932
                                }
24933
                            });
24934
                            break
24935
                        default:
24936
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
24937
                                cols.push({
24938
                                    text: rec.HeaderTitle,
24939
                                    dataIndex: rec.FieldName,
24940
                                    width: 100,
24941
                                    filter: {
24942
                                        type: 'string',
24943
                                        itemDefaults: {
24944
                                            emptyText: 'Search for...'
24945
                                        }
24946
                                    }
24947
                                });
24948
                            } else if (rec.SearchType == '0') {
24949
                                var valueField = null;
24950
                                var displayValue = null;
24951
                                var TableRef = undefined;
24952
                                if (rec.TableRef != '') {
24953
                                    TableRef = rec.TableRef;
24954
                                    Ext.Ajax.request({
24955
                                        async: false,
24956
                                        method: 'POST',
24957
                                        url: '/UserControl/GetStore',
24958
                                        params: {
24959
                                            tableName: 'SDATATABLEFIELD',
24960
                                            param: 'TableName[equal]' + rec.TableRef
24961
                                        },
24962
                                        success: function (response) {
24963
                                            var results = Ext.decode(response.responseText);
24964
                                            data_ = results.data;
24965
                                            if (data_ != undefined) {
24966
                                                valueField_ = $.grep(data_, function (r) {
24967
                                                    return r.ValueField == '1'
24968
                                                });
24969
                                                valueField = valueField_[0].FieldName
24970
                                                displayValue_ = $.grep(data_, function (r) {
24971
                                                    return r.DisplayValue == '1'
24972
                                                });
24973
                                                displayValue = displayValue_[0].FieldName
24974
                                            }
24975
                                        }
24976
                                    });
24977
                                }
24978
                                Ext.create('Ext.data.Store', {
24979
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24980
                                    autoLoad: true,
24981
                                    proxy: {
24982
                                        method: 'POST',
24983
                                        type: 'ajax',
24984
                                        url: '/UserControl/GetStoreAuth',
24985
                                        extraParams: {
24986
                                            tableName: TableRef,
24987
                                            param: rec.ParamCombo,
24988
                                            menuId: MinovaUtil.GetMenuID()
24989
                                        },
24990
                                        reader: {
24991
                                            type: 'json',
24992
                                            root: 'data',
24993
                                            totalProperty: 'data[0].TotalCount'
24994
                                        }
24995
                                    }
24996
                                });
24997
                                cols.push({
24998
                                    //xtype : 'minovacombocolumn',
24999
                                    hidden: Hidden_,
25000
                                    text: rec.HeaderTitle,
25001
                                    dataIndex: rec.FieldName,
25002
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
25003
                                    //valueField : valueField,
25004
                                    //displayField : displayValue,
25005
                                    //store : 'store_' + me.tableName + rec.FieldName,
25006
                                    renderer: function (value) {
25007
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
25008
                                        var index = store.find(valueField, value);
25009
                                        var val = "";
25010
                                        if (index != -1) {
25011
                                            var rc = store.getAt(index);
25012
                                            val = rc.get(displayValue);
25013
                                        } else {
25014
                                            val = value;
25015
                                        }
25016
                                        return val;
25017
                                    },
25018
                                    filter: {
25019
                                        type: 'list',
25020
                                        itemDefaults: {
25021
                                            emptyText: 'Search for...'
25022
                                        }
25023
                                    }
25024
                                });
25025
                            } else if (rec.SearchType == '5') {
25026
                                var valueField = null;
25027
                                var displayValue = null;
25028
                                var AdditionaldisplayValue = null;
25029
                                var TableRef = undefined;
25030
                                if (rec.TableRef != '') {
25031
                                    TableRef = rec.TableRef;
25032
                                    Ext.Ajax.request({
25033
                                        async: false,
25034
                                        method: 'POST',
25035
                                        url: '/UserControl/GetStore',
25036
                                        params: {
25037
                                            tableName: 'SDATATABLEFIELD',
25038
                                            param: 'TableName[equal]' + rec.TableRef
25039
                                        },
25040
                                        success: function (response) {
25041
                                            var results = Ext.decode(response.responseText);
25042
                                            data_ = results.data;
25043
                                            if (data_ != undefined) {
25044
                                                valueField_ = $.grep(data_, function (r) {
25045
                                                    return r.ValueField == '1'
25046
                                                });
25047
                                                if (valueField_.length > 0) {
25048
                                                    valueField = valueField_[0].FieldName
25049
                                                }
25050

    
25051
                                                displayValue_ = $.grep(data_, function (r) {
25052
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
25053
                                                });
25054
                                                if (displayValue_.length > 0) {
25055
                                                    displayValue = displayValue_[0].FieldName;
25056
                                                }
25057
                                                if (displayValue_.length >= 2) {
25058
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
25059
                                                }
25060
                                            }
25061
                                        }
25062
                                    });
25063
                                }
25064
                                Ext.create('Ext.data.Store', {
25065
                                    storeId: 'store_' + me.tableName + rec.FieldName,
25066
                                    autoLoad: true,
25067
                                    proxy: {
25068
                                        method: 'POST',
25069
                                        type: 'ajax',
25070
                                        url: '/UserControl/GetStoreAuth',
25071
                                        extraParams: {
25072
                                            tableName: TableRef,
25073
                                            param: rec.ParamCombo,
25074
                                            menuId: MinovaUtil.GetMenuID()
25075
                                        },
25076
                                        reader: {
25077
                                            type: 'json',
25078
                                            root: 'data',
25079
                                            totalProperty: 'data[0].TotalCount'
25080
                                        }
25081
                                    }
25082
                                });
25083
                                cols.push({
25084
                                    //xtype : 'minovacombocolumn',
25085
                                    hidden: Hidden_,
25086
                                    text: rec.HeaderTitle,
25087
                                    dataIndex: rec.FieldName,
25088
                                    //valueField : valueField,
25089
                                    //displayField : displayValue,
25090
                                    //store : 'store_' + me.tableName + rec.FieldName,
25091
                                    tpl: Ext.create('Ext.XTemplate',
25092
                                        '<ul class="x-list-plain"><tpl for=".">',
25093
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
25094
                                        '</tpl></ul>'),
25095
                                    displayTpl: Ext.create('Ext.XTemplate',
25096
                                        '<tpl for=".">',
25097
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
25098
                                        '</tpl>'),
25099
                                    renderer: function (value) {
25100
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
25101
                                        var index = store.find(valueField, value);
25102
                                        var val = "";
25103
                                        if (index != -1) {
25104
                                            var rc = store.getAt(index);
25105
                                            //val = rc.get(displayValue);
25106
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
25107
                                        } else {
25108
                                            val = value;
25109
                                        }
25110
                                        return val;
25111
                                    },
25112
                                    filter: {
25113
                                        type: 'list',
25114
                                        itemDefaults: {
25115
                                            emptyText: 'Search for...'
25116
                                        }
25117
                                    }
25118
                                });
25119
                            } else if (rec.SearchType == '2') {
25120
                                var triger = (rec.TriggerCombo).split('$');
25121
                                var targetField_ = triger[0];
25122
                                var fieldValue_ = triger[1];
25123
                                cols.push({
25124
                                    text: rec.HeaderTitle,
25125
                                    hidden: Hidden_,
25126
                                    dataIndex: rec.FieldName,
25127
                                    filter: {
25128
                                        itemDefaults: {
25129
                                            emptyText: 'Search for...'
25130
                                        }
25131
                                    }
25132
                                });
25133
                            } else if (rec.SearchType == '3') {
25134
                                cols.push({
25135
                                    text: rec.HeaderTitle,
25136
                                    hidden: Hidden_,
25137
                                    dataIndex: rec.FieldName,
25138
                                    filter: {
25139
                                        itemDefaults: {
25140
                                            emptyText: 'Search for...'
25141
                                        }
25142
                                    }
25143
                                });
25144
                            } 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) {
25145
                                var triger = (rec.TriggerCombo).split('&');
25146
                                var targetField_ = triger[0];
25147
                                var fieldValue_ = triger[0];
25148
                                cols.push({
25149
                                    text: rec.HeaderTitle,
25150
                                    hidden: Hidden_,
25151
                                    dataIndex: rec.FieldName,
25152
                                    filter: {
25153
                                        itemDefaults: {
25154
                                            emptyText: 'Search for...'
25155
                                        }
25156
                                    }
25157
                                });
25158
                            } else if (rec.SearchType == '4' && isLookup != true) {
25159
                                cols.push({
25160
                                    text: rec.HeaderTitle,
25161
                                    hidden: Hidden_,
25162
                                    dataIndex: rec.FieldName,
25163
                                    filter: {
25164
                                        itemDefaults: {
25165
                                            emptyText: 'Search for...'
25166
                                        }
25167
                                    }
25168
                                });
25169
                            } else if (rec.FixedValue != '') { // add by taufan
25170
                                cols.push({
25171
                                    text: rec.HeaderTitle,
25172
                                    hidden: Hidden_,
25173
                                    dataIndex: rec.FieldName,
25174
                                    filter: {
25175
                                        itemDefaults: {
25176
                                            emptyText: 'Search for...'
25177
                                        }
25178
                                    },
25179
                                    renderer: function (value) {
25180
                                        var val = "";
25181
                                        var storeData = [];
25182
                                        var str = rec.FixedValue;
25183
                                        var hasil = str.split('||');
25184
                                        hasil.forEach(function (h) {
25185
                                            store_ = h.split('=')
25186
                                            storeData.push({
25187
                                                code: store_[0],
25188
                                                desc: store_[1]
25189
                                            });
25190
                                        });
25191
                                        var item = storeData.find(x => x.code == value);
25192
                                        if (item != undefined) {
25193
                                            val = item.desc;
25194
                                        }
25195
                                        return val;
25196
                                    }
25197
                                });
25198
                            } else {
25199
                                _xtype = 'textfield';
25200
                                if (rec.Length > 250) {
25201
                                    _xtype = 'textareafield';
25202
                                }
25203
                                var _custumFunc = null;
25204
                                Ext.Ajax.request({
25205
                                    async: false,
25206
                                    method: 'POST',
25207
                                    url: '/UserControl/GetStore',
25208
                                    params: {
25209
                                        tableName: 'SDATATABLEFIELD',
25210
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
25211
                                    },
25212
                                    success: function (response) {
25213
                                        var results = Ext.decode(response.responseText);
25214
                                        data_ = results.data[0];
25215
                                        if (data_ != undefined) {
25216
                                            _custumFunc = data_.SelectFunction;
25217
                                        }
25218
                                    }
25219
                                });
25220
                                cols.push({
25221
                                    text: rec.HeaderTitle,
25222
                                    xtype: 'gridcolumn',
25223
                                    hidden: Hidden_,
25224
                                    dataIndex: rec.FieldName,
25225
                                    filter: {
25226
                                        itemDefaults: {
25227
                                            emptyText: 'Search for...'
25228
                                        }
25229
                                    },
25230
                                    cellWrap: true,
25231
                                    width: (rec.Length * 8) > 400 ? 400 : rec.Length * 8,
25232
                                    renderer: function (v) {
25233
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
25234
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
25235
                                        return result
25236
                                    }
25237
                                });
25238
                            }
25239
                            break
25240
                    }
25241
                } else {
25242
                    cols.push({
25243
                        text: rec.HeaderTitle,
25244
                        hidden: Hidden_,
25245
                        dataIndex: rec.FieldName,
25246
                        hidden: true,
25247
                        filter: {
25248
                            itemDefaults: {
25249
                                emptyText: 'Search for...'
25250
                            }
25251
                        }
25252
                    });
25253
                }
25254
            });
25255

    
25256
        };
25257

    
25258
        addData = addData + "}";
25259
        Ext.applyIf(me, {
25260
            items: [{
25261
                xtype: 'grid',
25262
                id: gridName,
25263
                name: gridName,
25264
                tablename: me.tableName,
25265
                minHeight: me.minHeight,
25266
                maxHeight: me.maxHeight,
25267
                addFlag: true,
25268
                deleteFlag: true,
25269
                store: Ext.create('Ext.data.Store', {
25270
                    storeId: storeID,
25271
                    fields: fieldStore,
25272
                    //groupField: 'QuestionGroup',
25273
                    grouper: {
25274
                        sortProperty: 'SeqQuest',
25275
                        groupFn: function (record) {
25276
                            return record.get('QuestionGroup');
25277
                        }
25278
                    },
25279
                    proxy: {
25280
                        method: 'POST',
25281
                        type: 'ajax',
25282
                        url: '',
25283
                        reader: {
25284
                            type: 'json',
25285
                            root: 'data'
25286
                        }
25287
                    }
25288
                }),
25289
                dockedItems: [{
25290
                    xtype: 'toolbar',
25291
                    items: [
25292
                        {
25293
                            text: 'Add',
25294
                            hidden: hide_,
25295
                            name: tableName + 'Add',
25296
                            iconCls: 'fa-plus-circle',
25297
                            style: 'font-family: FontAwesome',
25298
                            handler: function () {
25299
                                var grid = Ext.getCmp(gridName);
25300
                                if (grid.addFlag === true) {
25301
                                    var store = Ext.StoreMgr.lookup(storeID)
25302
                                    idx = store.getCount();
25303
                                    var action = getParam('action');
25304
                                    var data = '';
25305
                                    var Sequence = 0;
25306
                                    if (idx == 0) {
25307
                                        Sequence = 1;
25308
                                    } else {
25309
                                        Sequence = 1 + idx;
25310
                                    }
25311
                                    var seq = 'Sequence';
25312
                                    var SequenceValue = Sequence;
25313
                                    eval(addData);
25314
                                    var grdParent = Ext.ComponentQuery.query('[name=grid' + me.tableNameP + ']')[0];
25315
                                    var dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
25316
                                    if (dtParent == undefined) {
25317
                                        grdParent.getView().getSelectionModel().select(0);
25318
                                        dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
25319
                                    }
25320
                                    data[seq] = SequenceValue;
25321
                                    data[me.tableNameFKey] = dtParent.data[me.tableNamePKey];
25322
                                    data[me.tableNameKey] = SequenceValue.toString();
25323
                                    store.insert(idx, data);
25324
                                    grid.getView().getSelectionModel().select(idx);
25325
                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25326
                                    frmForm.reset();
25327
                                    frmForm.getForm().setValues(data);
25328
                                    //frmDisplay.setHidden(true);
25329
                                    frmForm.setHidden(false);
25330
                                }
25331
                            }
25332
                        },
25333
                        {
25334
                            text: 'Delete',
25335
                            hidden: hide_,
25336
                            name: tableName + 'DeleteText',
25337
                            iconCls: 'fa-trash-o',
25338
                            style: 'font-family: FontAwesome',
25339
                            handler: function () {
25340
                                var grid = Ext.getCmp(gridName);
25341
                                if (grid.deleteFlag === true) {
25342
                                    //var me = this,
25343
                                    store = Ext.StoreMgr.lookup(storeID)
25344
                                    var grid = Ext.getCmp(gridName);
25345
                                    Ext.MessageBox.show({
25346
                                        title: 'Remove tab',
25347
                                        msg: "This will remove. Do you want to continue?",
25348
                                        buttons: Ext.MessageBox.YESNO,
25349
                                        fn: function (choice) {
25350
                                            console.log(choice);
25351
                                            if (choice === 'yes') {
25352
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
25353
                                                if (selection) {
25354
                                                    store.remove(selection);
25355
                                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25356
                                                    frmForm.reset();
25357
                                                    //frmDisplay.setHidden(true);
25358
                                                    frmForm.setHidden(true);
25359
                                                }
25360
                                            }
25361
                                        }
25362
                                    });
25363
                                }
25364
                            }
25365
                        },
25366
                        {
25367
                            text: 'Edit',
25368
                            hidden: hide_,
25369
                            name: tableName + 'EditText',
25370
                            bizprocid: me.bizprocid,
25371
                            taskid: me.taskid,
25372
                            TableName: tableName,
25373
                            iconCls: 'fa-edit',
25374
                            style: 'font-family: FontAwesome',
25375
                            handler: function () {
25376
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
25377
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
25378
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
25379
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25380
                                //if (frmForm == undefined) {
25381
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
25382
                                //        bizprocid: this.bizprocid,
25383
                                //        taskid: this.taskid,
25384
                                //        name: 'form' + this.TableName,
25385
                                //        tableName: this.TableName,
25386
                                //    });
25387
                                //}
25388
                                ////frmForm.reset();
25389
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
25390
                                //frmForm.show();
25391

    
25392
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
25393
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
25394
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25395
                                if (dtrec) {
25396
                                    //frmDisplay.reset();
25397
                                    frmForm.reset();
25398
                                    frmForm.getForm().setValues(dtrec.data);
25399
                                    //frmDisplay.setHidden(true);
25400
                                    frmForm.setHidden(false);
25401
                                    //grdPanel.setHidden(true);
25402
                                    me.action = "1";
25403
                                }
25404
                            }
25405
                        }
25406
                    ]
25407
                }
25408
                ],
25409
                columns: cols,
25410
                //selType: checkSelection,
25411
                //plugins: {
25412
                //    ptype: 'actionColumnRowEditing', //rowediting
25413
                //    pluginId: 'rowEditing',
25414
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
25415
                //    clicksToEdit: 2,
25416
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
25417
                //    listeners: {}
25418
                //},
25419
                listeners: {
25420
                    //'beforeedit': function (editor) {
25421
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
25422
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
25423
                    //}
25424
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
25425
                        //var me = this;
25426
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25427
                        //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
25428
                        var dtrec = record;
25429
                        if (dtrec) {
25430
                            //frmDisplay.reset();
25431
                            //frmForm.reset();
25432
                            frmForm.getForm().setValues(dtrec.data);
25433
                            //grdPanel.setHeight(0);
25434
                            //frmDisplay.setHidden(true);
25435
                            frmForm.setHidden(false);
25436
                            //grdPanel.setHidden(true);
25437
                            me.action = "1";
25438
                        }
25439
                    }
25440
                },
25441
                features: features,
25442
                viewConfig: {
25443
                    listeners: {
25444
                        refresh: function (dataview) {
25445
                            Ext.each(dataview.panel.columns, function (column) {
25446
                                //column.autoSize();
25447
                            })
25448
                        }
25449
                    }
25450
                }
25451
            }
25452
            ]
25453
        });
25454
        me.callParent(arguments);
25455
    },
25456
    listeners: {
25457
        boxready: function (dataview) {
25458
            var grd = Ext.ComponentQuery.query('[name=grid' + this.name + ']')[0];
25459
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
25460
        }
25461
    }
25462
});
25463

    
25464
/*Form ESS Generator YN 20211216*/
25465
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
25466
    extend: 'Ext.form.Panel',
25467
    alias: ['widget.MinovaWorkflowFormGrid', 'widget.minovaworkflowformgrid', 'widget.workflowformgrid'],
25468
    controller: 'workflowformgrid',
25469
    formname: this.name,
25470
    bizprocid: undefined,
25471
    bizflowid: undefined,
25472
    taskid: undefined,
25473
    tableName: undefined,
25474
    tableNameT: undefined,
25475
    titleform: undefined,
25476
    labelWidth: 150,
25477
    //resizable: true,
25478
    border: true,
25479
    autoScroll: true,
25480
    minHeight: 20,
25481
    layout: {
25482
        type: 'hbox'
25483
    },
25484
    listeners: {
25485
        render: function () {
25486
            if (this.titleform != undefined) {
25487
                this.setTitle(this.titleform);
25488
            }
25489
        },
25490
    },
25491
    buttonAlign: 'left',
25492
    defaults: {
25493
        layout: 'anchor',
25494
        xtype: 'container',
25495
        flex: 1,
25496
        margin: '10px',
25497
        //defaultType: 'textfield',
25498
        //anchor: '100%',
25499
        ////style: 'width: 50%',
25500
    },
25501
    initComponent: function () {
25502
        var col1 = [];
25503
        var col2 = [];
25504
        var me = this;
25505
        var LangID = localStorage.LangId;
25506
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
25507
        var formname_ = me.name;
25508
        var nameTable_ = me.tableName;
25509
        //var labelWidth = 150;
25510
        Ext.Ajax.request({
25511
            async: false,
25512
            method: 'POST',
25513
            url: '/UserControl/GetStore',
25514
            params: {
25515
                tableName: 'PDSWFSTRUCTUREFIELD',
25516
                param: parameter
25517
            },
25518
            success: function (response) {
25519
                var results = Ext.decode(response.responseText);
25520
                hasil = results.data;
25521
            }
25522
        });
25523
        if (hasil.length > 0) {
25524
            Ext.each(hasil, function (rec) {
25525
                var formfield = undefined;
25526
                var readonly = false;
25527
                var ishidden = false;
25528
                var allowblank = true;
25529
                var startDt = null;
25530
                var endDt = null;
25531
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25532
                    startDt = 'StartDate';
25533
                    endDt = 'EndDate';
25534
                }
25535
                if (rec.IsReadOnly == '1') {
25536
                    readonly = true;
25537
                }
25538
                if (rec.IsRequired == '1') {
25539
                    allowblank = false;
25540
                }
25541
                if (rec.IsVisible == '0') {
25542
                    ishidden = true;
25543
                }
25544
                if (rec.SearchType == "") //textfield
25545
                {
25546
                    switch (rec.FormatRef) {
25547
                        case "date":
25548
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25549
                                formfield = new Ext.form.DateField({
25550
                                    allowBlank: allowblank,
25551
                                    fieldLabel: rec.ScreenCaption,
25552
                                    readOnly: readonly,
25553
                                    msgTarget: 'side',
25554
                                    //labelCls: 'label-minova',
25555
                                    labelWidth: me.labelWidth,
25556
                                    hidden: ishidden,
25557
                                    name: rec.FieldName,
25558
                                    submitFormat: 'Ymd',
25559
                                    value: rec.DefaultValue,
25560
                                    anchor: '100%',
25561
                                    vtype: 'daterange',
25562
                                    start: startDt,
25563
                                    end: endDt,
25564
                                    formname: formname_,
25565
                                    nameTable: nameTable_,
25566
                                    hideMode: 'visibility',
25567
                                    listeners: {
25568
                                        change: function (val) {
25569
                                            var _label = val.name;
25570
                                            var _form = val.formname;
25571
                                            var _Value = val.getValue();
25572
                                            var target = rec.TriggerCombo;
25573
                                            var custumFunc = rec.SelectFunction;
25574
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25575
                                                Ext.Ajax.request({
25576
                                                    async: false,
25577
                                                    method: 'POST',
25578
                                                    url: '/UserControl/GetStore',
25579
                                                    params: {
25580
                                                        tableName: 'PCMFUNC',
25581
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25582
                                                    },
25583
                                                    success: function (response) {
25584
                                                        var results = Ext.decode(response.responseText);
25585
                                                        data_ = results.data[0];
25586
                                                        if (data_ != undefined) {
25587
                                                            custumFunc = data_.FunctionCode;
25588
                                                        }
25589
                                                    }
25590
                                                });
25591
                                            }
25592
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25593
                                            if (frm) {
25594
                                                if (custumFunc) {
25595
                                                    eval(custumFunc)
25596
                                                }
25597
                                            }
25598
                                        }
25599
                                    }
25600
                                });
25601
                            } else {
25602
                                formfield = new Ext.form.DateField({
25603
                                    allowBlank: allowblank,
25604
                                    fieldLabel: rec.ScreenCaption,
25605
                                    readOnly: readonly,
25606
                                    msgTarget: 'side',
25607
                                    //labelCls: 'label-minova',
25608
                                    labelWidth: me.labelWidth,
25609
                                    hidden: ishidden,
25610
                                    name: rec.FieldName,
25611
                                    submitFormat: 'Ymd',
25612
                                    value: rec.DefaultValue,
25613
                                    anchor: '100%',
25614
                                    formname: formname_,
25615
                                    nameTable: nameTable_,
25616
                                    hideMode: 'visibility',
25617
                                    listeners: {
25618
                                        change: function (val) {
25619
                                            var _label = val.name;
25620
                                            var _form = val.formname;
25621
                                            var _Value = val.getValue();
25622
                                            var target = rec.TriggerCombo;
25623
                                            var custumFunc = rec.SelectFunction;
25624
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25625
                                                Ext.Ajax.request({
25626
                                                    async: false,
25627
                                                    method: 'POST',
25628
                                                    url: '/UserControl/GetStore',
25629
                                                    params: {
25630
                                                        tableName: 'PCMFUNC',
25631
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25632
                                                    },
25633
                                                    success: function (response) {
25634
                                                        var results = Ext.decode(response.responseText);
25635
                                                        data_ = results.data[0];
25636
                                                        if (data_ != undefined) {
25637
                                                            custumFunc = data_.FunctionCode;
25638
                                                        }
25639
                                                    }
25640
                                                });
25641
                                            }
25642
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25643
                                            if (frm) {
25644
                                                if (custumFunc) {
25645
                                                    eval(custumFunc)
25646
                                                }
25647
                                            }
25648
                                        }
25649
                                    }
25650
                                });
25651
                            }
25652
                            break;
25653
                        case "time":
25654
                            formfield = new Ext.form.TimeField({
25655
                                allowBlank: allowblank,
25656
                                fieldLabel: rec.ScreenCaption,
25657
                                readOnly: readonly,
25658
                                //labelCls: 'label-minova',
25659
                                labelWidth: me.labelWidth,
25660
                                hidden: ishidden,
25661
                                name: rec.FieldName,
25662
                                msgTarget: 'side',
25663
                                format: 'Hi',
25664
                                submitFormat: 'Hi',
25665
                                increment: 5,
25666
                                value: rec.DefaultValue,
25667
                                anchor: '100%',
25668
                                formname: formname_,
25669
                                nameTable: nameTable_,
25670
                                listeners: {
25671
                                    change: function (val) {
25672
                                        var _label = val.name;
25673
                                        var _form = val.formname;
25674
                                        var _Value = val.getValue();
25675
                                        var target = rec.TriggerCombo;
25676
                                        var custumFunc = rec.SelectFunction;
25677
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25678
                                            Ext.Ajax.request({
25679
                                                async: false,
25680
                                                method: 'POST',
25681
                                                url: '/UserControl/GetStore',
25682
                                                params: {
25683
                                                    tableName: 'PCMFUNC',
25684
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
25685
                                                },
25686
                                                success: function (response) {
25687
                                                    var results = Ext.decode(response.responseText);
25688
                                                    data_ = results.data[0];
25689
                                                    if (data_ != undefined) {
25690
                                                        custumFunc = data_.FunctionCode;
25691
                                                    }
25692
                                                }
25693
                                            });
25694
                                        }
25695
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25696
                                        if (frm) {
25697
                                            if (custumFunc) {
25698
                                                eval(custumFunc)
25699
                                            }
25700
                                        }
25701
                                    }
25702
                                }
25703
                            });
25704
                            break;
25705
                        case "amount":
25706
                            formfield = new Ext.form.TextField({
25707
                                allowBlank: allowblank,
25708
                                fieldLabel: rec.ScreenCaption,
25709
                                readOnly: readonly,
25710
                                //labelCls: 'label-minova',
25711
                                labelWidth: me.labelWidth,
25712
                                hidden: ishidden,
25713
                                name: rec.FieldName,
25714
                                msgTarget: 'side',
25715
                                value: rec.DefaultValue,
25716
                                maxLength: rec.Length,
25717
                                anchor: '100%',
25718
                                formname: formname_,
25719
                                nameTable: nameTable_,
25720
                                fieldStyle: 'text-align:right;',
25721
                                listeners: {
25722
                                    change: function (val) {
25723
                                        var _label = val.name;
25724
                                        var _form = val.formname;
25725
                                        var _Value = val.getValue();
25726
                                        var target = rec.TriggerCombo;
25727
                                        var custumFunc = rec.SelectFunction;
25728
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25729
                                            Ext.Ajax.request({
25730
                                                async: false,
25731
                                                method: 'POST',
25732
                                                url: '/UserControl/GetStore',
25733
                                                params: {
25734
                                                    tableName: 'PCMFUNC',
25735
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25736
                                                },
25737
                                                success: function (response) {
25738
                                                    var results = Ext.decode(response.responseText);
25739
                                                    data_ = results.data[0];
25740
                                                    if (data_ != undefined) {
25741
                                                        custumFunc = data_.FunctionCode;
25742
                                                    }
25743
                                                }
25744
                                            });
25745
                                        }
25746
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25747
                                        if (frm) {
25748
                                            if (custumFunc) {
25749
                                                eval(custumFunc)
25750
                                            }
25751
                                        }
25752
                                    }
25753
                                }
25754
                            });
25755
                            break;
25756
                        case "file":
25757
                            formfield = new MinovaUtil.MinovaES.UploadFile({
25758
                                allowBlank: allowblank,
25759
                                fieldLabel: rec.ScreenCaption,
25760
                                readOnly: readonly,
25761
                                readOnlyCls: 'minova-readonly',
25762
                                hidden: ishidden,
25763
                                //labelCls: 'label-minova',
25764
                                name: rec.FieldName,
25765
                                msgTarget: 'side',
25766
                                fieldname: rec.FieldName,
25767
                                IsPrimaryKey: rec.IsPrimaryKey,
25768
                                tableName: rec.TableRef,
25769
                                triggerCls: 'x-form-search-trigger',
25770
                                formtarget: me.formname,
25771
                                anchor: '100%',
25772
                                formname: formname_,
25773
                                nameTable: nameTable_,
25774
                                listeners: {
25775
                                    change: function (val) {
25776
                                        var _label = val.name;
25777
                                        var _form = val.formname;
25778
                                        var _Value = val.getValue();
25779
                                        var target = rec.TriggerCombo;
25780
                                        var custumFunc = rec.SelectFunction;
25781
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25782
                                            Ext.Ajax.request({
25783
                                                async: false,
25784
                                                method: 'POST',
25785
                                                url: '/UserControl/GetStore',
25786
                                                params: {
25787
                                                    tableName: 'PCMFUNC',
25788
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25789
                                                },
25790
                                                success: function (response) {
25791
                                                    var results = Ext.decode(response.responseText);
25792
                                                    data_ = results.data[0];
25793
                                                    if (data_ != undefined) {
25794
                                                        custumFunc = data_.FunctionCode;
25795
                                                    }
25796
                                                }
25797
                                            });
25798
                                        }
25799
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25800
                                        if (frm) {
25801
                                            if (target) {
25802
                                                var f = frm.getForm().findField(target)
25803
                                                _store = f.getStore();
25804
                                                var _tbl = _store.proxy.extraParams.tableName;
25805
                                                var oldParam = _store.proxy.extraParams.param;
25806
                                                _store.proxy.extraParams = {
25807
                                                    tableName: _tbl,
25808
                                                    param: _label + '[=]' + _Value
25809
                                                };
25810
                                                _store.load();
25811
                                            }
25812
                                            if (custumFunc) {
25813
                                                eval(custumFunc)
25814
                                            }
25815
                                        }
25816
                                    }
25817
                                }
25818
                            });
25819
                            break;
25820
                        default:
25821
                            if (rec.DataType == 0) {
25822
                                if (rec.Length > 250) {
25823
                                    formfield = new Ext.form.TextArea({
25824
                                        allowBlank: allowblank,
25825
                                        fieldLabel: rec.ScreenCaption,
25826
                                        readOnly: readonly,
25827
                                        ////labelCls: 'label-minova',
25828
                                        labelWidth: me.labelWidth,
25829
                                        hidden: ishidden,
25830
                                        name: rec.FieldName,
25831
                                        msgTarget: 'side',
25832
                                        value: rec.DefaultValue,
25833
                                        maxLength: rec.Length,
25834
                                        anchor: '100%',
25835
                                        grow: true,
25836
                                        formname: formname_,
25837
                                        nameTable: nameTable_,
25838
                                        listeners: {
25839
                                            change: function (val) {
25840
                                                var _label = val.name;
25841
                                                var _form = val.formname;
25842
                                                var _Value = val.getValue();
25843
                                                var target = rec.TriggerCombo;
25844
                                                var custumFunc = rec.SelectFunction;
25845
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25846
                                                    Ext.Ajax.request({
25847
                                                        async: false,
25848
                                                        method: 'POST',
25849
                                                        url: '/UserControl/GetStore',
25850
                                                        params: {
25851
                                                            tableName: 'PCMFUNC',
25852
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25853
                                                        },
25854
                                                        success: function (response) {
25855
                                                            var results = Ext.decode(response.responseText);
25856
                                                            data_ = results.data[0];
25857
                                                            if (data_ != undefined) {
25858
                                                                custumFunc = data_.FunctionCode;
25859
                                                            }
25860
                                                        }
25861
                                                    });
25862
                                                }
25863
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25864
                                                if (frm) {
25865
                                                    if (custumFunc) {
25866
                                                        eval(custumFunc)
25867
                                                    }
25868
                                                }
25869
                                            }
25870
                                        }
25871
                                    });
25872
                                } else {
25873
                                    if (rec.FixedValue != '') {
25874
                                        var storeData = [];
25875
                                        var str = rec.FixedValue;
25876
                                        var hasil = str.split('||');
25877
                                        hasil.forEach(function (h) {
25878
                                            store_ = h.split('=')
25879
                                            storeData.push({
25880
                                                code: store_[0],
25881
                                                desc: store_[1],
25882
                                            });
25883
                                        });
25884
                                        formfield = new Ext.form.ComboBox({
25885
                                            allowBlank: allowblank,
25886
                                            fieldLabel: rec.ScreenCaption,
25887
                                            forceSelection: true,
25888
                                            readOnly: readonly,
25889
                                            //labelCls: 'label-minova',
25890
                                            labelWidth: me.labelWidth,
25891
                                            hidden: ishidden,
25892
                                            name: rec.FieldName,
25893
                                            msgTarget: 'side',
25894
                                            value: rec.DefaultValue,
25895
                                            anchor: '100%',
25896
                                            formname: formname_,
25897
                                            nameTable: nameTable_,
25898
                                            formtarget: me.formname,
25899
                                            store: Ext.create('Ext.data.Store', {
25900
                                                storeId: 'store' + rec.FieldName,
25901
                                                autoLoad: true,
25902
                                                data: storeData
25903

    
25904
                                            }),
25905
                                            listeners: {
25906
                                                change: function (val) {
25907
                                                    var _label = val.name;
25908
                                                    var _form = val.formtarget;
25909
                                                    var _Value = val.getValue();
25910
                                                    var target = rec.TriggerCombo;
25911
                                                    var custumFunc = rec.SelectFunction;
25912
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25913
                                                    if (frm) {
25914
                                                        if (target) {
25915
                                                            var f = frm.getForm().findField(target)
25916
                                                            _store = f.getStore();
25917
                                                            var _tbl = _store.proxy.extraParams.tableName;
25918
                                                            var oldParam = _store.proxy.extraParams.param;
25919
                                                            _store.proxy.extraParams = {
25920
                                                                tableName: _tbl,
25921
                                                                param: _label + '[=]' + _Value
25922
                                                            };
25923
                                                            _store.load();
25924
                                                        }
25925
                                                        if (custumFunc) {
25926
                                                            eval(custumFunc)
25927
                                                        }
25928
                                                    }
25929
                                                }
25930
                                            },
25931
                                            queryMode: 'local',
25932
                                            valueField: 'code',
25933
                                            displayField: 'desc',
25934
                                        });
25935
                                    } else {
25936
                                        formfield = new Ext.form.TextField({
25937
                                            allowBlank: allowblank,
25938
                                            fieldLabel: rec.ScreenCaption,
25939
                                            readOnly: readonly,
25940
                                            //labelCls: 'label-minova',
25941
                                            labelWidth: me.labelWidth,
25942
                                            hidden: ishidden,
25943
                                            name: rec.FieldName,
25944
                                            msgTarget: 'side',
25945
                                            value: rec.DefaultValue,
25946
                                            maxLength: rec.Length,
25947
                                            anchor: '100%',
25948
                                            formname: formname_,
25949
                                            nameTable: nameTable_,
25950
                                            listeners: {
25951
                                                change: function (val) {
25952
                                                    var _label = val.name;
25953
                                                    var _form = val.formname;
25954
                                                    var _Value = val.getValue();
25955
                                                    var target = rec.TriggerCombo;
25956
                                                    var custumFunc = rec.SelectFunction;
25957
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25958
                                                        Ext.Ajax.request({
25959
                                                            async: false,
25960
                                                            method: 'POST',
25961
                                                            url: '/UserControl/GetStore',
25962
                                                            params: {
25963
                                                                tableName: 'PCMFUNC',
25964
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25965
                                                            },
25966
                                                            success: function (response) {
25967
                                                                var results = Ext.decode(response.responseText);
25968
                                                                data_ = results.data[0];
25969
                                                                if (data_ != undefined) {
25970
                                                                    custumFunc = data_.FunctionCode;
25971
                                                                }
25972
                                                            }
25973
                                                        });
25974
                                                    }
25975
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25976
                                                    if (frm) {
25977
                                                        if (custumFunc) {
25978
                                                            eval(custumFunc)
25979
                                                        }
25980
                                                    }
25981
                                                }
25982
                                            }
25983
                                        });
25984
                                    }
25985
                                }
25986
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
25987
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
25988
                                    allowBlank: allowblank,
25989
                                    fieldLabel: rec.ScreenCaption,
25990
                                    readOnly: readonly,
25991
                                    //labelCls: 'label-minova',
25992
                                    labelWidth: me.labelWidth,
25993
                                    msgTarget: 'side',
25994
                                    hidden: ishidden,
25995
                                    name: rec.FieldName,
25996
                                    value: rec.DefaultValue,
25997
                                    maxLength: rec.Length,
25998
                                    anchor: '100%',
25999
                                    formname: formname_,
26000
                                    nameTable: nameTable_,
26001
                                    fieldStyle: 'text-align:right;',
26002
                                    listeners: {
26003
                                        change: function (val) {
26004
                                            var _label = val.name;
26005
                                            var _form = val.formname;
26006
                                            var _Value = val.getValue();
26007
                                            var target = rec.TriggerCombo;
26008
                                            var custumFunc = rec.SelectFunction;
26009
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26010
                                                Ext.Ajax.request({
26011
                                                    async: false,
26012
                                                    method: 'POST',
26013
                                                    url: '/UserControl/GetStore',
26014
                                                    params: {
26015
                                                        tableName: 'PCMFUNC',
26016
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26017
                                                    },
26018
                                                    success: function (response) {
26019
                                                        var results = Ext.decode(response.responseText);
26020
                                                        data_ = results.data[0];
26021
                                                        if (data_ != undefined) {
26022
                                                            custumFunc = data_.FunctionCode;
26023
                                                        }
26024
                                                    }
26025
                                                });
26026
                                            }
26027
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26028
                                            if (frm) {
26029
                                                if (target) {
26030
                                                    var f = frm.getForm().findField(target)
26031
                                                    _store = f.getStore();
26032
                                                    var _tbl = _store.proxy.extraParams.tableName;
26033
                                                    var oldParam = _store.proxy.extraParams.param;
26034
                                                    _store.proxy.extraParams = {
26035
                                                        tableName: _tbl,
26036
                                                        param: _label + '[=]' + _Value
26037
                                                    };
26038
                                                    _store.load();
26039
                                                }
26040
                                                if (custumFunc) {
26041
                                                    eval(custumFunc)
26042
                                                }
26043
                                            }
26044
                                        }
26045
                                    }
26046
                                });
26047
                            } else if (rec.DataType == 3) {
26048
                                formfield = new Ext.form.TextField({
26049
                                    allowBlank: allowblank,
26050
                                    fieldLabel: rec.ScreenCaption,
26051
                                    readOnly: readonly,
26052
                                    //labelCls: 'label-minova',
26053
                                    labelWidth: me.labelWidth,
26054
                                    msgTarget: 'side',
26055
                                    hidden: ishidden,
26056
                                    name: rec.FieldName,
26057
                                    value: rec.DefaultValue,
26058
                                    maxLength: rec.Length,
26059
                                    precision: rec.Prec,
26060
                                    anchor: '100%',
26061
                                    formname: formname_,
26062
                                    nameTable: nameTable_,
26063
                                    fieldStyle: 'text-align:right;',
26064
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
26065
                                    listeners: {
26066
                                        change: function (val) {
26067
                                            var _label = val.name;
26068
                                            var _form = val.formname;
26069
                                            var _Value = val.getValue();
26070
                                            var target = rec.TriggerCombo;
26071
                                            var custumFunc = rec.SelectFunction;
26072
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26073
                                                Ext.Ajax.request({
26074
                                                    async: false,
26075
                                                    method: 'POST',
26076
                                                    url: '/UserControl/GetStore',
26077
                                                    params: {
26078
                                                        tableName: 'PCMFUNC',
26079
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26080
                                                    },
26081
                                                    success: function (response) {
26082
                                                        var results = Ext.decode(response.responseText);
26083
                                                        data_ = results.data[0];
26084
                                                        if (data_ != undefined) {
26085
                                                            custumFunc = data_.FunctionCode;
26086
                                                        }
26087
                                                    }
26088
                                                });
26089
                                            }
26090
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26091
                                            if (frm) {
26092
                                                if (target) {
26093
                                                    var f = frm.getForm().findField(target)
26094
                                                    _store = f.getStore();
26095
                                                    var _tbl = _store.proxy.extraParams.tableName;
26096
                                                    var oldParam = _store.proxy.extraParams.param;
26097
                                                    _store.proxy.extraParams = {
26098
                                                        tableName: _tbl,
26099
                                                        param: _label + '[=]' + _Value
26100
                                                    };
26101
                                                    _store.load();
26102
                                                }
26103
                                                if (custumFunc) {
26104
                                                    eval(custumFunc)
26105
                                                }
26106
                                            }
26107
                                        }
26108
                                    }
26109
                                });
26110
                            }
26111
                    }
26112
                } else if (rec.SearchType != "") {
26113
                    if (rec.SearchType == "0") //combobox
26114
                    {
26115
                        valueField = null;
26116
                        displayValue = null;
26117
                        if (rec.TableRef != "") {
26118
                            Ext.Ajax.request({
26119
                                async: false,
26120
                                method: 'POST',
26121
                                url: '/UserControl/GetStore',
26122
                                params: {
26123
                                    tableName: 'SDATATABLEFIELD',
26124
                                    param: 'TableName[equal]' + rec.TableRef
26125
                                },
26126
                                success: function (response) {
26127
                                    var results = Ext.decode(response.responseText);
26128
                                    data_ = results.data;
26129
                                    if (data_ != undefined) {
26130
                                        valueField_ = $.grep(data_, function (r) {
26131
                                            return r.ValueField == '1'
26132
                                        });
26133
                                        if (valueField_.length > 0) {
26134
                                            valueField = valueField_[0].FieldName
26135
                                        }
26136
                                        displayValue_ = $.grep(data_, function (r) {
26137
                                            return r.DisplayValue == '1'
26138
                                        });
26139
                                        if (displayValue_.length > 0) {
26140
                                            displayValue = displayValue_[0].FieldName
26141
                                        }
26142
                                    }
26143
                                }
26144
                            });
26145
                        }
26146
                        formfield = new Ext.form.ComboBox({
26147
                            allowBlank: allowblank,
26148
                            fieldLabel: rec.ScreenCaption,
26149
                            forceSelection: true,
26150
                            anyMatch: true,
26151
                            readOnly: readonly,
26152
                            //labelCls: 'label-minova',
26153
                            labelWidth: me.labelWidth,
26154
                            hidden: ishidden,
26155
                            msgTarget: 'side',
26156
                            name: rec.FieldName,
26157
                            formname: formname_,
26158
                            nameTable: nameTable_,
26159
                            value: rec.DefaultValue,
26160
                            anchor: '100%', //width: '95%',
26161
                            //store: Ext.StoreMgr.lookup('store' + rec.FieldName) ? Ext.StoreMgr.lookup('store' + rec.FieldName):
26162
                            store: Ext.create('Ext.data.Store', {
26163
                                storeId: 'store' + rec.FieldName,
26164
                                autoLoad: false,
26165
                                proxy: {
26166
                                    method: 'POST',
26167
                                    type: 'ajax',
26168
                                    url: '/UserControl/GetStore',
26169
                                    extraParams: {
26170
                                        tableName: rec.TableRef,
26171
                                        param: rec.ParamCombo
26172
                                    },
26173
                                    reader: {
26174
                                        type: 'json',
26175
                                        root: 'data',
26176
                                        totalProperty: 'data[0].TotalCount'
26177
                                    }
26178
                                }
26179
                            }),
26180
                            formtarget: formname_,
26181
                            listeners: {
26182
                                afterrender: function (f) {
26183
                                    var store_ = f.getStore();
26184
                                    store_.load();
26185
                                },
26186
                                change: function (val) {
26187
                                    var _label = val.name;
26188
                                    var _form = val.formtarget;
26189
                                    var _Value = val.getValue();
26190
                                    var target = rec.TriggerCombo;
26191
                                    var custumFunc = rec.SelectFunction;
26192
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26193
                                    if (frm) {
26194

    
26195
                                        if (target) {
26196
                                            var f = frm.getForm().findField(target)
26197
                                            _store = f.getStore();
26198
                                            var _tbl = _store.proxy.extraParams.tableName;
26199
                                            var oldParam = _store.proxy.extraParams.param;
26200
                                            _store.proxy.extraParams = {
26201
                                                tableName: _tbl,
26202
                                                param: _label + '[=]' + _Value
26203
                                            };
26204
                                            _store.load();
26205
                                        }
26206
                                        if (custumFunc) {
26207
                                            eval(custumFunc)
26208
                                        }
26209
                                    }
26210
                                }
26211
                            },
26212
                            queryMode: 'local',
26213
                            displayField: displayValue,
26214
                            valueField: valueField,
26215
                        });
26216
                    } else if (rec.SearchType == '2') //Lookup
26217
                    {
26218
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
26219
                            allowBlank: allowblank,
26220
                            fieldLabel: rec.ScreenCaption,
26221
                            readOnly: readonly,
26222
                            IsPrimaryKey: rec.IsPrimaryKey,
26223
                            msgTarget: 'side',
26224
                            //labelCls: 'label-minova',
26225
                            labelWidth: me.labelWidth,
26226
                            hidden: ishidden,
26227
                            name: rec.FieldName,
26228
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
26229
                            triggerCls: 'x-form-search-trigger',
26230
                            vtype: 'alphanum', // disable space
26231
                            formtarget: me.formname, // nama form  yang akan di set value-nya
26232
                            anchor: '100%',
26233
                            formname: formname_,
26234
                            nameTable: nameTable_,
26235
                            LookupFunction: rec.LookupFunction,
26236
                            SearchFunction: rec.SearchFunction,
26237
                            listeners: {
26238
                                change: function (val) {
26239
                                    var _label = val.name;
26240
                                    var _form = val.formname;
26241
                                    var _Value = val.getValue();
26242
                                    var target = rec.TriggerCombo;
26243
                                    var custumFunc = rec.SelectFunction;
26244
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26245
                                        Ext.Ajax.request({
26246
                                            async: false,
26247
                                            method: 'POST',
26248
                                            url: '/UserControl/GetStore',
26249
                                            params: {
26250
                                                tableName: 'PCMFUNC',
26251
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26252
                                            },
26253
                                            success: function (response) {
26254
                                                var results = Ext.decode(response.responseText);
26255
                                                data_ = results.data[0];
26256
                                                if (data_ != undefined) {
26257
                                                    custumFunc = data_.FunctionCode;
26258
                                                }
26259
                                            }
26260
                                        });
26261
                                    }
26262
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26263
                                    if (frm) {
26264

    
26265
                                        if (target) {
26266
                                            var f = frm.getForm().findField(target)
26267
                                            _store = f.getStore();
26268
                                            var _tbl = _store.proxy.extraParams.tableName;
26269
                                            var oldParam = _store.proxy.extraParams.param;
26270
                                            _store.proxy.extraParams = {
26271
                                                tableName: _tbl,
26272
                                                param: _label + '[=]' + _Value
26273
                                            };
26274
                                            _store.load();
26275
                                        }
26276

    
26277
                                        if (custumFunc) {
26278
                                            eval(custumFunc)
26279
                                        }
26280

    
26281
                                    }
26282

    
26283
                                },
26284

    
26285
                            },
26286
                        });
26287
                    } else if (rec.SearchType == '3') //lookup tree
26288
                    {
26289
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
26290
                            allowBlank: allowblank,
26291
                            fieldLabel: rec.ScreenCaption,
26292
                            readOnly: readonly,
26293
                            IsPrimaryKey: rec.IsPrimaryKey,
26294
                            //labelCls: 'label-minova',
26295
                            labelWidth: me.labelWidth,
26296
                            hidden: ishidden,
26297
                            name: rec.FieldName,
26298
                            msgTarget: 'side',
26299
                            triggerCls: 'x-form-search-trigger',
26300
                            treeSructure: rec.SearchFunction, //'O-O-P',
26301
                            objClassValue: rec.ParamCombo, //'O',
26302
                            formname: formname_,
26303
                            targetField: rec.FieldName,
26304
                            nameTable: nameTable_,
26305
                            editable: false,
26306
                            anchor: '100%',
26307
                            listeners: {
26308
                                change3: function (val) {
26309
                                    var _label = val.name;
26310
                                    var _form = val.formname;
26311
                                    var _Value = val.getValue();
26312
                                    var target = rec.TriggerCombo;
26313
                                    var custumFunc = rec.SelectFunction;
26314
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26315
                                        Ext.Ajax.request({
26316
                                            async: false,
26317
                                            method: 'POST',
26318
                                            url: '/UserControl/GetStore',
26319
                                            params: {
26320
                                                tableName: 'PCMFUNC',
26321
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26322
                                            },
26323
                                            success: function (response) {
26324
                                                var results = Ext.decode(response.responseText);
26325
                                                data_ = results.data[0];
26326
                                                if (data_ != undefined) {
26327
                                                    custumFunc = data_.FunctionCode;
26328
                                                }
26329
                                            }
26330
                                        });
26331
                                    }
26332
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26333
                                    if (frm) {
26334

    
26335
                                        if (target) {
26336
                                            var f = frm.getForm().findField(target)
26337
                                            _store = f.getStore();
26338
                                            var _tbl = _store.proxy.extraParams.tableName;
26339
                                            var oldParam = _store.proxy.extraParams.param;
26340
                                            _store.proxy.extraParams = {
26341
                                                tableName: _tbl,
26342
                                                param: _label + '[=]' + _Value
26343
                                            };
26344
                                            _store.load();
26345
                                        }
26346
                                        if (custumFunc) {
26347
                                            eval(custumFunc)
26348
                                        }
26349
                                    }
26350
                                },
26351
                                blur: function (val) {
26352
                                    //if(val.value.split('-').length != 2){
26353
                                    var _label = val.name;
26354
                                    var _form = val.formname;
26355
                                    var _Value = val.getValue();
26356
                                    var target = rec.TriggerCombo;
26357
                                    var custumFunc = rec.SelectFunction;
26358
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26359
                                        Ext.Ajax.request({
26360
                                            async: false,
26361
                                            method: 'POST',
26362
                                            url: '/UserControl/GetStore',
26363
                                            params: {
26364
                                                tableName: 'PCMFUNC',
26365
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26366
                                            },
26367
                                            success: function (response) {
26368
                                                var results = Ext.decode(response.responseText);
26369
                                                data_ = results.data[0];
26370
                                                if (data_ != undefined) {
26371
                                                    custumFunc = data_.FunctionCode;
26372
                                                }
26373
                                            }
26374
                                        });
26375
                                    }
26376
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26377
                                    if (frm) {
26378

    
26379
                                        if (target) {
26380
                                            var f = frm.getForm().findField(target)
26381
                                            _store = f.getStore();
26382
                                            var _tbl = _store.proxy.extraParams.tableName;
26383
                                            var oldParam = _store.proxy.extraParams.param;
26384
                                            _store.proxy.extraParams = {
26385
                                                tableName: _tbl,
26386
                                                param: _label + '[=]' + _Value
26387
                                            };
26388
                                            _store.load();
26389
                                        }
26390
                                        if (custumFunc) {
26391
                                            eval(custumFunc)
26392
                                        }
26393
                                    }
26394
                                    //}
26395
                                }
26396

    
26397
                            }
26398
                        });
26399
                    }
26400
                }
26401
                if (isDesk) {
26402
                    if (rec.ColumnNo == 1) {
26403
                        col1.push(formfield);
26404
                    } else {
26405
                        col2.push(formfield);
26406
                    }
26407
                } else {
26408
                    col1.push(formfield);
26409
                }
26410

    
26411
            });
26412
        }
26413
        Ext.applyIf(me, {
26414
            items:
26415
                [
26416
                    {
26417
                        //width: 450,
26418
                        //style: 'width: 50%',
26419
                        defaults: {
26420
                            layout: 'anchor',
26421
                            xtype: 'container',
26422
                            flex: 1,
26423
                            margin: '10px',
26424
                            //defaultType: 'textfield',
26425
                            //anchor: '100%',
26426
                            ////style: 'width: 50%',
26427
                        },
26428
                        items: col1,
26429
                        flex: 1,
26430
                    },
26431
                    {
26432
                        //width: 450,
26433
                        //style: 'width: 50%',
26434
                        defaults: {
26435
                            layout: 'anchor',
26436
                            xtype: 'container',
26437
                            flex: 1,
26438
                            margin: '10px',
26439
                            //defaultType: 'textfield',
26440
                            //anchor: '100%',
26441
                            ////style: 'width: 50%',
26442
                        },
26443
                        items: col2,
26444
                        flex: 1,
26445
                    }
26446
                ]
26447
        });
26448
        this.callParent();
26449
    },
26450
    listeners: {
26451
        boxready: function (dataview) {
26452
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
26453
        }
26454
    },
26455
    buttons: [{
26456
        text: 'Update',
26457
        handler: 'onSaveClick'
26458
    }, {
26459
        text: 'Cancel',
26460
        handler: 'onCancelClick'
26461
    }]
26462
});
26463

    
26464
/*Form ESS GeneratorT YN 20211216*/
26465
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridT', {
26466
    extend: 'Ext.form.Panel',
26467
    alias: ['widget.MinovaWorkflowFormGridT', 'widget.minovaworkflowformgridT', 'widget.workflowformgridT'],
26468
    controller: 'workflowformgrid',
26469
    formname: this.name,
26470
    bizprocid: undefined,
26471
    bizflowid: undefined,
26472
    taskid: undefined,
26473
    tableName: undefined,
26474
    tableNameT: undefined,
26475
    parentKey: undefined,
26476
    titleform: undefined,
26477
    //resizable: true,
26478
    border: true,
26479
    autoScroll: true,
26480
    minHeight: 20,
26481
    layout: {
26482
        type: 'hbox'
26483
    },
26484
    listeners: {
26485
        render: function () {
26486
            if (this.titleform != undefined) {
26487
                this.setTitle(this.titleform);
26488
            }
26489
        },
26490
    },
26491
    buttonAlign: 'left',
26492
    defaults: {
26493
        layout: 'anchor',
26494
        xtype: 'container',
26495
        flex: 1,
26496
        margin: '10px',
26497
        //defaultType: 'textfield',
26498
        //anchor: '100%',
26499
        ////style: 'width: 50%',
26500
    },
26501
    initComponent: function () {
26502
        var col1 = [];
26503
        var col2 = [];
26504
        var me = this;
26505
        var LangID = localStorage.LangId;
26506
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
26507
        var formname_ = me.name;
26508
        var nameTable_ = me.tableName;
26509
        var labelWidth = 150;
26510
        Ext.Ajax.request({
26511
            async: false,
26512
            method: 'POST',
26513
            url: '/UserControl/GetStore',
26514
            params: {
26515
                tableName: 'PDSWFSTRUCTUREFIELD',
26516
                param: parameter
26517
            },
26518
            success: function (response) {
26519
                var results = Ext.decode(response.responseText);
26520
                hasil = results.data;
26521
            }
26522
        });
26523
        if (hasil.length > 0) {
26524
            Ext.each(hasil, function (rec) {
26525
                var formfield = undefined;
26526
                var readonly = false;
26527
                var ishidden = false;
26528
                var allowblank = true;
26529
                var startDt = null;
26530
                var endDt = null;
26531
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26532
                    startDt = 'StartDate';
26533
                    endDt = 'EndDate';
26534
                }
26535
                if (rec.IsReadOnly == '1') {
26536
                    readonly = true;
26537
                }
26538
                if (rec.IsRequired == '1') {
26539
                    allowblank = false;
26540
                }
26541
                if (rec.IsVisible == '0') {
26542
                    ishidden = true;
26543
                }
26544
                if (rec.SearchType == "") //textfield
26545
                {
26546
                    switch (rec.FormatRef) {
26547
                        case "date":
26548
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26549
                                formfield = new Ext.form.DateField({
26550
                                    allowBlank: allowblank,
26551
                                    fieldLabel: rec.ScreenCaption,
26552
                                    readOnly: readonly,
26553
                                    msgTarget: 'side',
26554
                                    //labelCls: 'label-minova',
26555
                                    labelWidth: labelWidth,
26556
                                    hidden: ishidden,
26557
                                    name: rec.FieldName,
26558
                                    submitFormat: 'Ymd',
26559
                                    value: rec.DefaultValue,
26560
                                    anchor: '100%',
26561
                                    vtype: 'daterange',
26562
                                    start: startDt,
26563
                                    end: endDt,
26564
                                    formname: formname_,
26565
                                    nameTable: nameTable_,
26566
                                    hideMode: 'visibility',
26567
                                    listeners: {
26568
                                        change: function (val) {
26569
                                            var _label = val.name;
26570
                                            var _form = val.formname;
26571
                                            var _Value = val.getValue();
26572
                                            var target = rec.TriggerCombo;
26573
                                            var custumFunc = rec.SelectFunction;
26574
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26575
                                                Ext.Ajax.request({
26576
                                                    async: false,
26577
                                                    method: 'POST',
26578
                                                    url: '/UserControl/GetStore',
26579
                                                    params: {
26580
                                                        tableName: 'PCMFUNC',
26581
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26582
                                                    },
26583
                                                    success: function (response) {
26584
                                                        var results = Ext.decode(response.responseText);
26585
                                                        data_ = results.data[0];
26586
                                                        if (data_ != undefined) {
26587
                                                            custumFunc = data_.FunctionCode;
26588
                                                        }
26589
                                                    }
26590
                                                });
26591
                                            }
26592
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26593
                                            if (frm) {
26594
                                                if (custumFunc) {
26595
                                                    eval(custumFunc)
26596
                                                }
26597
                                            }
26598
                                        }
26599
                                    }
26600
                                });
26601
                            } else {
26602
                                formfield = new Ext.form.DateField({
26603
                                    allowBlank: allowblank,
26604
                                    fieldLabel: rec.ScreenCaption,
26605
                                    readOnly: readonly,
26606
                                    msgTarget: 'side',
26607
                                    //labelCls: 'label-minova',
26608
                                    labelWidth: labelWidth,
26609
                                    hidden: ishidden,
26610
                                    name: rec.FieldName,
26611
                                    submitFormat: 'Ymd',
26612
                                    value: rec.DefaultValue,
26613
                                    anchor: '100%',
26614
                                    formname: formname_,
26615
                                    nameTable: nameTable_,
26616
                                    hideMode: 'visibility',
26617
                                    listeners: {
26618
                                        change: function (val) {
26619
                                            var _label = val.name;
26620
                                            var _form = val.formname;
26621
                                            var _Value = val.getValue();
26622
                                            var target = rec.TriggerCombo;
26623
                                            var custumFunc = rec.SelectFunction;
26624
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26625
                                                Ext.Ajax.request({
26626
                                                    async: false,
26627
                                                    method: 'POST',
26628
                                                    url: '/UserControl/GetStore',
26629
                                                    params: {
26630
                                                        tableName: 'PCMFUNC',
26631
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26632
                                                    },
26633
                                                    success: function (response) {
26634
                                                        var results = Ext.decode(response.responseText);
26635
                                                        data_ = results.data[0];
26636
                                                        if (data_ != undefined) {
26637
                                                            custumFunc = data_.FunctionCode;
26638
                                                        }
26639
                                                    }
26640
                                                });
26641
                                            }
26642
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26643
                                            if (frm) {
26644
                                                if (custumFunc) {
26645
                                                    eval(custumFunc)
26646
                                                }
26647
                                            }
26648
                                        }
26649
                                    }
26650
                                });
26651
                            }
26652
                            break;
26653
                        case "time":
26654
                            formfield = new Ext.form.TimeField({
26655
                                allowBlank: allowblank,
26656
                                fieldLabel: rec.ScreenCaption,
26657
                                readOnly: readonly,
26658
                                //labelCls: 'label-minova',
26659
                                labelWidth: labelWidth,
26660
                                hidden: ishidden,
26661
                                name: rec.FieldName,
26662
                                msgTarget: 'side',
26663
                                format: 'Hi',
26664
                                submitFormat: 'Hi',
26665
                                increment: 5,
26666
                                value: rec.DefaultValue,
26667
                                anchor: '100%',
26668
                                formname: formname_,
26669
                                nameTable: nameTable_,
26670
                                listeners: {
26671
                                    change: function (val) {
26672
                                        var _label = val.name;
26673
                                        var _form = val.formname;
26674
                                        var _Value = val.getValue();
26675
                                        var target = rec.TriggerCombo;
26676
                                        var custumFunc = rec.SelectFunction;
26677
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26678
                                            Ext.Ajax.request({
26679
                                                async: false,
26680
                                                method: 'POST',
26681
                                                url: '/UserControl/GetStore',
26682
                                                params: {
26683
                                                    tableName: 'PCMFUNC',
26684
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
26685
                                                },
26686
                                                success: function (response) {
26687
                                                    var results = Ext.decode(response.responseText);
26688
                                                    data_ = results.data[0];
26689
                                                    if (data_ != undefined) {
26690
                                                        custumFunc = data_.FunctionCode;
26691
                                                    }
26692
                                                }
26693
                                            });
26694
                                        }
26695
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26696
                                        if (frm) {
26697
                                            if (custumFunc) {
26698
                                                eval(custumFunc)
26699
                                            }
26700
                                        }
26701
                                    }
26702
                                }
26703
                            });
26704
                            break;
26705
                        case "amount":
26706
                            formfield = new Ext.form.TextField({
26707
                                allowBlank: allowblank,
26708
                                fieldLabel: rec.ScreenCaption,
26709
                                readOnly: readonly,
26710
                                //labelCls: 'label-minova',
26711
                                labelWidth: labelWidth,
26712
                                hidden: ishidden,
26713
                                name: rec.FieldName,
26714
                                msgTarget: 'side',
26715
                                value: rec.DefaultValue,
26716
                                maxLength: rec.Length,
26717
                                anchor: '100%',
26718
                                formname: formname_,
26719
                                nameTable: nameTable_,
26720
                                fieldStyle: 'text-align:right;',
26721
                                listeners: {
26722
                                    change: function (val) {
26723
                                        var _label = val.name;
26724
                                        var _form = val.formname;
26725
                                        var _Value = val.getValue();
26726
                                        var target = rec.TriggerCombo;
26727
                                        var custumFunc = rec.SelectFunction;
26728
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26729
                                            Ext.Ajax.request({
26730
                                                async: false,
26731
                                                method: 'POST',
26732
                                                url: '/UserControl/GetStore',
26733
                                                params: {
26734
                                                    tableName: 'PCMFUNC',
26735
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26736
                                                },
26737
                                                success: function (response) {
26738
                                                    var results = Ext.decode(response.responseText);
26739
                                                    data_ = results.data[0];
26740
                                                    if (data_ != undefined) {
26741
                                                        custumFunc = data_.FunctionCode;
26742
                                                    }
26743
                                                }
26744
                                            });
26745
                                        }
26746
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26747
                                        if (frm) {
26748
                                            if (custumFunc) {
26749
                                                eval(custumFunc)
26750
                                            }
26751
                                        }
26752
                                    }
26753
                                }
26754
                            });
26755
                            break;
26756
                        case "file":
26757
                            formfield = new MinovaUtil.MinovaES.UploadFile({
26758
                                allowBlank: allowblank,
26759
                                fieldLabel: rec.ScreenCaption,
26760
                                readOnly: readonly,
26761
                                readOnlyCls: 'minova-readonly',
26762
                                hidden: ishidden,
26763
                                //labelCls: 'label-minova',
26764
                                name: rec.FieldName,
26765
                                msgTarget: 'side',
26766
                                fieldname: rec.FieldName,
26767
                                IsPrimaryKey: rec.IsPrimaryKey,
26768
                                tableName: rec.TableRef,
26769
                                triggerCls: 'x-form-search-trigger',
26770
                                formtarget: me.formname,
26771
                                anchor: '100%',
26772
                                formname: formname_,
26773
                                nameTable: nameTable_,
26774
                                listeners: {
26775
                                    change: function (val) {
26776
                                        var _label = val.name;
26777
                                        var _form = val.formname;
26778
                                        var _Value = val.getValue();
26779
                                        var target = rec.TriggerCombo;
26780
                                        var custumFunc = rec.SelectFunction;
26781
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26782
                                            Ext.Ajax.request({
26783
                                                async: false,
26784
                                                method: 'POST',
26785
                                                url: '/UserControl/GetStore',
26786
                                                params: {
26787
                                                    tableName: 'PCMFUNC',
26788
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26789
                                                },
26790
                                                success: function (response) {
26791
                                                    var results = Ext.decode(response.responseText);
26792
                                                    data_ = results.data[0];
26793
                                                    if (data_ != undefined) {
26794
                                                        custumFunc = data_.FunctionCode;
26795
                                                    }
26796
                                                }
26797
                                            });
26798
                                        }
26799
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26800
                                        if (frm) {
26801
                                            if (target) {
26802
                                                var f = frm.getForm().findField(target)
26803
                                                _store = f.getStore();
26804
                                                var _tbl = _store.proxy.extraParams.tableName;
26805
                                                var oldParam = _store.proxy.extraParams.param;
26806
                                                _store.proxy.extraParams = {
26807
                                                    tableName: _tbl,
26808
                                                    param: _label + '[=]' + _Value
26809
                                                };
26810
                                                _store.load();
26811
                                            }
26812
                                            if (custumFunc) {
26813
                                                eval(custumFunc)
26814
                                            }
26815
                                        }
26816
                                    }
26817
                                }
26818
                            });
26819
                            break;
26820
                        default:
26821
                            if (rec.DataType == 0) {
26822
                                if (rec.Length > 250) {
26823
                                    formfield = new Ext.form.TextArea({
26824
                                        allowBlank: allowblank,
26825
                                        fieldLabel: rec.ScreenCaption,
26826
                                        readOnly: readonly,
26827
                                        ////labelCls: 'label-minova',
26828
                                        labelWidth: labelWidth,
26829
                                        hidden: ishidden,
26830
                                        name: rec.FieldName,
26831
                                        msgTarget: 'side',
26832
                                        value: rec.DefaultValue,
26833
                                        maxLength: rec.Length,
26834
                                        anchor: '100%',
26835
                                        grow: true,
26836
                                        formname: formname_,
26837
                                        nameTable: nameTable_,
26838
                                        listeners: {
26839
                                            change: function (val) {
26840
                                                var _label = val.name;
26841
                                                var _form = val.formname;
26842
                                                var _Value = val.getValue();
26843
                                                var target = rec.TriggerCombo;
26844
                                                var custumFunc = rec.SelectFunction;
26845
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26846
                                                    Ext.Ajax.request({
26847
                                                        async: false,
26848
                                                        method: 'POST',
26849
                                                        url: '/UserControl/GetStore',
26850
                                                        params: {
26851
                                                            tableName: 'PCMFUNC',
26852
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26853
                                                        },
26854
                                                        success: function (response) {
26855
                                                            var results = Ext.decode(response.responseText);
26856
                                                            data_ = results.data[0];
26857
                                                            if (data_ != undefined) {
26858
                                                                custumFunc = data_.FunctionCode;
26859
                                                            }
26860
                                                        }
26861
                                                    });
26862
                                                }
26863
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26864
                                                if (frm) {
26865
                                                    if (custumFunc) {
26866
                                                        eval(custumFunc)
26867
                                                    }
26868
                                                }
26869
                                            }
26870
                                        }
26871
                                    });
26872
                                } else {
26873
                                    if (rec.FixedValue != '') {
26874
                                        var storeData = [];
26875
                                        var str = rec.FixedValue;
26876
                                        var hasil = str.split('||');
26877
                                        hasil.forEach(function (h) {
26878
                                            store_ = h.split('=')
26879
                                            storeData.push({
26880
                                                code: store_[0],
26881
                                                desc: store_[1],
26882
                                            });
26883
                                        });
26884
                                        formfield = new Ext.form.ComboBox({
26885
                                            allowBlank: allowblank,
26886
                                            fieldLabel: rec.ScreenCaption,
26887
                                            forceSelection: true,
26888
                                            readOnly: readonly,
26889
                                            //labelCls: 'label-minova',
26890
                                            labelWidth: labelWidth,
26891
                                            hidden: ishidden,
26892
                                            name: rec.FieldName,
26893
                                            msgTarget: 'side',
26894
                                            value: rec.DefaultValue,
26895
                                            anchor: '100%',
26896
                                            formname: formname_,
26897
                                            nameTable: nameTable_,
26898
                                            formtarget: me.formname,
26899
                                            store: Ext.create('Ext.data.Store', {
26900
                                                storeId: 'store' + rec.FieldName,
26901
                                                autoLoad: true,
26902
                                                data: storeData
26903

    
26904
                                            }),
26905
                                            listeners: {
26906
                                                change: function (val) {
26907
                                                    var _label = val.name;
26908
                                                    var _form = val.formtarget;
26909
                                                    var _Value = val.getValue();
26910
                                                    var target = rec.TriggerCombo;
26911
                                                    var custumFunc = rec.SelectFunction;
26912
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26913
                                                    if (frm) {
26914
                                                        if (target) {
26915
                                                            var f = frm.getForm().findField(target)
26916
                                                            _store = f.getStore();
26917
                                                            var _tbl = _store.proxy.extraParams.tableName;
26918
                                                            var oldParam = _store.proxy.extraParams.param;
26919
                                                            _store.proxy.extraParams = {
26920
                                                                tableName: _tbl,
26921
                                                                param: _label + '[=]' + _Value
26922
                                                            };
26923
                                                            _store.load();
26924
                                                        }
26925
                                                        if (custumFunc) {
26926
                                                            eval(custumFunc)
26927
                                                        }
26928
                                                    }
26929
                                                }
26930
                                            },
26931
                                            queryMode: 'local',
26932
                                            valueField: 'code',
26933
                                            displayField: 'desc',
26934
                                        });
26935
                                    } else {
26936
                                        formfield = new Ext.form.TextField({
26937
                                            allowBlank: allowblank,
26938
                                            fieldLabel: rec.ScreenCaption,
26939
                                            readOnly: readonly,
26940
                                            //labelCls: 'label-minova',
26941
                                            labelWidth: labelWidth,
26942
                                            hidden: ishidden,
26943
                                            name: rec.FieldName,
26944
                                            msgTarget: 'side',
26945
                                            value: rec.DefaultValue,
26946
                                            maxLength: rec.Length,
26947
                                            anchor: '100%',
26948
                                            formname: formname_,
26949
                                            nameTable: nameTable_,
26950
                                            listeners: {
26951
                                                change: function (val) {
26952
                                                    var _label = val.name;
26953
                                                    var _form = val.formname;
26954
                                                    var _Value = val.getValue();
26955
                                                    var target = rec.TriggerCombo;
26956
                                                    var custumFunc = rec.SelectFunction;
26957
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26958
                                                        Ext.Ajax.request({
26959
                                                            async: false,
26960
                                                            method: 'POST',
26961
                                                            url: '/UserControl/GetStore',
26962
                                                            params: {
26963
                                                                tableName: 'PCMFUNC',
26964
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26965
                                                            },
26966
                                                            success: function (response) {
26967
                                                                var results = Ext.decode(response.responseText);
26968
                                                                data_ = results.data[0];
26969
                                                                if (data_ != undefined) {
26970
                                                                    custumFunc = data_.FunctionCode;
26971
                                                                }
26972
                                                            }
26973
                                                        });
26974
                                                    }
26975
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26976
                                                    if (frm) {
26977
                                                        if (custumFunc) {
26978
                                                            eval(custumFunc)
26979
                                                        }
26980
                                                    }
26981
                                                }
26982
                                            }
26983
                                        });
26984
                                    }
26985
                                }
26986
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
26987
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
26988
                                    allowBlank: allowblank,
26989
                                    fieldLabel: rec.ScreenCaption,
26990
                                    readOnly: readonly,
26991
                                    //labelCls: 'label-minova',
26992
                                    labelWidth: labelWidth,
26993
                                    msgTarget: 'side',
26994
                                    hidden: ishidden,
26995
                                    name: rec.FieldName,
26996
                                    value: rec.DefaultValue,
26997
                                    maxLength: rec.Length,
26998
                                    anchor: '100%',
26999
                                    formname: formname_,
27000
                                    nameTable: nameTable_,
27001
                                    fieldStyle: 'text-align:right;',
27002
                                    listeners: {
27003
                                        change: function (val) {
27004
                                            var _label = val.name;
27005
                                            var _form = val.formname;
27006
                                            var _Value = val.getValue();
27007
                                            var target = rec.TriggerCombo;
27008
                                            var custumFunc = rec.SelectFunction;
27009
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27010
                                                Ext.Ajax.request({
27011
                                                    async: false,
27012
                                                    method: 'POST',
27013
                                                    url: '/UserControl/GetStore',
27014
                                                    params: {
27015
                                                        tableName: 'PCMFUNC',
27016
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27017
                                                    },
27018
                                                    success: function (response) {
27019
                                                        var results = Ext.decode(response.responseText);
27020
                                                        data_ = results.data[0];
27021
                                                        if (data_ != undefined) {
27022
                                                            custumFunc = data_.FunctionCode;
27023
                                                        }
27024
                                                    }
27025
                                                });
27026
                                            }
27027
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27028
                                            if (frm) {
27029
                                                if (target) {
27030
                                                    var f = frm.getForm().findField(target)
27031
                                                    _store = f.getStore();
27032
                                                    var _tbl = _store.proxy.extraParams.tableName;
27033
                                                    var oldParam = _store.proxy.extraParams.param;
27034
                                                    _store.proxy.extraParams = {
27035
                                                        tableName: _tbl,
27036
                                                        param: _label + '[=]' + _Value
27037
                                                    };
27038
                                                    _store.load();
27039
                                                }
27040
                                                if (custumFunc) {
27041
                                                    eval(custumFunc)
27042
                                                }
27043
                                            }
27044
                                        }
27045
                                    }
27046
                                });
27047
                            } else if (rec.DataType == 3) {
27048
                                formfield = new Ext.form.TextField({
27049
                                    allowBlank: allowblank,
27050
                                    fieldLabel: rec.ScreenCaption,
27051
                                    readOnly: readonly,
27052
                                    //labelCls: 'label-minova',
27053
                                    labelWidth: labelWidth,
27054
                                    msgTarget: 'side',
27055
                                    hidden: ishidden,
27056
                                    name: rec.FieldName,
27057
                                    value: rec.DefaultValue,
27058
                                    maxLength: rec.Length,
27059
                                    precision: rec.Prec,
27060
                                    anchor: '100%',
27061
                                    formname: formname_,
27062
                                    nameTable: nameTable_,
27063
                                    fieldStyle: 'text-align:right;',
27064
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
27065
                                    listeners: {
27066
                                        change: function (val) {
27067
                                            var _label = val.name;
27068
                                            var _form = val.formname;
27069
                                            var _Value = val.getValue();
27070
                                            var target = rec.TriggerCombo;
27071
                                            var custumFunc = rec.SelectFunction;
27072
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27073
                                                Ext.Ajax.request({
27074
                                                    async: false,
27075
                                                    method: 'POST',
27076
                                                    url: '/UserControl/GetStore',
27077
                                                    params: {
27078
                                                        tableName: 'PCMFUNC',
27079
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27080
                                                    },
27081
                                                    success: function (response) {
27082
                                                        var results = Ext.decode(response.responseText);
27083
                                                        data_ = results.data[0];
27084
                                                        if (data_ != undefined) {
27085
                                                            custumFunc = data_.FunctionCode;
27086
                                                        }
27087
                                                    }
27088
                                                });
27089
                                            }
27090
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27091
                                            if (frm) {
27092
                                                if (target) {
27093
                                                    var f = frm.getForm().findField(target)
27094
                                                    _store = f.getStore();
27095
                                                    var _tbl = _store.proxy.extraParams.tableName;
27096
                                                    var oldParam = _store.proxy.extraParams.param;
27097
                                                    _store.proxy.extraParams = {
27098
                                                        tableName: _tbl,
27099
                                                        param: _label + '[=]' + _Value
27100
                                                    };
27101
                                                    _store.load();
27102
                                                }
27103
                                                if (custumFunc) {
27104
                                                    eval(custumFunc)
27105
                                                }
27106
                                            }
27107
                                        }
27108
                                    }
27109
                                });
27110
                            }
27111
                    }
27112
                } else if (rec.SearchType != "") {
27113
                    if (rec.SearchType == "0") //combobox
27114
                    {
27115
                        valueField = null;
27116
                        displayValue = null;
27117
                        if (rec.TableRef != "") {
27118
                            Ext.Ajax.request({
27119
                                async: false,
27120
                                method: 'POST',
27121
                                url: '/UserControl/GetStore',
27122
                                params: {
27123
                                    tableName: 'SDATATABLEFIELD',
27124
                                    param: 'TableName[equal]' + rec.TableRef
27125
                                },
27126
                                success: function (response) {
27127
                                    var results = Ext.decode(response.responseText);
27128
                                    data_ = results.data;
27129
                                    if (data_ != undefined) {
27130
                                        valueField_ = $.grep(data_, function (r) {
27131
                                            return r.ValueField == '1'
27132
                                        });
27133
                                        if (valueField_.length > 0) {
27134
                                            valueField = valueField_[0].FieldName
27135
                                        }
27136
                                        displayValue_ = $.grep(data_, function (r) {
27137
                                            return r.DisplayValue == '1'
27138
                                        });
27139
                                        if (displayValue_.length > 0) {
27140
                                            displayValue = displayValue_[0].FieldName
27141
                                        }
27142
                                    }
27143
                                }
27144
                            });
27145
                        }
27146
                        formfield = new Ext.form.ComboBox({
27147
                            allowBlank: allowblank,
27148
                            fieldLabel: rec.ScreenCaption,
27149
                            forceSelection: true,
27150
                            anyMatch: true,
27151
                            readOnly: readonly,
27152
                            //labelCls: 'label-minova',
27153
                            labelWidth: labelWidth,
27154
                            hidden: ishidden,
27155
                            msgTarget: 'side',
27156
                            name: rec.FieldName,
27157
                            formname: formname_,
27158
                            nameTable: nameTable_,
27159
                            value: rec.DefaultValue,
27160
                            anchor: '100%', //width: '95%',
27161
                            store: Ext.create('Ext.data.Store', {
27162
                                storeId: 'store' + rec.FieldName,
27163
                                autoLoad: false,
27164
                                proxy: {
27165
                                    method: 'POST',
27166
                                    type: 'ajax',
27167
                                    url: '/UserControl/GetStore',
27168
                                    extraParams: {
27169
                                        tableName: rec.TableRef,
27170
                                        param: rec.ParamCombo
27171
                                    },
27172
                                    reader: {
27173
                                        type: 'json',
27174
                                        root: 'data',
27175
                                        totalProperty: 'data[0].TotalCount'
27176
                                    }
27177
                                }
27178
                            }),
27179
                            formtarget: formname_,
27180
                            listeners: {
27181
                                afterrender: function (f) {
27182
                                    var store_ = f.getStore();
27183
                                    store_.load();
27184
                                },
27185
                                change: function (val) {
27186
                                    var _label = val.name;
27187
                                    var _form = val.formtarget;
27188
                                    var _Value = val.getValue();
27189
                                    var target = rec.TriggerCombo;
27190
                                    var custumFunc = rec.SelectFunction;
27191
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27192
                                    if (frm) {
27193

    
27194
                                        if (target) {
27195
                                            var f = frm.getForm().findField(target)
27196
                                            _store = f.getStore();
27197
                                            var _tbl = _store.proxy.extraParams.tableName;
27198
                                            var oldParam = _store.proxy.extraParams.param;
27199
                                            _store.proxy.extraParams = {
27200
                                                tableName: _tbl,
27201
                                                param: _label + '[=]' + _Value
27202
                                            };
27203
                                            _store.load();
27204
                                        }
27205
                                        if (custumFunc) {
27206
                                            eval(custumFunc)
27207
                                        }
27208
                                    }
27209
                                }
27210
                            },
27211
                            queryMode: 'local',
27212
                            displayField: displayValue,
27213
                            valueField: valueField,
27214
                        });
27215
                    } else if (rec.SearchType == '2') //Lookup
27216
                    {
27217
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
27218
                            allowBlank: allowblank,
27219
                            fieldLabel: rec.ScreenCaption,
27220
                            readOnly: readonly,
27221
                            IsPrimaryKey: rec.IsPrimaryKey,
27222
                            msgTarget: 'side',
27223
                            //labelCls: 'label-minova',
27224
                            labelWidth: labelWidth,
27225
                            hidden: ishidden,
27226
                            name: rec.FieldName,
27227
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
27228
                            triggerCls: 'x-form-search-trigger',
27229
                            vtype: 'alphanum', // disable space
27230
                            formtarget: me.formname, // nama form  yang akan di set value-nya
27231
                            anchor: '100%',
27232
                            formname: formname_,
27233
                            nameTable: nameTable_,
27234
                            LookupFunction: rec.LookupFunction,
27235
                            SearchFunction: rec.SearchFunction,
27236
                            listeners: {
27237
                                change: function (val) {
27238
                                    var _label = val.name;
27239
                                    var _form = val.formname;
27240
                                    var _Value = val.getValue();
27241
                                    var target = rec.TriggerCombo;
27242
                                    var custumFunc = rec.SelectFunction;
27243
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27244
                                        Ext.Ajax.request({
27245
                                            async: false,
27246
                                            method: 'POST',
27247
                                            url: '/UserControl/GetStore',
27248
                                            params: {
27249
                                                tableName: 'PCMFUNC',
27250
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27251
                                            },
27252
                                            success: function (response) {
27253
                                                var results = Ext.decode(response.responseText);
27254
                                                data_ = results.data[0];
27255
                                                if (data_ != undefined) {
27256
                                                    custumFunc = data_.FunctionCode;
27257
                                                }
27258
                                            }
27259
                                        });
27260
                                    }
27261
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27262
                                    if (frm) {
27263

    
27264
                                        if (target) {
27265
                                            var f = frm.getForm().findField(target)
27266
                                            _store = f.getStore();
27267
                                            var _tbl = _store.proxy.extraParams.tableName;
27268
                                            var oldParam = _store.proxy.extraParams.param;
27269
                                            _store.proxy.extraParams = {
27270
                                                tableName: _tbl,
27271
                                                param: _label + '[=]' + _Value
27272
                                            };
27273
                                            _store.load();
27274
                                        }
27275

    
27276
                                        if (custumFunc) {
27277
                                            eval(custumFunc)
27278
                                        }
27279

    
27280
                                    }
27281

    
27282
                                },
27283

    
27284
                            },
27285
                        });
27286
                    } else if (rec.SearchType == '3') //lookup tree
27287
                    {
27288
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
27289
                            allowBlank: allowblank,
27290
                            fieldLabel: rec.ScreenCaption,
27291
                            readOnly: readonly,
27292
                            IsPrimaryKey: rec.IsPrimaryKey,
27293
                            //labelCls: 'label-minova',
27294
                            labelWidth: labelWidth,
27295
                            hidden: ishidden,
27296
                            name: rec.FieldName,
27297
                            msgTarget: 'side',
27298
                            triggerCls: 'x-form-search-trigger',
27299
                            treeSructure: rec.SearchFunction, //'O-O-P',
27300
                            objClassValue: rec.ParamCombo, //'O',
27301
                            formname: formname_,
27302
                            targetField: rec.FieldName,
27303
                            nameTable: nameTable_,
27304
                            editable: false,
27305
                            anchor: '100%',
27306
                            listeners: {
27307
                                change3: function (val) {
27308
                                    var _label = val.name;
27309
                                    var _form = val.formname;
27310
                                    var _Value = val.getValue();
27311
                                    var target = rec.TriggerCombo;
27312
                                    var custumFunc = rec.SelectFunction;
27313
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27314
                                        Ext.Ajax.request({
27315
                                            async: false,
27316
                                            method: 'POST',
27317
                                            url: '/UserControl/GetStore',
27318
                                            params: {
27319
                                                tableName: 'PCMFUNC',
27320
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27321
                                            },
27322
                                            success: function (response) {
27323
                                                var results = Ext.decode(response.responseText);
27324
                                                data_ = results.data[0];
27325
                                                if (data_ != undefined) {
27326
                                                    custumFunc = data_.FunctionCode;
27327
                                                }
27328
                                            }
27329
                                        });
27330
                                    }
27331
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27332
                                    if (frm) {
27333

    
27334
                                        if (target) {
27335
                                            var f = frm.getForm().findField(target)
27336
                                            _store = f.getStore();
27337
                                            var _tbl = _store.proxy.extraParams.tableName;
27338
                                            var oldParam = _store.proxy.extraParams.param;
27339
                                            _store.proxy.extraParams = {
27340
                                                tableName: _tbl,
27341
                                                param: _label + '[=]' + _Value
27342
                                            };
27343
                                            _store.load();
27344
                                        }
27345
                                        if (custumFunc) {
27346
                                            eval(custumFunc)
27347
                                        }
27348
                                    }
27349
                                },
27350
                                blur: function (val) {
27351
                                    //if(val.value.split('-').length != 2){
27352
                                    var _label = val.name;
27353
                                    var _form = val.formname;
27354
                                    var _Value = val.getValue();
27355
                                    var target = rec.TriggerCombo;
27356
                                    var custumFunc = rec.SelectFunction;
27357
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27358
                                        Ext.Ajax.request({
27359
                                            async: false,
27360
                                            method: 'POST',
27361
                                            url: '/UserControl/GetStore',
27362
                                            params: {
27363
                                                tableName: 'PCMFUNC',
27364
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27365
                                            },
27366
                                            success: function (response) {
27367
                                                var results = Ext.decode(response.responseText);
27368
                                                data_ = results.data[0];
27369
                                                if (data_ != undefined) {
27370
                                                    custumFunc = data_.FunctionCode;
27371
                                                }
27372
                                            }
27373
                                        });
27374
                                    }
27375
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27376
                                    if (frm) {
27377

    
27378
                                        if (target) {
27379
                                            var f = frm.getForm().findField(target)
27380
                                            _store = f.getStore();
27381
                                            var _tbl = _store.proxy.extraParams.tableName;
27382
                                            var oldParam = _store.proxy.extraParams.param;
27383
                                            _store.proxy.extraParams = {
27384
                                                tableName: _tbl,
27385
                                                param: _label + '[=]' + _Value
27386
                                            };
27387
                                            _store.load();
27388
                                        }
27389
                                        if (custumFunc) {
27390
                                            eval(custumFunc)
27391
                                        }
27392
                                    }
27393
                                    //}
27394
                                }
27395

    
27396
                            }
27397
                        });
27398
                    }
27399
                }
27400
                if (isDesk) {
27401
                    if (rec.ColumnNo == 1) {
27402
                        col1.push(formfield);
27403
                    } else {
27404
                        col2.push(formfield);
27405
                    }
27406
                } else {
27407
                    col1.push(formfield);
27408
                }
27409

    
27410
            });
27411
        }
27412
        Ext.applyIf(me, {
27413
            items:
27414
                [
27415
                    {
27416
                        //width: 450,
27417
                        //style: 'width: 50%',
27418
                        defaults: {
27419
                            layout: 'anchor',
27420
                            xtype: 'container',
27421
                            flex: 1,
27422
                            margin: '10px',
27423
                            //defaultType: 'textfield',
27424
                            //anchor: '100%',
27425
                            ////style: 'width: 50%',
27426
                        },
27427
                        items: col1,
27428
                        flex: 1,
27429
                    },
27430
                    {
27431
                        //width: 450,
27432
                        //style: 'width: 50%',
27433
                        defaults: {
27434
                            layout: 'anchor',
27435
                            xtype: 'container',
27436
                            flex: 1,
27437
                            margin: '10px',
27438
                            //defaultType: 'textfield',
27439
                            //anchor: '100%',
27440
                            ////style: 'width: 50%',
27441
                        },
27442
                        items: col2,
27443
                        flex: 1,
27444
                    }
27445
                ]
27446
        });
27447
        this.callParent();
27448
    },
27449
    listeners: {
27450
        boxready: function (dataview) {
27451
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
27452
        }
27453
    },
27454
    buttons: [{
27455
        text: 'Update',
27456
        handler: 'onSaveClick'
27457
    }, {
27458
        text: 'Cancel',
27459
        handler: 'onCancelClick'
27460
    }]
27461
});
27462

    
27463
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridController', {
27464
    extend: 'Ext.app.ViewController',
27465
    alias: 'controller.workflowformgrid',
27466
    //afterrender: function () {
27467
    //    this.reset();
27468
    //},
27469

    
27470
    onSaveClick: function () {
27471
        // Save the changes pending in the dialog's child session back to the
27472
        // parent session.
27473
        //this.dialog.getSession().save();
27474
        var frmPanel = this.getView();
27475
        //var panel = this.up('form');
27476
        //var form = panel.getForm();
27477
        if (frmPanel.isValid()) {
27478
            //Ext.Msg.alert('Success');
27479
            var grdPanel = Ext.ComponentQuery.query('[name=grid' + frmPanel.tableName + ']')[0];
27480
            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
27481
            values = frmPanel.getValues();
27482
            try {               
27483
                dtrec.set(values);
27484
                }
27485
            catch (e) {
27486
                //grdPanel.reconfigure();
27487
                console.log(e);
27488
            }
27489
            frmPanel.hide();
27490
            //this.onCancelClick();
27491
        } else {
27492
            fieldNames = [];
27493
            fields = this.getInvalidFields(frmPanel);
27494
            for (var i = 0; i < fields.length; i++) {
27495
                field = fields[i];
27496
                fieldNames.push(i + 1 + '. ' + field.fieldLabel + ' (' + field.activeErrors[0] + ')');
27497
            }
27498
            console.debug(fieldNames);
27499
            Ext.MessageBox.alert('Invalid Fields', 'The following fields are invalid: </br> ' + fieldNames.join(' </br>'));
27500
        }
27501
    },
27502

    
27503
    onCancelClick: function () {
27504
        //this.getView().remove(this.dialog);
27505
        //this.dialog = null;
27506
        var frmPanel = this.getView();
27507
        //frmPanel.reset();
27508
        frmPanel.hide();
27509
    },
27510

    
27511
    getInvalidFields: function (frmPanel) {
27512
        var invalidFields = [];
27513
        Ext.suspendLayouts();
27514
        frmPanel.getForm().getFields().filterBy(function (field) {
27515
            if (field.validate()) return;
27516
            invalidFields.push(field);
27517
        });
27518
        Ext.resumeLayouts(true);
27519
        return invalidFields;
27520
    },
27521
});
27522

    
27523
/*Form ESS Generator Layout: Auto if just 1 column YN 20211216*/
27524
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm1', {
27525
    extend: 'Ext.form.Panel',
27526
    alias: ['widget.MinovaWorkflowForm1', 'widget.minovaworkflowform1', 'widget.workflowform1'],
27527
    formname: this.name,
27528
    bizprocid: undefined,
27529
    bizflowid: undefined,
27530
    taskid: undefined,
27531
    tableName: undefined,
27532
    tableNameT: undefined,
27533
    parentKey: undefined,
27534
    titleform: undefined,
27535
    name: undefined,
27536
    labelAlign: 'left',
27537
    labelWidth: 150,
27538
    labelSeparator: undefined,
27539
    //resizable: true,
27540
    border: true,
27541
    autoScroll: true,
27542
    minHeight: 20,
27543
    marginDefault: 10,
27544
    layout: {
27545
        type: (isDesk == true) ? 'hbox': 'auto'
27546
    },
27547
    listeners: {
27548
        render: function () {
27549
            if (this.titleform != undefined) {
27550
                this.setTitle(this.titleform);
27551
            }
27552
        },
27553
    },
27554
    defaults: {
27555
        layout: 'anchor',
27556
        xtype: 'container',
27557
        flex: 1,
27558
        margin: this.marginDefault,
27559
        //defaultType: 'textfield',
27560
        //anchor: '100%',
27561
        ////style: 'width: 50%',
27562
    },
27563
    initComponent: function () {
27564
        var col1 = [];
27565
        var col2 = [];
27566
        var me = this;
27567
        var LangID = localStorage.LangId;
27568
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
27569
        var formname_ = me.name;
27570
        var nameTable_ = me.tableName;
27571
        var labelWidth = me.labelWidth;
27572
        Ext.Ajax.request({
27573
            async: false,
27574
            method: 'POST',
27575
            url: '/UserControl/GetStore',
27576
            params: {
27577
                tableName: 'PDSWFSTRUCTUREFIELD',
27578
                param: parameter
27579
            },
27580
            success: function (response) {
27581
                var results = Ext.decode(response.responseText);
27582
                hasil = results.data;
27583
            }
27584
        });
27585
        if (hasil.length > 0) {
27586
            Ext.each(hasil, function (rec) {
27587
                var formfield = undefined;
27588
                var readonly = false;
27589
                var ishidden = false;
27590
                var allowblank = true;
27591
                var startDt = null;
27592
                var endDt = null;
27593
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27594
                    startDt = 'StartDate';
27595
                    endDt = 'EndDate';
27596
                }
27597
                if (rec.IsReadOnly == '1') {
27598
                    readonly = true;
27599
                }
27600
                if (rec.IsRequired == '1') {
27601
                    allowblank = false;
27602
                }
27603
                if (rec.IsVisible == '0') {
27604
                    ishidden = true;
27605
                }
27606
                if (rec.SearchType == "") //textfield
27607
                {
27608
                    switch (rec.FormatRef) {
27609
                        case "date":
27610
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27611
                                formfield = new Ext.form.DateField({
27612
                                    allowBlank: allowblank,
27613
                                    fieldLabel: rec.ScreenCaption,
27614
                                    readOnly: readonly,
27615
									
27616
									//Start for mobile by saswanto
27617
									editable:readonly,
27618
									plugins: 'responsive',
27619
									responsiveConfig: {
27620
										personalizedWide:{}
27621
									},    
27622
									responsiveFormulas: {
27623
										personalizedWide: function (context,layout) {
27624
											if (context.width <= 600){
27625
												this.cmp.setEditable(false);
27626
												return true;
27627
											}
27628
										}
27629
									},							
27630
									//Start for mobile by saswanto									
27631
									
27632
                                    msgTarget: 'side',
27633
                                    //labelCls: 'label-minova',
27634
                                    labelWidth: labelWidth,
27635
                                    hidden: ishidden,
27636
                                    name: rec.FieldName,
27637
                                    submitFormat: 'Ymd',
27638
                                    value: rec.DefaultValue,
27639
                                    anchor: '100%',
27640
                                    vtype: 'daterange',
27641
                                    start: startDt,
27642
                                    end: endDt,
27643
                                    formname: formname_,
27644
                                    nameTable: nameTable_,
27645
                                    hideMode: 'visibility',
27646
                                    listeners: {
27647
                                        change: function (val) {
27648
                                            var _label = val.name;
27649
                                            var _form = val.formname;
27650
                                            var _Value = val.getValue();
27651
                                            var target = rec.TriggerCombo;
27652
                                            var custumFunc = rec.SelectFunction;
27653
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27654
                                                Ext.Ajax.request({
27655
                                                    async: false,
27656
                                                    method: 'POST',
27657
                                                    url: '/UserControl/GetStore',
27658
                                                    params: {
27659
                                                        tableName: 'PCMFUNC',
27660
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27661
                                                    },
27662
                                                    success: function (response) {
27663
                                                        var results = Ext.decode(response.responseText);
27664
                                                        data_ = results.data[0];
27665
                                                        if (data_ != undefined) {
27666
                                                            custumFunc = data_.FunctionCode;
27667
                                                        }
27668
                                                    }
27669
                                                });
27670
                                            }
27671
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27672
                                            if (frm) {
27673
                                                if (custumFunc) {
27674
                                                    eval(custumFunc)
27675
                                                }
27676
                                            }
27677
                                        }
27678
                                    }
27679
                                });
27680
                            } else {
27681
                                formfield = new Ext.form.DateField({
27682
                                    allowBlank: allowblank,
27683
                                    fieldLabel: rec.ScreenCaption,
27684
                                    readOnly: readonly,
27685
									
27686
									//Start for mobile by saswanto
27687
									editable:readonly,
27688
									plugins: 'responsive',
27689
									responsiveConfig: {
27690
										personalizedWide:{}
27691
									},    
27692
									responsiveFormulas: {
27693
										personalizedWide: function (context,layout) {
27694
											if (context.width <= 600){
27695
												this.cmp.setEditable(false);
27696
												return true;
27697
											}
27698
										}
27699
									},							
27700
									//Start for mobile by saswanto									
27701
									
27702
                                    msgTarget: 'side',
27703
                                    //labelCls: 'label-minova',
27704
                                    labelWidth: labelWidth,
27705
                                    hidden: ishidden,
27706
                                    name: rec.FieldName,
27707
                                    submitFormat: 'Ymd',
27708
                                    value: rec.DefaultValue,
27709
                                    anchor: '100%',
27710
                                    formname: formname_,
27711
                                    nameTable: nameTable_,
27712
                                    hideMode: 'visibility',
27713
                                    listeners: {
27714
                                        change: function (val) {
27715
                                            var _label = val.name;
27716
                                            var _form = val.formname;
27717
                                            var _Value = val.getValue();
27718
                                            var target = rec.TriggerCombo;
27719
                                            var custumFunc = rec.SelectFunction;
27720
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27721
                                                Ext.Ajax.request({
27722
                                                    async: false,
27723
                                                    method: 'POST',
27724
                                                    url: '/UserControl/GetStore',
27725
                                                    params: {
27726
                                                        tableName: 'PCMFUNC',
27727
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27728
                                                    },
27729
                                                    success: function (response) {
27730
                                                        var results = Ext.decode(response.responseText);
27731
                                                        data_ = results.data[0];
27732
                                                        if (data_ != undefined) {
27733
                                                            custumFunc = data_.FunctionCode;
27734
                                                        }
27735
                                                    }
27736
                                                });
27737
                                            }
27738
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27739
                                            if (frm) {
27740
                                                if (custumFunc) {
27741
                                                    eval(custumFunc)
27742
                                                }
27743
                                            }
27744
                                        }
27745
                                    }
27746
                                });
27747
                            }
27748
                            break;
27749
                        case "time":
27750
                            formfield = new Ext.form.TimeField({
27751
                                allowBlank: allowblank,
27752
                                fieldLabel: rec.ScreenCaption,
27753
                                readOnly: readonly,
27754
								
27755
								//Start for mobile by saswanto
27756
								editable:readonly,
27757
								plugins: 'responsive',
27758
								responsiveConfig: {
27759
									personalizedWide:{}
27760
								},    
27761
								responsiveFormulas: {
27762
									personalizedWide: function (context,layout) {
27763
										if (context.width <= 600){
27764
											this.cmp.setEditable(false);
27765
											return true;
27766
										}
27767
									}
27768
								},							
27769
								//Start for mobile by saswanto								
27770
								
27771
                                //labelCls: 'label-minova',
27772
                                labelWidth: labelWidth,
27773
                                hidden: ishidden,
27774
                                name: rec.FieldName,
27775
                                msgTarget: 'side',
27776
                                format: 'Hi',
27777
                                submitFormat: 'Hi',
27778
                                increment: 5,
27779
                                value: rec.DefaultValue,
27780
                                anchor: '100%',
27781
                                formname: formname_,
27782
                                nameTable: nameTable_,
27783
                                listeners: {
27784
                                    change: function (val) {
27785
                                        var _label = val.name;
27786
                                        var _form = val.formname;
27787
                                        var _Value = val.getValue();
27788
                                        var target = rec.TriggerCombo;
27789
                                        var custumFunc = rec.SelectFunction;
27790
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27791
                                            Ext.Ajax.request({
27792
                                                async: false,
27793
                                                method: 'POST',
27794
                                                url: '/UserControl/GetStore',
27795
                                                params: {
27796
                                                    tableName: 'PCMFUNC',
27797
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
27798
                                                },
27799
                                                success: function (response) {
27800
                                                    var results = Ext.decode(response.responseText);
27801
                                                    data_ = results.data[0];
27802
                                                    if (data_ != undefined) {
27803
                                                        custumFunc = data_.FunctionCode;
27804
                                                    }
27805
                                                }
27806
                                            });
27807
                                        }
27808
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27809
                                        if (frm) {
27810
                                            if (custumFunc) {
27811
                                                eval(custumFunc)
27812
                                            }
27813
                                        }
27814
                                    }
27815
                                }
27816
                            });
27817
                            break;
27818
                        case "amount":
27819
                            formfield = new Ext.form.TextField({
27820
                                allowBlank: allowblank,
27821
                                fieldLabel: rec.ScreenCaption,
27822
                                readOnly: readonly,
27823
                                //labelCls: 'label-minova',
27824
                                labelWidth: labelWidth,
27825
                                hidden: ishidden,
27826
                                name: rec.FieldName,
27827
                                msgTarget: 'side',
27828
                                value: rec.DefaultValue,
27829
                                maxLength: rec.Length,
27830
                                anchor: '100%',
27831
                                formname: formname_,
27832
                                nameTable: nameTable_,
27833
                                fieldStyle: 'text-align:right;',
27834
                                listeners: {
27835
                                    change: function (val) {
27836
                                        var _label = val.name;
27837
                                        var _form = val.formname;
27838
                                        var _Value = val.getValue();
27839
                                        var target = rec.TriggerCombo;
27840
                                        var custumFunc = rec.SelectFunction;
27841
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27842
                                            Ext.Ajax.request({
27843
                                                async: false,
27844
                                                method: 'POST',
27845
                                                url: '/UserControl/GetStore',
27846
                                                params: {
27847
                                                    tableName: 'PCMFUNC',
27848
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27849
                                                },
27850
                                                success: function (response) {
27851
                                                    var results = Ext.decode(response.responseText);
27852
                                                    data_ = results.data[0];
27853
                                                    if (data_ != undefined) {
27854
                                                        custumFunc = data_.FunctionCode;
27855
                                                    }
27856
                                                }
27857
                                            });
27858
                                        }
27859
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27860
                                        if (frm) {
27861
                                            if (custumFunc) {
27862
                                                eval(custumFunc)
27863
                                            }
27864
                                        }
27865
                                    }
27866
                                }
27867
                            });
27868
                            break;
27869
                        case "file":
27870
                            formfield = new MinovaUtil.MinovaES.UploadFile({
27871
                                allowBlank: allowblank,
27872
                                fieldLabel: rec.ScreenCaption,
27873
                                readOnly: readonly,
27874
                                readOnlyCls: 'minova-readonly',
27875
                                hidden: ishidden,
27876
                                //labelCls: 'label-minova',
27877
                                name: rec.FieldName,
27878
                                msgTarget: 'side',
27879
                                fieldname: rec.FieldName,
27880
                                IsPrimaryKey: rec.IsPrimaryKey,
27881
                                tableName: rec.TableRef,
27882
                                triggerCls: 'x-form-search-trigger',
27883
                                formtarget: me.formname,
27884
                                anchor: '100%',
27885
                                formname: formname_,
27886
                                nameTable: nameTable_,
27887
                                listeners: {
27888
                                    change: function (val) {
27889
                                        var _label = val.name;
27890
                                        var _form = val.formname;
27891
                                        var _Value = val.getValue();
27892
                                        var target = rec.TriggerCombo;
27893
                                        var custumFunc = rec.SelectFunction;
27894
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27895
                                            Ext.Ajax.request({
27896
                                                async: false,
27897
                                                method: 'POST',
27898
                                                url: '/UserControl/GetStore',
27899
                                                params: {
27900
                                                    tableName: 'PCMFUNC',
27901
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27902
                                                },
27903
                                                success: function (response) {
27904
                                                    var results = Ext.decode(response.responseText);
27905
                                                    data_ = results.data[0];
27906
                                                    if (data_ != undefined) {
27907
                                                        custumFunc = data_.FunctionCode;
27908
                                                    }
27909
                                                }
27910
                                            });
27911
                                        }
27912
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27913
                                        if (frm) {
27914
                                            if (target) {
27915
                                                var f = frm.getForm().findField(target)
27916
                                                _store = f.getStore();
27917
                                                var _tbl = _store.proxy.extraParams.tableName;
27918
                                                var oldParam = _store.proxy.extraParams.param;
27919
                                                _store.proxy.extraParams = {
27920
                                                    tableName: _tbl,
27921
                                                    param: _label + '[=]' + _Value
27922
                                                };
27923
                                                _store.load();
27924
                                            }
27925
                                            if (custumFunc) {
27926
                                                eval(custumFunc)
27927
                                            }
27928
                                        }
27929
                                    }
27930
                                }
27931
                            });
27932
                            break;
27933
                        default:
27934
                            if (rec.DataType == 0) {
27935
                                if (rec.Length > 250) {
27936
                                    formfield = new Ext.form.TextArea({
27937
                                        allowBlank: allowblank,
27938
                                        fieldLabel: rec.ScreenCaption,
27939
                                        readOnly: readonly,
27940
                                        labelAlign: me.labelAlign,
27941
                                        labelSeparator: me.labelSeparator,
27942
                                        //labelCls: 'label-minova',
27943
                                        labelWidth: labelWidth,
27944
                                        hidden: ishidden,
27945
                                        name: rec.FieldName,
27946
                                        msgTarget: 'side',
27947
                                        value: rec.DefaultValue,
27948
                                        maxLength: rec.Length,
27949
                                        anchor: '100%',
27950
                                        grow: true,
27951
                                        formname: formname_,
27952
                                        nameTable: nameTable_,
27953
                                        listeners: {
27954
                                            change: function (val) {
27955
                                                var _label = val.name;
27956
                                                var _form = val.formname;
27957
                                                var _Value = val.getValue();
27958
                                                var target = rec.TriggerCombo;
27959
                                                var custumFunc = rec.SelectFunction;
27960
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27961
                                                    Ext.Ajax.request({
27962
                                                        async: false,
27963
                                                        method: 'POST',
27964
                                                        url: '/UserControl/GetStore',
27965
                                                        params: {
27966
                                                            tableName: 'PCMFUNC',
27967
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27968
                                                        },
27969
                                                        success: function (response) {
27970
                                                            var results = Ext.decode(response.responseText);
27971
                                                            data_ = results.data[0];
27972
                                                            if (data_ != undefined) {
27973
                                                                custumFunc = data_.FunctionCode;
27974
                                                            }
27975
                                                        }
27976
                                                    });
27977
                                                }
27978
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27979
                                                if (frm) {
27980
                                                    if (custumFunc) {
27981
                                                        eval(custumFunc)
27982
                                                    }
27983
                                                }
27984
                                            }
27985
                                        }
27986
                                    });
27987
                                } else {
27988
                                    if (rec.FixedValue != '') {
27989
                                        var storeData = [];
27990
                                        var str = rec.FixedValue;
27991
                                        var hasil = str.split('||');
27992
                                        hasil.forEach(function (h) {
27993
                                            store_ = h.split('=')
27994
                                            storeData.push({
27995
                                                code: store_[0],
27996
                                                desc: store_[1],
27997
                                            });
27998
                                        });
27999
                                        formfield = new Ext.form.ComboBox({
28000
                                            allowBlank: allowblank,
28001
                                            fieldLabel: rec.ScreenCaption,
28002
                                            forceSelection: true,
28003
                                            readOnly: readonly,
28004
                                            //labelCls: 'label-minova',
28005
                                            labelWidth: labelWidth,
28006
                                            hidden: ishidden,
28007
                                            name: rec.FieldName,
28008
                                            msgTarget: 'side',
28009
                                            value: rec.DefaultValue,
28010
                                            anchor: '100%',
28011
                                            formname: formname_,
28012
                                            nameTable: nameTable_,
28013
                                            formtarget: me.formname,
28014
                                            store: Ext.create('Ext.data.Store', {
28015
                                                storeId: 'store' + rec.FieldName,
28016
                                                autoLoad: true,
28017
                                                data: storeData
28018

    
28019
                                            }),
28020
                                            listeners: {
28021
                                                change: function (val) {
28022
                                                    var _label = val.name;
28023
                                                    var _form = val.formtarget;
28024
                                                    var _Value = val.getValue();
28025
                                                    var target = rec.TriggerCombo;
28026
                                                    var custumFunc = rec.SelectFunction;
28027
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28028
                                                    if (frm) {
28029
                                                        if (target) {
28030
                                                            var f = frm.getForm().findField(target)
28031
                                                            _store = f.getStore();
28032
                                                            var _tbl = _store.proxy.extraParams.tableName;
28033
                                                            var oldParam = _store.proxy.extraParams.param;
28034
                                                            _store.proxy.extraParams = {
28035
                                                                tableName: _tbl,
28036
                                                                param: _label + '[=]' + _Value
28037
                                                            };
28038
                                                            _store.load();
28039
                                                        }
28040
                                                        if (custumFunc) {
28041
                                                            eval(custumFunc)
28042
                                                        }
28043
                                                    }
28044
                                                }
28045
                                            },
28046
                                            queryMode: 'local',
28047
                                            valueField: 'code',
28048
                                            displayField: 'desc',
28049
                                        });
28050
                                    } else {
28051
                                        formfield = new Ext.form.TextField({
28052
                                            allowBlank: allowblank,
28053
                                            fieldLabel: rec.ScreenCaption,
28054
                                            readOnly: readonly,
28055
                                            //labelCls: 'label-minova',
28056
                                            labelWidth: labelWidth,
28057
                                            hidden: ishidden,
28058
                                            name: rec.FieldName,
28059
                                            msgTarget: 'side',
28060
                                            value: rec.DefaultValue,
28061
                                            maxLength: rec.Length,
28062
                                            anchor: '100%',
28063
                                            formname: formname_,
28064
                                            nameTable: nameTable_,
28065
                                            listeners: {
28066
                                                change: function (val) {
28067
                                                    var _label = val.name;
28068
                                                    var _form = val.formname;
28069
                                                    var _Value = val.getValue();
28070
                                                    var target = rec.TriggerCombo;
28071
                                                    var custumFunc = rec.SelectFunction;
28072
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28073
                                                        Ext.Ajax.request({
28074
                                                            async: false,
28075
                                                            method: 'POST',
28076
                                                            url: '/UserControl/GetStore',
28077
                                                            params: {
28078
                                                                tableName: 'PCMFUNC',
28079
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28080
                                                            },
28081
                                                            success: function (response) {
28082
                                                                var results = Ext.decode(response.responseText);
28083
                                                                data_ = results.data[0];
28084
                                                                if (data_ != undefined) {
28085
                                                                    custumFunc = data_.FunctionCode;
28086
                                                                }
28087
                                                            }
28088
                                                        });
28089
                                                    }
28090
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28091
                                                    if (frm) {
28092
                                                        if (custumFunc) {
28093
                                                            eval(custumFunc)
28094
                                                        }
28095
                                                    }
28096
                                                }
28097
                                            }
28098
                                        });
28099
                                    }
28100
                                }
28101
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
28102
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
28103
                                    allowBlank: allowblank,
28104
                                    fieldLabel: rec.ScreenCaption,
28105
                                    readOnly: readonly,
28106
                                    //labelCls: 'label-minova',
28107
                                    labelWidth: labelWidth,
28108
                                    msgTarget: 'side',
28109
                                    hidden: ishidden,
28110
                                    name: rec.FieldName,
28111
                                    value: rec.DefaultValue,
28112
                                    maxLength: rec.Length,
28113
                                    anchor: '100%',
28114
                                    formname: formname_,
28115
                                    nameTable: nameTable_,
28116
                                    fieldStyle: 'text-align:right;',
28117
                                    listeners: {
28118
                                        change: function (val) {
28119
                                            var _label = val.name;
28120
                                            var _form = val.formname;
28121
                                            var _Value = val.getValue();
28122
                                            var target = rec.TriggerCombo;
28123
                                            var custumFunc = rec.SelectFunction;
28124
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28125
                                                Ext.Ajax.request({
28126
                                                    async: false,
28127
                                                    method: 'POST',
28128
                                                    url: '/UserControl/GetStore',
28129
                                                    params: {
28130
                                                        tableName: 'PCMFUNC',
28131
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28132
                                                    },
28133
                                                    success: function (response) {
28134
                                                        var results = Ext.decode(response.responseText);
28135
                                                        data_ = results.data[0];
28136
                                                        if (data_ != undefined) {
28137
                                                            custumFunc = data_.FunctionCode;
28138
                                                        }
28139
                                                    }
28140
                                                });
28141
                                            }
28142
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28143
                                            if (frm) {
28144
                                                if (target) {
28145
                                                    var f = frm.getForm().findField(target)
28146
                                                    _store = f.getStore();
28147
                                                    var _tbl = _store.proxy.extraParams.tableName;
28148
                                                    var oldParam = _store.proxy.extraParams.param;
28149
                                                    _store.proxy.extraParams = {
28150
                                                        tableName: _tbl,
28151
                                                        param: _label + '[=]' + _Value
28152
                                                    };
28153
                                                    _store.load();
28154
                                                }
28155
                                                if (custumFunc) {
28156
                                                    eval(custumFunc)
28157
                                                }
28158
                                            }
28159
                                        }
28160
                                    }
28161
                                });
28162
                            } else if (rec.DataType == 3) {
28163
                                formfield = new Ext.form.TextField({
28164
                                    allowBlank: allowblank,
28165
                                    fieldLabel: rec.ScreenCaption,
28166
                                    readOnly: readonly,
28167
                                    //labelCls: 'label-minova',
28168
                                    labelWidth: labelWidth,
28169
                                    msgTarget: 'side',
28170
                                    hidden: ishidden,
28171
                                    name: rec.FieldName,
28172
                                    value: rec.DefaultValue,
28173
                                    maxLength: rec.Length,
28174
                                    precision: rec.Prec,
28175
                                    anchor: '100%',
28176
                                    formname: formname_,
28177
                                    nameTable: nameTable_,
28178
                                    fieldStyle: 'text-align:right;',
28179
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
28180
                                    listeners: {
28181
                                        change: function (val) {
28182
                                            var _label = val.name;
28183
                                            var _form = val.formname;
28184
                                            var _Value = val.getValue();
28185
                                            var target = rec.TriggerCombo;
28186
                                            var custumFunc = rec.SelectFunction;
28187
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28188
                                                Ext.Ajax.request({
28189
                                                    async: false,
28190
                                                    method: 'POST',
28191
                                                    url: '/UserControl/GetStore',
28192
                                                    params: {
28193
                                                        tableName: 'PCMFUNC',
28194
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28195
                                                    },
28196
                                                    success: function (response) {
28197
                                                        var results = Ext.decode(response.responseText);
28198
                                                        data_ = results.data[0];
28199
                                                        if (data_ != undefined) {
28200
                                                            custumFunc = data_.FunctionCode;
28201
                                                        }
28202
                                                    }
28203
                                                });
28204
                                            }
28205
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28206
                                            if (frm) {
28207
                                                if (target) {
28208
                                                    var f = frm.getForm().findField(target)
28209
                                                    _store = f.getStore();
28210
                                                    var _tbl = _store.proxy.extraParams.tableName;
28211
                                                    var oldParam = _store.proxy.extraParams.param;
28212
                                                    _store.proxy.extraParams = {
28213
                                                        tableName: _tbl,
28214
                                                        param: _label + '[=]' + _Value
28215
                                                    };
28216
                                                    _store.load();
28217
                                                }
28218
                                                if (custumFunc) {
28219
                                                    eval(custumFunc)
28220
                                                }
28221
                                            }
28222
                                        }
28223
                                    }
28224
                                });
28225
                            }
28226
                    }
28227
                } else if (rec.SearchType != "") {
28228
                    if (rec.SearchType == "0") //combobox
28229
                    {
28230
                        valueField = null;
28231
                        displayValue = null;
28232
                        if (rec.TableRef != "") {
28233
                            Ext.Ajax.request({
28234
                                async: false,
28235
                                method: 'POST',
28236
                                url: '/UserControl/GetStore',
28237
                                params: {
28238
                                    tableName: 'SDATATABLEFIELD',
28239
                                    param: 'TableName[equal]' + rec.TableRef
28240
                                },
28241
                                success: function (response) {
28242
                                    var results = Ext.decode(response.responseText);
28243
                                    data_ = results.data;
28244
                                    if (data_ != undefined) {
28245
                                        valueField_ = $.grep(data_, function (r) {
28246
                                            return r.ValueField == '1'
28247
                                        });
28248
                                        if (valueField_.length > 0) {
28249
                                            valueField = valueField_[0].FieldName
28250
                                        }
28251
                                        displayValue_ = $.grep(data_, function (r) {
28252
                                            return r.DisplayValue == '1'
28253
                                        });
28254
                                        if (displayValue_.length > 0) {
28255
                                            displayValue = displayValue_[0].FieldName
28256
                                        }
28257
                                    }
28258
                                }
28259
                            });
28260
                        }
28261
                        formfield = new Ext.form.ComboBox({
28262
                            allowBlank: allowblank,
28263
                            fieldLabel: rec.ScreenCaption,
28264
                            forceSelection: true,
28265
                            anyMatch: true,
28266
                            readOnly: readonly,
28267
							
28268
							//Start for mobile by saswanto
28269
							editable:readonly,
28270
							plugins: 'responsive',
28271
							responsiveConfig: {
28272
								personalizedWide:{}
28273
							},    
28274
							responsiveFormulas: {
28275
								personalizedWide: function (context,layout) {
28276
									if (context.width <= 600){
28277
										this.cmp.setEditable(false);
28278
										return true;
28279
									}
28280
								}
28281
							},							
28282
							//Start for mobile by saswanto
28283
							
28284
							
28285
                            //labelCls: 'label-minova',
28286
                            labelWidth: labelWidth,
28287
                            hidden: ishidden,
28288
                            msgTarget: 'side',
28289
                            name: rec.FieldName,
28290
                            formname: formname_,
28291
                            nameTable: nameTable_,
28292
                            value: rec.DefaultValue,
28293
                            anchor: '100%',
28294
                            store: Ext.create('Ext.data.Store', {
28295
                                storeId: 'store' + rec.FieldName,
28296
                                autoLoad: false,
28297
                                proxy: {
28298
                                    method: 'POST',
28299
                                    type: 'ajax',
28300
                                    url: '/UserControl/GetStore',
28301
                                    extraParams: {
28302
                                        tableName: rec.TableRef,
28303
                                        param: rec.ParamCombo
28304
                                    },
28305
                                    reader: {
28306
                                        type: 'json',
28307
                                        root: 'data',
28308
                                        totalProperty: 'data[0].TotalCount'
28309
                                    }
28310
                                }
28311
                            }),                            
28312
                            formtarget: formname_,
28313
                            listeners: {
28314
                                afterrender: function (f) {
28315
                                    var store_ = f.getStore();
28316
                                    store_.load();
28317
                                },
28318
                                change: function (val) {
28319
                                    var _label = val.name;
28320
                                    var _form = val.formtarget;
28321
                                    var _Value = val.getValue();
28322
                                    var target = rec.TriggerCombo;
28323
                                    var custumFunc = rec.SelectFunction;
28324
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28325
                                    if (frm) {
28326

    
28327
                                        if (target) {
28328
                                            var f = frm.getForm().findField(target)
28329
                                            _store = f.getStore();
28330
                                            var _tbl = _store.proxy.extraParams.tableName;
28331
                                            var oldParam = _store.proxy.extraParams.param;
28332
                                            _store.proxy.extraParams = {
28333
                                                tableName: _tbl,
28334
                                                param: _label + '[=]' + _Value
28335
                                            };
28336
                                            _store.load();
28337
                                        }
28338
                                        if (custumFunc) {
28339
                                            eval(custumFunc)
28340
                                        }
28341
                                    }
28342
                                }
28343
                            },
28344
                            queryMode: 'local',
28345
                            displayField: displayValue,
28346
                            valueField: valueField,
28347
                        });
28348
                    } else if (rec.SearchType == '2') //Lookup
28349
                    {
28350
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
28351
                            allowBlank: allowblank,
28352
                            fieldLabel: rec.ScreenCaption,
28353
                            readOnly: readonly,
28354
                            IsPrimaryKey: rec.IsPrimaryKey,
28355
                            msgTarget: 'side',
28356
                            //labelCls: 'label-minova',
28357
                            labelWidth: labelWidth,
28358
                            hidden: ishidden,
28359
                            name: rec.FieldName,
28360
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
28361
                            triggerCls: 'x-form-search-trigger',
28362
                            vtype: 'alphanum', // disable space
28363
                            formtarget: me.formname, // nama form  yang akan di set value-nya
28364
                            anchor: '100%',
28365
                            formname: formname_,
28366
                            nameTable: nameTable_,
28367
                            LookupFunction: rec.LookupFunction,
28368
                            SearchFunction: rec.SearchFunction,
28369
                            listeners: {
28370
                                change: function (val) {
28371
                                    var _label = val.name;
28372
                                    var _form = val.formname;
28373
                                    var _Value = val.getValue();
28374
                                    var target = rec.TriggerCombo;
28375
                                    var custumFunc = rec.SelectFunction;
28376
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28377
                                        Ext.Ajax.request({
28378
                                            async: false,
28379
                                            method: 'POST',
28380
                                            url: '/UserControl/GetStore',
28381
                                            params: {
28382
                                                tableName: 'PCMFUNC',
28383
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28384
                                            },
28385
                                            success: function (response) {
28386
                                                var results = Ext.decode(response.responseText);
28387
                                                data_ = results.data[0];
28388
                                                if (data_ != undefined) {
28389
                                                    custumFunc = data_.FunctionCode;
28390
                                                }
28391
                                            }
28392
                                        });
28393
                                    }
28394
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28395
                                    if (frm) {
28396

    
28397
                                        if (target) {
28398
                                            var f = frm.getForm().findField(target)
28399
                                            _store = f.getStore();
28400
                                            var _tbl = _store.proxy.extraParams.tableName;
28401
                                            var oldParam = _store.proxy.extraParams.param;
28402
                                            _store.proxy.extraParams = {
28403
                                                tableName: _tbl,
28404
                                                param: _label + '[=]' + _Value
28405
                                            };
28406
                                            _store.load();
28407
                                        }
28408

    
28409
                                        if (custumFunc) {
28410
                                            eval(custumFunc)
28411
                                        }
28412

    
28413
                                    }
28414

    
28415
                                },
28416

    
28417
                            },
28418
                        });
28419
                    } else if (rec.SearchType == '3') //lookup tree
28420
                    {
28421
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
28422
                            allowBlank: allowblank,
28423
                            fieldLabel: rec.ScreenCaption,
28424
                            readOnly: readonly,
28425
                            IsPrimaryKey: rec.IsPrimaryKey,
28426
                            //labelCls: 'label-minova',
28427
                            labelWidth: labelWidth,
28428
                            hidden: ishidden,
28429
                            name: rec.FieldName,
28430
                            msgTarget: 'side',
28431
                            triggerCls: 'x-form-search-trigger',
28432
                            treeSructure: rec.SearchFunction, //'O-O-P',
28433
                            objClassValue: rec.ParamCombo, //'O',
28434
                            formname: formname_,
28435
                            targetField: rec.FieldName,
28436
                            nameTable: nameTable_,
28437
                            editable: false,
28438
                            anchor: '100%',
28439
                            listeners: {
28440
                                change3: function (val) {
28441
                                    var _label = val.name;
28442
                                    var _form = val.formname;
28443
                                    var _Value = val.getValue();
28444
                                    var target = rec.TriggerCombo;
28445
                                    var custumFunc = rec.SelectFunction;
28446
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28447
                                        Ext.Ajax.request({
28448
                                            async: false,
28449
                                            method: 'POST',
28450
                                            url: '/UserControl/GetStore',
28451
                                            params: {
28452
                                                tableName: 'PCMFUNC',
28453
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28454
                                            },
28455
                                            success: function (response) {
28456
                                                var results = Ext.decode(response.responseText);
28457
                                                data_ = results.data[0];
28458
                                                if (data_ != undefined) {
28459
                                                    custumFunc = data_.FunctionCode;
28460
                                                }
28461
                                            }
28462
                                        });
28463
                                    }
28464
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28465
                                    if (frm) {
28466

    
28467
                                        if (target) {
28468
                                            var f = frm.getForm().findField(target)
28469
                                            _store = f.getStore();
28470
                                            var _tbl = _store.proxy.extraParams.tableName;
28471
                                            var oldParam = _store.proxy.extraParams.param;
28472
                                            _store.proxy.extraParams = {
28473
                                                tableName: _tbl,
28474
                                                param: _label + '[=]' + _Value
28475
                                            };
28476
                                            _store.load();
28477
                                        }
28478
                                        if (custumFunc) {
28479
                                            eval(custumFunc)
28480
                                        }
28481
                                    }
28482
                                },
28483
                                blur: function (val) {
28484
                                    //if(val.value.split('-').length != 2){
28485
                                    var _label = val.name;
28486
                                    var _form = val.formname;
28487
                                    var _Value = val.getValue();
28488
                                    var target = rec.TriggerCombo;
28489
                                    var custumFunc = rec.SelectFunction;
28490
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28491
                                        Ext.Ajax.request({
28492
                                            async: false,
28493
                                            method: 'POST',
28494
                                            url: '/UserControl/GetStore',
28495
                                            params: {
28496
                                                tableName: 'PCMFUNC',
28497
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28498
                                            },
28499
                                            success: function (response) {
28500
                                                var results = Ext.decode(response.responseText);
28501
                                                data_ = results.data[0];
28502
                                                if (data_ != undefined) {
28503
                                                    custumFunc = data_.FunctionCode;
28504
                                                }
28505
                                            }
28506
                                        });
28507
                                    }
28508
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28509
                                    if (frm) {
28510

    
28511
                                        if (target) {
28512
                                            var f = frm.getForm().findField(target)
28513
                                            _store = f.getStore();
28514
                                            var _tbl = _store.proxy.extraParams.tableName;
28515
                                            var oldParam = _store.proxy.extraParams.param;
28516
                                            _store.proxy.extraParams = {
28517
                                                tableName: _tbl,
28518
                                                param: _label + '[=]' + _Value
28519
                                            };
28520
                                            _store.load();
28521
                                        }
28522
                                        if (custumFunc) {
28523
                                            eval(custumFunc)
28524
                                        }
28525
                                    }
28526
                                    //}
28527
                                }
28528

    
28529
                            }
28530
                        });
28531
                    } else if (rec.SearchType == '10') //Checkboxgroup
28532
                    {
28533
                        if (rec.TableRef != "") {
28534
                            Ext.Ajax.request({
28535
                                async: false,
28536
                                method: 'POST',
28537
                                url: '/UserControl/GetStore',
28538
                                params: {
28539
                                    tableName: 'SDATATABLEFIELD',
28540
                                    param: 'TableName[equal]' + rec.TableRef
28541
                                },
28542
                                success: function (response) {
28543
                                    var results = Ext.decode(response.responseText);
28544
                                    data_ = results.data;
28545
                                    if (data_ != undefined) {
28546
                                        valueField_ = $.grep(data_, function (r) {
28547
                                            return r.ValueField == '1'
28548
                                        });
28549
                                        if (valueField_.length > 0) {
28550
                                            valueField = valueField_[0].FieldName
28551
                                        }
28552
                                        displayValue_ = $.grep(data_, function (r) {
28553
                                            return r.DisplayValue == '1'
28554
                                        });
28555
                                        if (displayValue_.length > 0) {
28556
                                            displayValue = displayValue_[0].FieldName
28557
                                        }
28558
                                    }
28559
                                }
28560
                            });
28561
                        }
28562
                        formfield = new MinovaUtil.MinovaES.StoreCheckboxGroup({
28563
                            //xtype: 'storecheckboxgroup',
28564
                            //allowBlank: allowblank,
28565
                            name: 'cbg' + rec.FieldName,
28566
                            nametxt: rec.FieldName,
28567
                            formname: formname_,
28568
                            nameTable: nameTable_,
28569
                            value: rec.DefaultValue,
28570
                            fieldLabel: rec.ScreenCaption,
28571
                            labelAlign: me.labelAlign,
28572
                            labelSeparator: me.labelSeparator,
28573
                            readOnly: readonly,
28574
                            //forceSelection: true,
28575
                            //anyMatch: true,
28576
                            //readOnly: readonly,
28577
                            ////labelCls: 'label-minova',
28578
                            labelWidth: labelWidth,
28579
                            //hidden: ishidden,
28580
                            //msgTarget: 'side',
28581
                            //name: rec.FieldName,
28582
                            //formname: formname_,
28583
                            //nameTable: nameTable_,
28584
                            //value: rec.DefaultValue,
28585
                            //width: '95%',
28586
                            store: Ext.create('Ext.data.Store', {
28587
                                storeId: 'store' + rec.FieldName,
28588
                                autoLoad: true,
28589
                                proxy: {
28590
                                    method: 'POST',
28591
                                    type: 'ajax',
28592
                                    url: '/UserControl/GetStore',
28593
                                    extraParams: {
28594
                                        tableName: rec.TableRef,
28595
                                        param: rec.ParamCombo
28596
                                    },
28597
                                    reader: {
28598
                                        type: 'json',
28599
                                        root: 'data',
28600
                                        totalProperty: 'data[0].TotalCount'
28601
                                    }
28602
                                }
28603
                            }),
28604
                            //formtarget: formname_,
28605
                            columns: 2,
28606
                            vertical: true,
28607
                            mapFn: function (storeItem) {
28608
                                var txfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode + ']')[0];
28609
                                var txvalue = '';
28610
                                if (txfield) txvalue = txfield.value;
28611
                                var cbfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode + ']')[0];
28612
                                var cbchecked = false;
28613
                                if (cbfield) cbchecked = (cbfield.value === 'true');
28614
                                return {
28615
                                    // Here, we define which store fields map 
28616
                                    // to which checkbox configuration property.
28617
                                    // The field "label" should map to boxLabel
28618
                                    // The field "value" should map to inputValue
28619
                                    // xtype and name are hardcoded for all checkboxes in this group.
28620
                                    xtype: 'container',
28621
                                    items: [
28622
                                        {
28623
                                            xtype: 'checkbox',
28624
                                            boxLabel: storeItem.data.ProblemDesc,
28625
                                            name: 'cb_' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
28626
                                            nametxt: rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
28627
                                            formname: formname_,
28628
                                            nameTable: nameTable_,
28629
                                            readOnly: readonly,
28630
                                            isshowtext: storeItem.data.IsShowText,
28631
                                            inputValue: storeItem.data.ProblemCode,
28632
                                            checked: cbchecked,
28633
                                            listeners: {
28634
                                                click: {
28635
                                                    element: 'el', //bind to the underlying el property on the panel
28636
                                                    fn: function (id) {
28637
                                                        var MyComp = Ext.getCmp(this.id);
28638
                                                        var frmForm = Ext.ComponentQuery.query('[name=tx_' + this.el.component.nametxt.replace("_CB_", "_TX_") + ']')[0];
28639
                                                        if (this.el.component.isshowtext == '1') {
28640
                                                            frmForm.setHidden(!MyComp.checked);
28641
                                                            frmForm.setValue('');
28642
                                                        }
28643
                                                        var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28644
                                                        cb_.setValue(MyComp.checked);
28645
                                                    }
28646
                                                },
28647
                                                //change: function (val) {
28648
                                                //    alert('ok');
28649
                                                //},
28650
                                            }
28651
                                        }, {
28652
                                            xtype: 'textareafield',
28653
                                            name: 'tx_' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28654
                                            nametxt: rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28655
                                            formname: formname_,
28656
                                            nameTable: nameTable_,
28657
                                            readOnly: readonly,
28658
                                            width: '100%',
28659
                                            value: txvalue,
28660
                                            hidden: !((storeItem.data.IsShowText === '1') && (cbchecked)),
28661
                                            listeners: {
28662
                                                change: function (id, newValue, oldValue, eOpts) {
28663
                                                    var frmForm = Ext.ComponentQuery.query('[name=' + id.nametxt + ']')[0];
28664
                                                    frmForm.setValue(newValue);
28665
                                                },
28666
                                            }
28667
                                        }]
28668
                                };
28669
                            }
28670
                        });
28671
                    } else if (rec.SearchType == '11') //Checkbox
28672
                    {
28673
                        formfield = new Ext.Container({
28674
                            items: [
28675
                                {
28676
                                    xtype: 'checkbox',
28677
                                    boxLabel: rec.ScreenCaption,
28678
                                    name: 'cb_' + rec.FieldName,
28679
                                    nametxt: rec.FieldName,
28680
                                    hidden: ishidden,
28681
                                    readOnly: readonly,
28682
                                    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28683
                                    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28684
                                    listeners: {
28685
                                        click: {
28686
                                            element: 'el', //bind to the underlying el property on the panel
28687
                                            fn: function (id) {
28688
                                                var MyComp = Ext.getCmp(this.id);
28689
                                                var frmForm = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28690
                                                frmForm.setValue(MyComp.checked);
28691
                                            }
28692
                                        }
28693
                                    }
28694
                                },
28695
                                {
28696
                                    xtype: 'textfield',
28697
                                    name: rec.FieldName,
28698
                                    namecb: 'cb_' + rec.FieldName,
28699
                                    formname: formname_,
28700
                                    nameTable: nameTable_,
28701
                                    readOnly: readonly,
28702
                                    value: rec.DefaultValue,
28703
                                    hidden: true,
28704
                                    listeners: {
28705
                                        change: function (id, newValue, oldValue, eOpts) {
28706
                                            var cbfield = Ext.ComponentQuery.query('[name=' + id.namecb + ']')[0];
28707
                                            var cbchecked = false;
28708
                                            if (cbfield) cbchecked = (newValue === 'true');
28709
                                            cbfield.setValue(cbchecked);
28710
                                        },
28711
                                    }
28712
                                }]
28713
                            
28714
                        })
28715
                        //formfield = new Ext.form.field.Checkbox({
28716
                        //    boxLabel: rec.ScreenCaption,
28717
                        //    name: rec.FieldName,
28718
                        //    name: 'cb_' + rec.FieldName,
28719
                        //    nametxt: rec.FieldName,
28720
                        //    hidden: ishidden,
28721
                        //    readOnly: readonly,
28722
                        //    name: rec.FieldName,
28723
                        //    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28724
                        //    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28725
                        //    listeners: {
28726
                        //        click: {
28727
                        //            element: 'el', //bind to the underlying el property on the panel
28728
                        //            fn: function (id) {
28729
                        //                var MyComp = Ext.getCmp(this.id);
28730
                        //                var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28731
                        //                cb_.setValue(MyComp.checked);
28732
                        //            }
28733
                        //        }
28734
                        //    }
28735
                        //    //value: rec.DefaultValue,
28736
                        //})
28737
                    }
28738
                }
28739
                if (isDesk) {
28740
                    if (rec.ColumnNo == 1) {
28741
                        col1.push(formfield);
28742
                    } else {
28743
                        col2.push(formfield);
28744
                    }
28745
                } else {
28746
                    col1.push(formfield);
28747
                }
28748

    
28749
            });
28750
        }
28751
        Ext.applyIf(me, {
28752
            items:
28753
                [
28754
                    {
28755
                        //width: 450,
28756
                        //style: 'width: 50%',
28757
                        defaults: {
28758
                            layout: 'anchor',
28759
                            xtype: 'container',
28760
                            flex: 1,
28761
                            margin: me.marginDefault,
28762
                            //defaultType: 'textfield',
28763
                            //anchor: '100%',
28764
                            ////style: 'width: 50%',
28765
                        },
28766
                        items: col1,
28767
                        flex: 1,
28768
                    },
28769
                    {
28770
                        //width: 450,
28771
                        //style: 'width: 50%',
28772
                        defaults: {
28773
                            layout: 'anchor',
28774
                            xtype: 'container',
28775
                            flex: 1,
28776
                            margin: me.marginDefault,
28777
                            //defaultType: 'textfield',
28778
                            //anchor: '100%',
28779
                            ////style: 'width: 50%',
28780
                        },
28781
                        items: col2,
28782
                        flex: 1,
28783
                    }
28784
                ]
28785
        });
28786
        this.callParent();
28787
    }
28788
});
28789

    
28790
/*EditableGrid ESS Generator YN 20211216 */
28791
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid2', {
28792
    extend: 'Ext.form.Panel',
28793
    alias: ['widget.minovaworkfloweditablegrid2', 'widget.workfloweditablegrid2'],
28794
    requires: [
28795
        'Ext.grid.plugin.CellEditing',
28796
        'Ext.grid.RowNumberer',
28797
        'Ext.grid.Panel',
28798
    ],
28799
    cls: 'grid-ess',
28800
    anchor: '100%',
28801
    tableName: undefined,
28802
    hideButton: undefined,
28803
    multiSelect: undefined,
28804
    formname: this.name,
28805
    bizprocid: undefined,
28806
    bizflowid: undefined,
28807
    taskid: undefined,
28808
    features: undefined,
28809
    minHeight: undefined,
28810
    maxHeight: undefined,
28811
    headerLayout: undefined,
28812
    summaryType: undefined,
28813
    initComponent: function () {
28814
        var me = this;
28815
        var isLookup = me.isLookup;
28816
        var hide_ = false;
28817
        var widthLock = 250;
28818
        var checkSelection = '';
28819
        if (me.hideButton == true) {
28820
            hide_ = true;
28821
        }
28822
        if (me.multiSelect) {
28823
            locking = false;
28824
            checkSelection = 'checkboxmodel';
28825
            widthLock = 40;
28826
        }
28827
        var tableName = me.tableName;
28828
        var features = me.features;
28829
        var cols = [];
28830
        var fieldStore = [];
28831
        var _url = 'GetAllField';
28832
        var hasil = null;
28833
        var height = me.height;
28834
        var storeID = 'store' + me.tableName;
28835
        var gridName = 'grid' + me.name;
28836
        if (me.storeName) {
28837
            storeID = me.storeName;
28838
        }
28839
        var LangID = MinovaUtil.GetLangID();
28840
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
28841
        Ext.Ajax.request({
28842
            async: false,
28843
            method: 'POST',
28844
            url: '/UserControl/GetStore',
28845
            params: {
28846
                tableName: 'PDSWFSTRUCTUREFIELD',
28847
                param: parameter
28848
            },
28849
            success: function (response) {
28850
                var results = Ext.decode(response.responseText);
28851
                hasil = results.data;
28852
            }
28853
        });
28854
        cols.push({
28855
            xtype: 'rownumberer'
28856
        });
28857
        var addData = 'var data={';
28858
        if (hasil.length > 0) {
28859
            Ext.each(hasil, function (rec) {
28860
                fieldStore.push(rec.FieldName);
28861
                if (rec.FieldName != 'Sequence') {
28862
                    addData = addData + rec.FieldName + ":" + "'',";
28863
                }
28864
                var null_ = null;
28865
                var ReadOnly_ = false;
28866
                if (rec.IsRequired == '1') {
28867
                    null_ = false;
28868
                } else {
28869
                    null_ = true;
28870
                }
28871
                var Hidden_ = false;
28872
                if (rec.IsReadOnly == '1') {
28873
                    ReadOnly_ = true;
28874
                }
28875
                if (rec.IsVisible == '1') {
28876
                    switch (rec.FormatRef) {
28877
                        case "date":
28878
                            cols.push({
28879
                                xtype: 'minovadatecolumn',
28880
                                hidden: Hidden_,
28881
                                text: rec.HeaderTitle,
28882
                                dataIndex: rec.FieldName,
28883
                                filter: {
28884
                                    itemDefaults: {
28885
                                        emptyText: 'Search for...',
28886
                                    }
28887
                                },
28888
                                editor: {
28889
                                    allowBlank: null_,
28890
                                    xtype: 'datefield',
28891
                                    hideMode: 'visibility',
28892
                                    readOnly: ReadOnly_,
28893
                                    id: tableName + rec.FieldName,
28894
                                    fieldGrid: rec.FieldName,
28895
                                    nameTable: rec.TableName,
28896
                                    value: rec.DefaultValue
28897
                                }
28898
                            });
28899
                            break
28900
                        case "amount":
28901
                            cols.push({
28902
                                xtype: 'minovacurrancycolumn',
28903
                                align: 'right',
28904
                                text: rec.HeaderTitle,
28905
                                dataIndex: rec.FieldName,
28906
                                hidden: Hidden_,
28907
                                filter: {
28908
                                    itemDefaults: {
28909
                                        emptyText: 'Search for...'
28910
                                    }
28911
                                },
28912
                                editor: {
28913
                                    allowBlank: null_,
28914
                                    xtype: 'minovacurrencyfield',
28915
                                    readOnly: ReadOnly_,
28916
                                    id: tableName + rec.FieldName,
28917
                                    nameTable: rec.TableName,
28918
                                    fieldGrid: rec.FieldName,
28919
                                    fieldStyle: 'text-align:right;',
28920
                                    value: '0',
28921
                                    maxLength: rec.Length,
28922
                                }
28923
                            });
28924
                            break
28925
                        default:
28926
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
28927
                                cols.push({
28928
                                    text: rec.HeaderTitle,
28929
                                    dataIndex: rec.FieldName,
28930
                                    width: 100,
28931
                                    filter: {
28932
                                        type: 'string',
28933
                                        itemDefaults: {
28934
                                            emptyText: 'Search for...'
28935
                                        }
28936
                                    }
28937
                                });
28938
                            } else if (rec.SearchType == '0') { 
28939
                                var valueField = null;
28940
                                var displayValue = null;
28941
                                var TableRef = undefined;
28942
                                if (rec.TableRef != '') {
28943
                                    TableRef = rec.TableRef;
28944
                                    Ext.Ajax.request({
28945
                                        async: false,
28946
                                        method: 'POST',
28947
                                        url: '/UserControl/GetStore',
28948
                                        params: {
28949
                                            tableName: 'SDATATABLEFIELD',
28950
                                            param: 'TableName[equal]' + rec.TableRef
28951
                                        },
28952
                                        success: function (response) {
28953
                                            var results = Ext.decode(response.responseText);
28954
                                            data_ = results.data;
28955
                                            if (data_ != undefined) {
28956
                                                valueField_ = $.grep(data_, function (r) {
28957
                                                    return r.ValueField == '1'
28958
                                                });
28959
                                                valueField = valueField_[0].FieldName
28960
                                                displayValue_ = $.grep(data_, function (r) {
28961
                                                    return r.DisplayValue == '1'
28962
                                                });
28963
                                                displayValue = displayValue_[0].FieldName
28964
                                            }
28965
                                        }
28966
                                    });
28967
                                }
28968
                                Ext.create('Ext.data.Store', {
28969
                                    storeId: 'store_' + me.tableName + rec.FieldName,
28970
                                    autoLoad: true,
28971
                                    proxy: {
28972
                                        method: 'POST',
28973
                                        type: 'ajax',
28974
                                        url: '/UserControl/GetStoreAuth',
28975
                                        extraParams: {
28976
                                            tableName: TableRef,
28977
                                            param: rec.ParamCombo,
28978
                                            menuId: MinovaUtil.GetMenuID()
28979
                                        },
28980
                                        reader: {
28981
                                            type: 'json',
28982
                                            root: 'data',
28983
                                            totalProperty: 'data[0].TotalCount'
28984
                                        }
28985
                                    }
28986
                                });
28987
                                cols.push({
28988
                                    //xtype : 'minovacombocolumn',
28989
                                    hidden: Hidden_,
28990
                                    text: rec.HeaderTitle,
28991
                                    dataIndex: rec.FieldName,
28992
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
28993
                                    summaryType: function (records) {
28994
                                        var suma = 0;
28995
                                        if (me.summaryType == 'average') {
28996
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
28997
                                            Ext.each(records, function (record, index) {
28998
                                                if (record.get(rec.FieldName)) {
28999
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
29000
                                                }
29001
                                            });
29002
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
29003
                                        }
29004
                                        else if (me.summaryType == 'sum') {
29005
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
29006
                                            Ext.each(records, function (record, index) {
29007
                                                if (record.get(rec.FieldName)) {
29008
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
29009
                                                }
29010
                                            });
29011
                                        }
29012
                                        return suma;
29013
                                    },
29014
                                    //valueField : valueField,
29015
                                    //displayField : displayValue,
29016
                                    //store : 'store_' + me.tableName + rec.FieldName,
29017
                                    editor: {
29018
                                        allowBlank: null_,
29019
                                        xtype: 'minovacombobox',
29020
                                        readOnly: ReadOnly_,
29021
                                        id: rec.TableName + rec.FieldName,
29022
                                        nameTable: rec.TableName,
29023
                                        fieldGrid: rec.FieldName,
29024
                                        valueField: valueField,
29025
                                        displayField: displayValue,
29026
                                        store: 'store_' + me.tableName + rec.FieldName,
29027
                                        value: rec.DefaultValue,
29028
										formtarget: me.name,
29029
										listeners: {
29030
											blur: function (val) {
29031
												var _label = val.valueField; //YN 220616
29032
												var _form = val.formtarget;
29033
												var _Value = val.getValue();
29034
												var target = rec.TriggerCombo;
29035
												var custumFunc = rec.SelectFunction;
29036
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
29037
												if (frm) {
29038

    
29039
													if (target) {
29040
														//var f = frm.getForm().findField(target)
29041
														//_store = f.getStore();
29042
														var _store = Ext.data.StoreManager.lookup('store_' + me.tableName + target);
29043
														var _tbl = _store.proxy.extraParams.tableName;
29044
														var oldParam = _store.proxy.extraParams.param;
29045
														_store.proxy.extraParams = {
29046
															tableName: _tbl,
29047
															param: _label + '[=]' + _Value
29048
														};
29049
														_store.load();
29050
													}
29051
													if (custumFunc) {
29052
														eval(custumFunc)
29053
													}
29054
												}
29055
											}
29056
										}
29057
                                    },
29058
                                    renderer: function (value) {
29059
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
29060
                                        var index = store.find(valueField, value);
29061
                                        var val = "";
29062
                                        if (index != -1) {
29063
                                            var rc = store.getAt(index);
29064
                                            val = rc.get(displayValue);
29065
                                        } else {
29066
                                            val = value;
29067
                                        }
29068
                                        return val;
29069
                                    },
29070
                                    filter: {
29071
                                        type: 'list',
29072
                                        itemDefaults: {
29073
                                            emptyText: 'Search for...'
29074
                                        }
29075
                                    }
29076
                                });
29077
                            } else if (rec.SearchType == '5') {
29078
                                var valueField = null;
29079
                                var displayValue = null;
29080
                                var AdditionaldisplayValue = null;
29081
                                var TableRef = undefined;
29082
                                if (rec.TableRef != '') {
29083
                                    TableRef = rec.TableRef;
29084
                                    Ext.Ajax.request({
29085
                                        async: false,
29086
                                        method: 'POST',
29087
                                        url: '/UserControl/GetStore',
29088
                                        params: {
29089
                                            tableName: 'SDATATABLEFIELD',
29090
                                            param: 'TableName[equal]' + rec.TableRef
29091
                                        },
29092
                                        success: function (response) {
29093
                                            var results = Ext.decode(response.responseText);
29094
                                            data_ = results.data;
29095
                                            if (data_ != undefined) {
29096
                                                valueField_ = $.grep(data_, function (r) {
29097
                                                    return r.ValueField == '1'
29098
                                                });
29099
                                                if (valueField_.length > 0) {
29100
                                                    valueField = valueField_[0].FieldName
29101
                                                }
29102

    
29103
                                                displayValue_ = $.grep(data_, function (r) {
29104
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
29105
                                                });
29106
                                                if (displayValue_.length > 0) {
29107
                                                    displayValue = displayValue_[0].FieldName;
29108
                                                }
29109
                                                if (displayValue_.length >= 2) {
29110
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
29111
                                                }
29112
                                            }
29113
                                        }
29114
                                    });
29115
                                }
29116
                                Ext.create('Ext.data.Store', {
29117
                                    storeId: 'store_' + me.tableName + rec.FieldName,
29118
                                    autoLoad: true,
29119
                                    proxy: {
29120
                                        method: 'POST',
29121
                                        type: 'ajax',
29122
                                        url: '/UserControl/GetStoreAuth',
29123
                                        extraParams: {
29124
                                            tableName: TableRef,
29125
                                            param: rec.ParamCombo,
29126
                                            menuId: MinovaUtil.GetMenuID()
29127
                                        },
29128
                                        reader: {
29129
                                            type: 'json',
29130
                                            root: 'data',
29131
                                            totalProperty: 'data[0].TotalCount'
29132
                                        }
29133
                                    }
29134
                                });
29135
                                cols.push({
29136
                                    //xtype : 'minovacombocolumn',
29137
                                    hidden: Hidden_,
29138
                                    text: rec.HeaderTitle,
29139
                                    dataIndex: rec.FieldName,
29140
                                    //valueField : valueField,
29141
                                    //displayField : displayValue,
29142
                                    //store : 'store_' + me.tableName + rec.FieldName,
29143
                                    tpl: Ext.create('Ext.XTemplate',
29144
                                        '<ul class="x-list-plain"><tpl for=".">',
29145
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
29146
                                        '</tpl></ul>'),
29147
                                    displayTpl: Ext.create('Ext.XTemplate',
29148
                                        '<tpl for=".">',
29149
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
29150
                                        '</tpl>'),
29151
                                    editor: {
29152
                                        allowBlank: null_,
29153
                                        xtype: 'combobox',
29154
                                        readOnly: ReadOnly_,
29155
                                        id: rec.TableName + rec.FieldName,
29156
                                        nameTable: rec.TableName,
29157
                                        fieldGrid: rec.FieldName,
29158
                                        valueField: valueField,
29159
                                        displayField: displayValue,
29160
                                        store: 'store_' + me.tableName + rec.FieldName,
29161
                                        value: rec.DefaultValue,
29162
                                        tpl: Ext.create('Ext.XTemplate',
29163
                                            '<ul class="x-list-plain"><tpl for=".">',
29164
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
29165
                                            '</tpl></ul>'),
29166
                                        displayTpl: Ext.create('Ext.XTemplate',
29167
                                            '<tpl for=".">',
29168
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
29169
                                            '</tpl>')
29170
                                    },
29171
                                    renderer: function (value) {
29172
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
29173
                                        var index = store.find(valueField, value);
29174
                                        var val = "";
29175
                                        if (index != -1) {
29176
                                            var rc = store.getAt(index);
29177
                                            //val = rc.get(displayValue);
29178
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
29179
                                        } else {
29180
                                            val = value;
29181
                                        }
29182
                                        return val;
29183
                                    },
29184
                                    filter: {
29185
                                        type: 'list',
29186
                                        itemDefaults: {
29187
                                            emptyText: 'Search for...'
29188
                                        }
29189
                                    }
29190
                                });
29191
                            } else if (rec.SearchType == '2') {
29192
                                var triger = (rec.TriggerCombo).split('$');
29193
                                var targetField_ = triger[0];
29194
                                var fieldValue_ = triger[1];
29195
                                cols.push({
29196
                                    text: rec.HeaderTitle,
29197
                                    hidden: Hidden_,
29198
                                    dataIndex: rec.FieldName,
29199
                                    filter: {
29200
                                        itemDefaults: {
29201
                                            emptyText: 'Search for...'
29202
                                        }
29203
                                    },
29204
                                    editor: {
29205
                                        allowBlank: null_,
29206
                                        xtype: 'minovalookupgrid',
29207
                                        readOnly: ReadOnly_,
29208
                                        isGrid: true,
29209
                                        fieldTarget: targetField_,
29210
                                        fieldValue: fieldValue_,
29211
                                        isGrid: true,
29212
                                        id: tableName + rec.FieldName,
29213
                                        tableName: rec.TableRef,
29214
                                        triggerCls: 'x-form-search-trigger',
29215
                                        vtype: 'alphanum',
29216
                                        nameTable: rec.TableName,
29217
                                        fieldGrid: rec.FieldName,
29218
                                        listeners: {
29219
                                            change: function (val) {
29220
                                                var custumFunc = rec.SelectFunction;
29221
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29222
                                                    Ext.Ajax.request({
29223
                                                        async: false,
29224
                                                        method: 'POST',
29225
                                                        url: '/UserControl/GetStore',
29226
                                                        params: {
29227
                                                            tableName: 'PCMFUNC',
29228
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29229
                                                        },
29230
                                                        success: function (response) {
29231
                                                            var results = Ext.decode(response.responseText);
29232
                                                            data_ = results.data[0];
29233
                                                            if (data_ != undefined) {
29234
                                                                custumFunc = data_.FunctionCode;
29235
                                                            }
29236
                                                        }
29237
                                                    });
29238
                                                }
29239
                                                if (custumFunc) {
29240
                                                    eval(custumFunc)
29241
                                                }
29242
                                            }
29243
                                        }
29244
                                    }
29245
                                });
29246
                            } else if (rec.SearchType == '3') {
29247
                                cols.push({
29248
                                    text: rec.HeaderTitle,
29249
                                    hidden: Hidden_,
29250
                                    dataIndex: rec.FieldName,
29251
                                    filter: {
29252
                                        itemDefaults: {
29253
                                            emptyText: 'Search for...'
29254
                                        }
29255
                                    },
29256
                                    editor: {
29257
                                        allowBlank: null_,
29258
                                        xtype: 'MinovaLookupTree',
29259
                                        readOnly: ReadOnly_,
29260
                                        id: tableName + rec.FieldName,
29261
                                        tableName: rec.TableRef,
29262
                                        triggerCls: 'x-form-search-trigger',
29263
                                        vtype: 'alphanum',
29264
                                        treeSructure: rec.SearchFunction,
29265
                                        objClassValue: rec.ParamCombo,
29266
                                        nameTable: rec.TableName,
29267
                                        fieldGrid: rec.FieldName,
29268
                                        formname: me.name,
29269
                                        listeners: {
29270
                                            change: function (val) {
29271
                                                var custumFunc = rec.SelectFunction;
29272
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29273
                                                    Ext.Ajax.request({
29274
                                                        async: false,
29275
                                                        method: 'POST',
29276
                                                        url: '/UserControl/GetStore',
29277
                                                        params: {
29278
                                                            tableName: 'PCMFUNC',
29279
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29280
                                                        },
29281
                                                        success: function (response) {
29282
                                                            var results = Ext.decode(response.responseText);
29283
                                                            data_ = results.data[0];
29284
                                                            if (data_ != undefined) {
29285
                                                                custumFunc = data_.FunctionCode;
29286
                                                            }
29287
                                                        }
29288
                                                    });
29289
                                                }
29290
                                                if (custumFunc) {
29291
                                                    eval(custumFunc)
29292
                                                }
29293
                                            }
29294
                                        }
29295
                                    }
29296
                                });
29297
                            } 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) {
29298
                                var triger = (rec.TriggerCombo).split('&');
29299
                                var targetField_ = triger[0];
29300
                                var fieldValue_ = triger[0];
29301
                                cols.push({
29302
                                    text: rec.HeaderTitle,
29303
                                    hidden: Hidden_,
29304
                                    dataIndex: rec.FieldName,
29305
                                    filter: {
29306
                                        itemDefaults: {
29307
                                            emptyText: 'Search for...'
29308
                                        }
29309
                                    },
29310
                                    editor: {
29311
                                        allowBlank: null_,
29312
                                        xtype: 'lookupemployee',
29313
                                        readOnly: ReadOnly_,
29314
                                        isGrid: true,
29315
                                        fieldTarget: targetField_,
29316
                                        fieldValue: fieldValue_,
29317
                                        isGrid: true,
29318
                                        id: tableName + rec.FieldName,
29319
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
29320
                                        triggerCls: 'x-form-search-trigger',
29321
                                        vtype: 'alphanum', // disable space
29322
                                        nameTable: rec.TableName,
29323
                                        fieldGrid: rec.FieldName,
29324
                                        listeners: {
29325
                                            change: function (val) {
29326
                                                var custumFunc = rec.SelectFunction;
29327
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29328
                                                    Ext.Ajax.request({
29329
                                                        async: false,
29330
                                                        method: 'POST',
29331
                                                        url: '/UserControl/GetStore',
29332
                                                        params: {
29333
                                                            tableName: 'PCMFUNC',
29334
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29335
                                                        },
29336
                                                        success: function (response) {
29337
                                                            var results = Ext.decode(response.responseText);
29338
                                                            data_ = results.data[0];
29339
                                                            if (data_ != undefined) {
29340
                                                                custumFunc = data_.FunctionCode;
29341
                                                            }
29342
                                                        }
29343
                                                    });
29344
                                                }
29345
                                                if (custumFunc) {
29346
                                                    eval(custumFunc)
29347
                                                }
29348
                                            }
29349
                                        }
29350
                                    }
29351
                                });
29352
                            } else if (rec.SearchType == '4' && isLookup != true) {
29353
                                cols.push({
29354
                                    text: rec.HeaderTitle,
29355
                                    hidden: Hidden_,
29356
                                    dataIndex: rec.FieldName,
29357
                                    filter: {
29358
                                        itemDefaults: {
29359
                                            emptyText: 'Search for...'
29360
                                        }
29361
                                    },
29362
                                    editor: {
29363
                                        allowBlank: null_,
29364
                                        xtype: 'lookupemployee',
29365
                                        readOnly: ReadOnly_,
29366
                                        isGrid: true,
29367
                                        fieldTarget: targetField_,
29368
                                        fieldValue: fieldValue_,
29369
                                        isGrid: true,
29370
                                        id: tableName + rec.FieldName,
29371
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
29372
                                        triggerCls: 'x-form-search-trigger',
29373
                                        vtype: 'alphanum', // disable space
29374
                                        nameTable: rec.TableName,
29375
                                        fieldGrid: rec.FieldName,
29376
                                        listeners: {
29377
                                            change: function (val) {
29378
                                                var custumFunc = rec.SelectFunction;
29379
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29380
                                                    Ext.Ajax.request({
29381
                                                        async: false,
29382
                                                        method: 'POST',
29383
                                                        url: '/UserControl/GetStore',
29384
                                                        params: {
29385
                                                            tableName: 'PCMFUNC',
29386
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29387
                                                        },
29388
                                                        success: function (response) {
29389
                                                            var results = Ext.decode(response.responseText);
29390
                                                            data_ = results.data[0];
29391
                                                            if (data_ != undefined) {
29392
                                                                custumFunc = data_.FunctionCode;
29393
                                                            }
29394
                                                        }
29395
                                                    });
29396
                                                }
29397
                                                if (custumFunc) {
29398
                                                    eval(custumFunc)
29399
                                                }
29400
                                            }
29401
                                        }
29402
                                    }
29403
                                });
29404
                            } else if (rec.FixedValue != '') { // add by taufan
29405
                                cols.push({
29406
                                    text: rec.HeaderTitle,
29407
                                    hidden: Hidden_,
29408
                                    dataIndex: rec.FieldName,
29409
                                    filter: {
29410
                                        itemDefaults: {
29411
                                            emptyText: 'Search for...'
29412
                                        }
29413
                                    },
29414
                                    editor: {
29415
                                        allowBlank: null_,
29416
                                        xtype: 'minovafixvalue',
29417
                                        readOnly: ReadOnly_,
29418
                                        id: rec.TableName + rec.FieldName,
29419
                                        name: rec.TableName + rec.FieldName,
29420
                                        nameTable: rec.TableName,
29421
                                        fieldGrid: rec.FieldName,
29422
                                        fixedValue: rec.FixedValue,
29423
                                        valueField: 'code',
29424
                                        displayField: 'desc',
29425
                                        value: rec.DefaultValue
29426
                                    },
29427
                                    renderer: function (value) {
29428
                                        var val = "";
29429
                                        var storeData = [];
29430
                                        var str = rec.FixedValue;
29431
                                        var hasil = str.split('||');
29432
                                        hasil.forEach(function (h) {
29433
                                            store_ = h.split('=')
29434
                                            storeData.push({
29435
                                                code: store_[0],
29436
                                                desc: store_[1]
29437
                                            });
29438
                                        });
29439
                                        var item = storeData.find(x => x.code == value);
29440
                                        if (item != undefined) {
29441
                                            val = item.desc;
29442
                                        }
29443
                                        return val;
29444
                                    }
29445
                                });
29446
                            } else {
29447
                                var _custumFunc = null;
29448
                                Ext.Ajax.request({
29449
                                    async: false,
29450
                                    method: 'POST',
29451
                                    url: '/UserControl/GetStore',
29452
                                    params: {
29453
                                        tableName: 'SDATATABLEFIELD',
29454
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
29455
                                    },
29456
                                    success: function (response) {
29457
                                        var results = Ext.decode(response.responseText);
29458
                                        data_ = results.data[0];
29459
                                        if (data_ != undefined) {
29460
                                            _custumFunc = data_.SelectFunction;
29461
                                        }
29462
                                    }
29463
                                });
29464
                                _xtype = 'textfield';
29465
                                if (rec.Length > 250) {
29466
                                    _xtype = 'textareafield';
29467
                                    cols.push({
29468
                                        text: rec.HeaderTitle,
29469
                                        xtype: 'gridcolumn',
29470
                                        hidden: Hidden_,
29471
                                        dataIndex: rec.FieldName,
29472
                                        filter: {
29473
                                            itemDefaults: {
29474
                                                emptyText: 'Search for...'
29475
                                            }
29476
                                        },
29477
                                        cellWrap: true,
29478
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29479
                                        editor: {
29480
                                            allowBlank: null_,
29481
                                            xtype: _xtype,
29482
                                            readOnly: ReadOnly_,
29483
                                            id: tableName + rec.FieldName,
29484
                                            nameTable: rec.TableName,
29485
                                            fieldGrid: rec.FieldName,
29486
                                            value: rec.DefaultValue,
29487
                                            maxLength: rec.Length,
29488
                                            grow: true,
29489
                                            listeners: {
29490
                                                //initialize: function (editor) {
29491
                                                //    editor.ownerCt.alignTo(editor.ownerCt.boundEl, 'tl-tl');
29492
                                                //    editor.ownerCt.alignment = 'tl-tl';
29493
                                                //},
29494
                                                afterrender: function () {
29495
                                                    var me = this;
29496
                                                    //me.el.swallowEvent(['keypress', 'keydown']);
29497
                                                }
29498
                                            }
29499
                                        },
29500
                                        renderer: function (v) {
29501
                                            if (v != undefined) {
29502
												result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
29503
												result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
29504
												result = result.replace(/\r\t/g, "&emsp;").replace(/\t/g, "&emsp;");
29505
												return result;
29506
											}
29507
											else {
29508
												return v;
29509
											}
29510
                                        }
29511
                                    });
29512
                                }
29513
                                else {
29514
                                    cols.push({
29515
                                        text: rec.HeaderTitle,
29516
                                        xtype: 'gridcolumn',
29517
                                        hidden: Hidden_,
29518
                                        dataIndex: rec.FieldName,
29519
                                        filter: {
29520
                                            itemDefaults: {
29521
                                                emptyText: 'Search for...'
29522
                                            }
29523
                                        },
29524
                                        cellWrap: true,
29525
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29526
                                        editor: {
29527
                                            allowBlank: null_,
29528
                                            xtype: _xtype,
29529
                                            readOnly: ReadOnly_,
29530
                                            id: tableName + rec.FieldName,
29531
                                            nameTable: rec.TableName,
29532
                                            fieldGrid: rec.FieldName,
29533
                                            value: rec.DefaultValue,
29534
                                            maxLength: rec.Length,
29535
                                            grow: true,
29536
                                            listeners: {
29537
                                                change: function (val) {
29538
                                                    if (_custumFunc) {
29539
                                                        eval(_custumFunc)
29540
                                                    }
29541
                                                }
29542
                                                /*change: function (val) {
29543
                                                    var custumFunc = null;
29544
                                                    Ext.Ajax.request({
29545
                                                        async: false,
29546
                                                        method: 'POST',
29547
                                                        url: '/UserControl/GetStore',
29548
                                                        params: {
29549
                                                            tableName: 'SDATATABLEFIELD',
29550
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
29551
                                                        },
29552
                                                        success: function (response) {
29553
                                                            var results = Ext.decode(response.responseText);
29554
                                                            data_ = results.data[0];
29555
                                                            if (data_ != undefined) {
29556
                                                                custumFunc = data_.SelectFunction;
29557
                                                                //console.log(data_)
29558
                                                            }
29559
                                                        }
29560
                                                    });
29561
    
29562
                                                    if (custumFunc) {
29563
                                                        eval(custumFunc)
29564
                                                    }
29565
                                                } */
29566
                                            }
29567
                                        }
29568
                                    });
29569
                                }
29570
                            }
29571
                            break
29572
                    }
29573
                } else {
29574
                    cols.push({
29575
                        text: rec.HeaderTitle,
29576
                        hidden: Hidden_,
29577
                        dataIndex: rec.FieldName,
29578
                        hidden: true,
29579
                        editor: {
29580
                            allowBlank: true,
29581
                            xtype: 'textfield',
29582
                            readOnly: ReadOnly_,
29583
                            id: tableName + rec.FieldName,
29584
                            nameTable: rec.TableName,
29585
                            fieldGrid: rec.FieldName,
29586
                            value: rec.DefaultValue
29587
                        },
29588
                        filter: {
29589
                            itemDefaults: {
29590
                                emptyText: 'Search for...'
29591
                            }
29592
                        }
29593
                    });
29594
                }
29595
            });
29596

    
29597
        };        
29598
        //cols.push({
29599
        //    xtype: 'actioncolumn',
29600
        //    text: 'Edit',
29601
        //    maxWidth: 150,
29602
        //    minWidth: 50,
29603
        //    border: false,
29604
        //    itemId: 'startEditActionColumn',
29605
        //    align: 'center',
29606
        //    items: [
29607
        //        {
29608
        //            iconCls: 'x-fa fa-pencil-square-o',
29609
        //            handler: function (grid, rowIndex, colIndex) {
29610
        //                grid.editingPlugin.startEdit(rowIndex, 0);
29611
        //            }
29612
        //        }
29613
        //    ]
29614
        //});
29615
        addData = addData + "}";
29616
        Ext.applyIf(me, {
29617
            items: [{
29618
                xtype: 'grid',
29619
                id: gridName,
29620
                name: gridName,
29621
                height: height,
29622
                minHeight: me.minHeight,
29623
                maxHeight: me.maxHeight,
29624
                addFlag: true,
29625
                deleteFlag: true,
29626
                store: Ext.create('Ext.data.Store', {
29627
                    storeId: storeID,
29628
                    fields: fieldStore,
29629
                    //groupField: 'QuestionGroup',
29630
                    grouper: {
29631
                        sortProperty: 'SeqQuest',
29632
                        groupFn: function (record) {
29633
                            return record.get('QuestionGroup');
29634
                        }
29635
                    },
29636
                    proxy: {
29637
                        method: 'POST',
29638
                        type: 'ajax',
29639
                        url: '',
29640
                        reader: {
29641
                            type: 'json',
29642
                            root: 'data'
29643
                        }
29644
                    }
29645
                }),
29646
                dockedItems: [{
29647
                    xtype: 'toolbar',
29648
                    items: [{
29649
                        text: 'Add',
29650
                        hidden: hide_,
29651
                        name: tableName + 'Add',
29652
                        iconCls: 'fa-plus-circle',
29653
                        style: 'font-family: FontAwesome',
29654
                        handler: function () {
29655
                            var grid = Ext.getCmp(gridName);
29656
                            if (grid.addFlag === true) {
29657
                                var store = Ext.StoreMgr.lookup(storeID)
29658
                                idx = store.getCount();
29659
                                var action = getParam('action');
29660
                                var data = '';
29661
                                var Sequence = 0;
29662
                                if (idx == 0) {
29663
                                    Sequence = 1;
29664
                                } else {
29665
                                    Sequence = 1 + idx;
29666
                                }
29667
                                var seq = 'Sequence';
29668
                                var SequenceValue = Sequence;
29669
                                eval(addData);
29670
                                data[seq] = SequenceValue;
29671
                                store.insert(idx, data);
29672
                            }
29673
                        }
29674
                    }, {
29675
                        text: 'Delete',
29676
                        hidden: hide_,
29677
                        name: tableName + 'DeleteText',
29678
                        iconCls: 'fa-trash-o',
29679
                        style: 'font-family: FontAwesome',
29680
                        handler: function () {
29681
                            var grid = Ext.getCmp(gridName);
29682
                            if (grid.deleteFlag === true) {
29683
                                var me = this,
29684
                                    store = Ext.StoreMgr.lookup(storeID)
29685
                                var grid = Ext.getCmp(gridName);
29686
                                Ext.MessageBox.show({
29687
                                    title: 'Remove tab',
29688
                                    msg: "This will remove. Do you want to continue?",
29689
                                    buttons: Ext.MessageBox.YESNO,
29690
                                    fn: function (choice) {
29691
                                        console.log(choice);
29692
                                        if (choice === 'yes') {
29693
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
29694
                                            if (selection) {
29695
                                                store.remove(selection);
29696
                                            }
29697
                                        }
29698
                                    }
29699
                                });
29700
                            }
29701
                        }
29702
                        },
29703
                        {
29704
                            xtype: 'label',
29705
                            name: tableName + 'Label',
29706
							id: tableName + 'Label', //YN 220316
29707
							hidden: true, //YN 220316
29708
                            html: '<i>*Please double click on the cell/row to edit content.</i>'
29709
                        }]
29710
                }
29711
                ],
29712
                columns: {
29713
                    defaults: {
29714
                        menuDisabled: true
29715
                    },
29716
                    items: cols
29717
                },
29718
                //selModel: 'rowmodel',
29719
                selType: 'rowmodel', //checkSelection,
29720
                plugins: [
29721
                    Ext.create('Ext.grid.plugin.CellEditing', {
29722
                        clicksToEdit: 2
29723
                    })
29724
                ],
29725
                //plugins: {
29726
                //    //ptype: 'actionColumnRowEditing', //rowediting
29727
                //    //pluginId: 'rowEditing',
29728
                //    ptype: 'cellediting',
29729
                //    //hiddenColumnsOnEdit: ['startEditActionColumn'],
29730
                //    clicksToEdit: 2,
29731
                //    //saveButtonIconCls: 'x-fa fa-floppy-o',
29732
                //    listeners: {}
29733
                //},
29734
                //listeners: {
29735
                //    'beforeedit': function (editor) {
29736
                //        editor.getEditor().floatingButtons.items.items[0].hide();
29737
                //        editor.getEditor().floatingButtons.items.items[1].hide();
29738
                //    }
29739
                //},
29740
                features: features,
29741
                viewConfig: {
29742
                    listeners: {
29743
                        refresh: function (dataview) {
29744
                            Ext.each(dataview.panel.columns, function (column) {
29745
                                column.autoSize();
29746
                                column.setWidth(column.width + 20); //YN 220316
29747
                            })
29748
                        }
29749
                    }
29750
                }
29751
            }
29752
            ]
29753
        });
29754
        me.callParent(arguments);
29755
    }
29756
});
29757

    
29758
/*Grid Display ESS Generator YN 20211216 */
29759
Ext.define('MinovaUtil.MinovaES.MinovaGridDisplay', {
29760
    extend: 'Ext.grid.Panel',
29761
    requires: ['Ext.grid.RowNumberer'],
29762
    alias: 'widget.minovagriddisplay',
29763
    //alternateClassName : 'Ext.grid.MinovaGrid',
29764
    tableName: undefined,
29765
    isLookup: undefined,
29766
    param: undefined,
29767
    pagesize: undefined,
29768
    storeName: undefined,
29769
    layoutType: undefined,
29770
    enableLocking: true,
29771
    initComponent: function () {
29772
        var me = this;
29773
        var cols_ = [];
29774
        var fieldeditor = {};
29775
        var hasil = null;
29776
        var autoLoad = true;
29777
        var LangID = MinovaUtil.GetLangID();
29778
        parameter = null;
29779
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
29780
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
29781
        } else {
29782
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
29783
        }
29784
        Ext.Ajax.request({
29785
            async: false,
29786
            method: 'POST',
29787
            url: '/UserControl/GetStore',
29788
            params: {
29789
                tableName: 'PDSBS0007',
29790
                param: parameter
29791
            },
29792
            success: function (response) {
29793
                var results = Ext.decode(response.responseText);
29794
                hasil = results.data;
29795
            }
29796
        });
29797
        if (hasil.length > 0) {
29798
            Ext.each(hasil, function (rec) {
29799
                var null_ = null;
29800
                if (rec.IsPrimaryKey == true) {
29801
                    null_ = false;
29802
                }
29803
                if (rec.IsRequired == true) {
29804
                    null_ = false;
29805
                } else {
29806
                    null_ = true;
29807
                }
29808
                if (rec.GridView == 1) {
29809
                    switch (rec.FormatRef) {
29810
                        case "date":
29811
                            cols_.push({
29812
                                xtype: 'minovadatecolumn',
29813
                                text: rec.HeaderTitle,
29814
                                dataIndex: rec.FieldName,
29815
                                width: 100,
29816
                                filter: {
29817
                                    type: 'date',
29818
                                    itemDefaults: {
29819
                                        emptyText: 'Search for...'
29820
                                    }
29821
                                }
29822
                            });
29823
                            break
29824
                        case "amountencrypt":
29825
                            cols_.push({
29826
                                xtype: 'minovaamountcolumn',
29827
                                text: rec.HeaderTitle,
29828
                                dataIndex: rec.FieldName,
29829
                                align: 'right',
29830
                                width: 100,
29831
                                filter: {
29832
                                    type: 'string',
29833
                                    itemDefaults: {
29834
                                        emptyText: 'Search for...'
29835
                                    }
29836
                                }
29837
                            });
29838
                            break
29839
                        case "amount":
29840
                            cols_.push({
29841
                                xtype: 'minovacurrancycolumn',
29842
                                text: rec.HeaderTitle,
29843
                                dataIndex: rec.FieldName,
29844
                                align: 'right',
29845
                                width: 100,
29846
                                filter: {
29847
                                    type: 'number',
29848
                                    itemDefaults: {
29849
                                        emptyText: 'Search for...'
29850
                                    }
29851
                                }
29852
                            });
29853
                            break
29854
                        case "datetime":
29855
                            cols_.push({
29856
                                xtype: 'minovadatetimecolumn',
29857
                                text: rec.HeaderTitle,
29858
                                dataIndex: rec.FieldName,
29859
                                width: 140,
29860
                                filter: {
29861
                                    type: 'string',
29862
                                    itemDefaults: {
29863
                                        emptyText: 'Search for...'
29864
                                    }
29865
                                }
29866
                            });
29867
                            break
29868
                        default:
29869
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
29870
                                cols_.push({
29871
                                    text: rec.HeaderTitle,
29872
                                    dataIndex: rec.FieldName,
29873
                                    width: 100,
29874
                                    filter: {
29875
                                        type: 'string',
29876
                                        itemDefaults: {
29877
                                            emptyText: 'Search for...'
29878
                                        }
29879
                                    }
29880
                                });
29881
                            } else if (rec.SearchType == '2') {
29882
                                cols_.push({
29883
                                    xtype: 'minovalookupcolumn',
29884
                                    text: rec.HeaderTitle,
29885
                                    tableName: rec.TableRef,
29886
                                    dataIndex: rec.FieldName,
29887
                                    filter: {
29888
                                        itemDefaults: {
29889
                                            emptyText: 'Search for...'
29890
                                        }
29891
                                    }
29892
                                });
29893
                            } else if (rec.TableRef != "") {
29894
                                if (rec.TableRef != null) {
29895
                                    var valueField = null;
29896
                                    Ext.Ajax.request({
29897
                                        async: false,
29898
                                        method: 'POST',
29899
                                        url: '/UserControl/GetStore',
29900
                                        params: {
29901
                                            tableName: 'SDATATABLEFIELD',
29902
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
29903
                                        },
29904
                                        success: function (response) {
29905
                                            var results = Ext.decode(response.responseText);
29906
                                            data_ = results.data[0];
29907
                                            if (data_ != undefined) {
29908
                                                valueField = data_.FieldName;
29909
                                            }
29910
                                        }
29911
                                    });
29912

    
29913
                                    displayValue = null;
29914
                                    Ext.Ajax.request({
29915
                                        async: false,
29916
                                        method: 'POST',
29917
                                        url: '/UserControl/GetStore',
29918
                                        params: {
29919
                                            tableName: 'SDATATABLEFIELD',
29920
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
29921
                                        },
29922
                                        success: function (response) {
29923
                                            var results = Ext.decode(response.responseText);
29924
                                            data_ = results.data[0];
29925
                                            if (data_ != undefined) {
29926
                                                displayValue = data_.FieldName;
29927
                                                //console.log(data_)
29928
                                            }
29929
                                        }
29930
                                    });
29931
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
29932
                                    var count_ = 0;
29933
                                    if (store_) {
29934
                                        count_ = store_.count();
29935
                                    }
29936
                                    if (count_ == 0) {
29937
                                        Ext.create('Ext.data.Store', {
29938
                                            storeId: 'store_' + rec.FieldName,
29939
                                            autoLoad: true,
29940
                                            proxy: {
29941
                                                method: 'POST',
29942
                                                type: 'ajax',
29943
                                                url: '/UserControl/GetStore',
29944
                                                extraParams: {
29945
                                                    tableName: rec.TableRef,
29946
                                                    param: rec.ParamCombo
29947
                                                },
29948
                                                reader: {
29949
                                                    type: 'json',
29950
                                                    root: 'data',
29951
                                                    totalProperty: 'data[0].TotalCount'
29952
                                                }
29953
                                            }
29954
                                        })
29955
                                    }
29956
                                    cols_.push({
29957
                                        xtype: 'minovacombocolumn',
29958
                                        text: rec.HeaderTitle,
29959
                                        dataIndex: rec.FieldName,
29960
                                        valueField: valueField,
29961
                                        displayField: displayValue,
29962
                                        store: 'store_' + rec.FieldName,
29963
                                        filter: {
29964
                                            type: 'list',
29965
                                            itemDefaults: {
29966
                                                emptyText: 'Search for...'
29967
                                            }
29968
                                        }
29969
                                    });
29970
                                }
29971

    
29972
                            } else {
29973
                                cols_.push({
29974
                                    text: rec.HeaderTitle,
29975
                                    dataIndex: rec.FieldName,
29976
                                    width: rec.Length * 6.5 + 20, //(rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29977
                                    flex: ((rec.Length * 6.5 + 20) >= 800)?1:0,
29978
                                    //autoSizeColumn: true,
29979
                                    cellWrap: true,
29980
                                    hidden: (rec.IsHidden=='1')? true:false,
29981
                                    filter: {
29982
                                        itemDefaults: {
29983
                                            emptyText: 'Search for...'
29984
                                        }
29985
                                    }
29986
                                });
29987
                            }
29988
                            break
29989
                    }
29990
                }
29991
                else {
29992
                    cols_.push({
29993
                        text: rec.HeaderTitle,
29994
                        dataIndex: rec.FieldName,
29995
                        hidden: true,
29996
                        filter: {
29997
                            itemDefaults: {
29998
                                emptyText: 'Search for...'
29999
                            }
30000
                        }
30001
                    });
30002
                }
30003
            });
30004
        };
30005
        var param_ = me.param;
30006
        if (param_ == undefined) {
30007
            param_ = ''
30008
        }
30009

    
30010
        var jsStoreGrid = new Ext.create('Ext.data.Store', {
30011
            storeId: me.storeName,
30012
            autoLoad: false,
30013
            proxy: {
30014
                method: 'POST',
30015
                type: 'ajax',
30016
                url: '/UserControl/GetStore',
30017
                extraParams: {
30018
                    tableName: me.tableName,
30019
                    param: param_
30020
                },
30021
                reader: {
30022
                    type: 'json',
30023
                    root: 'data',
30024
                    totalProperty: 'data[0].TotalCount'
30025
                }
30026
            }
30027
        });
30028

    
30029
        Ext.applyIf(me, {
30030
            defaults: {
30031
                autoSizeColumn: true,
30032
            },
30033
            columns: cols_,
30034
            store: jsStoreGrid,
30035
            viewConfig: {
30036
                listeners: {
30037
                    refresh: function (dataview) {
30038
                        Ext.each(dataview.panel.columns, function (column) {
30039
                            if (column.autoSizeColumn === true)
30040
                                column.autoSize();
30041
                        })
30042
                    }
30043
                }
30044
            },
30045
        });
30046
        me.callParent(arguments);
30047
    }
30048

    
30049
});
30050

    
30051
/*https://fiddle.sencha.com/#fiddle/1544&view/editor */
30052
Ext.define('MinovaUtil.MinovaES.StoreCheckboxGroup', {
30053
    extend: 'Ext.form.CheckboxGroup',
30054
    xtype: 'storecheckboxgroup', // <- this "xtype" is a unique name of the component.
30055
    name: undefined,
30056
    nametxt: undefined,
30057
    formname: undefined,
30058
    nameTable: undefined,
30059
    initComponent: function () {
30060
        var me = this;
30061
        if (!me.store) throw "No store defined for StoreCheckboxGroup";
30062
        if (!me.mapFn) throw "No mapFn defined for StoreCheckboxGroup";
30063
        if (me.items) throw "Items may not be defined for StoreCheckboxGroup; we get them from the store!";
30064
        var checklistStore = me.store, // <-- using the required "store" property
30065
            renderCheckboxes = function () {
30066
                me.removeAll();
30067
                //me.add(formfield = new Ext.form.TextField({
30068
                //    name: me.nametxt,
30069
                //    formname: me.formname,
30070
                //    nameTable: me.nameTable,
30071
                //}));
30072
                me.add(
30073
                    checklistStore.getRange().map(me.mapFn)); // <-- using the required "mapFn" property
30074
            };
30075
        me.callParent(arguments);
30076
        renderCheckboxes(); // <-- using the function I defined above
30077
        checklistStore.on({
30078
            load: renderCheckboxes, // <-------- binding the
30079
            update: renderCheckboxes, // <------ function to
30080
            datachanged: renderCheckboxes, // <- the store
30081
            filterchange: renderCheckboxes // <- events
30082
        });
30083
    }
30084
});
30085
/* END YN 20211216 */
30086

    
30087

    
30088

    
30089

    
30090

    
(3-3/3)