Project

General

Profile

Feature #2596 » MinovaXtype.js

Tri Rizqiaty, 02/20/2024 10:12 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
                bodyPadding: 0,
8903
                width: 400,
8904
                margin: '10 5 3 30',
8905
                items: col1
8906
            }, {
8907
                bodyPadding: 0,
8908
                width: 400,
8909
                margin: '10 5 3 30',
8910
                items: col2
8911
            }, {
8912
                width: 150,
8913
                //margin: '10 5 3 30',
8914
                items: [{
8915
                    xtype: 'image',
8916
                    id: 'imageusermd',
8917
                    name: 'imageusermd',
8918
                    width: 120,
8919
                    height: 150,
8920
                    padding: 5,
8921
                    border: true,
8922
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8923
                }
8924
                ]
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
                bodyPadding: 0,
9154
                width: 400,
9155
                margin: '10 5 3 30',
9156
                items: col1
9157
            }, {
9158
                bodyPadding: 0,
9159
                width: 400,
9160
                margin: '10 5 3 30',
9161
                items: col2
9162
            }, {
9163
                width: 150,
9164
                items: [{
9165
                    xtype: 'image',
9166
                    id: 'imageusermd',
9167
                    name: 'imageusermd',
9168
                    width: 120,
9169
                    height: 150,
9170
                    padding: 5,
9171
                    border: true,
9172
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
9173
                }
9174
                ]
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
    tableName: undefined,
10188
    param: undefined,
10189
    //pagesize: undefined,
10190
    storename: undefined,
10191
    //layoutType: undefined,
10192
    enableLocking: true,
10193
    tbar: [{
10194
        xtype: 'tbfill'
10195
    }, {
10196
        text: 'Clear Filters',
10197
        tooltip: 'Clear all filters',
10198
        name: 'clearbtn',
10199
        handler: function () {
10200
            var tolbar = this.up()
10201
            var grid_ = tolbar.up()
10202
            grid_.filters.clearFilters()
10203
        }
10204
    }, ],
10205
    getTableName: function () {
10206
        return this.tableName;
10207
    },
10208

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

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

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

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

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

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

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

    
10472
                },
10473
                beforeedit: function () {
10474
                    return false;
10475
                }
10476
            },
10477
            lockedViewConfig: {
10478
                scroll: 'horizontal'
10479
            },
10480
            viewConfig: {
10481
                emptyText: 'No Data Display',
10482
                deferEmptyText: false
10483
            },
10484
            //features: [{
10485
            //    ftype: 'summary'
10486
            //}],
10487
            columns: cols_,
10488

    
10489
            store: jsStoreGrid,
10490

    
10491
            plugins: [{
10492
                ptype: 'gridfilters'
10493
            },
10494

    
10495
            ],
10496

    
10497
        });
10498
        me.callParent(arguments);
10499
    }
10500

    
10501
});
10502

    
10503
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGrid', {
10504
    extend: 'Ext.form.Panel',
10505
    alias: ['widget.MinovaEditAbleGrid', 'widget.Minovaeditablegrid', 'widget.minovaeditablegrid'],
10506
    requires: [
10507
		'Ext.grid.plugin.CellEditing',
10508
		'Ext.grid.RowNumberer',
10509
		'Ext.grid.Panel',
10510
    ],
10511

    
10512
    //renderTo: 'panel-extjs',
10513
    anchor: '100%',
10514
    tableName: undefined,
10515
    hideButton: undefined,
10516
    multiSelect: undefined,
10517
    initComponent: function () {
10518
        var me = this;
10519
        var isLookup = me.isLookup;
10520
        var hide_ = false;
10521
        var widthLock = 250;
10522
        var checkSelection = '';
10523

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

    
10569
                var null_ = null;
10570
                var ReadOnly_ = false;
10571
                if (rec.IsPrimaryKey == true) {
10572
                    null_ = false;
10573
                }
10574
                if (rec.IsRequired == true) {
10575
                    null_ = false;
10576
                } else {
10577
                    null_ = true;
10578
                }
10579
                if (rec.ReadOnly == '1') {
10580
                    ReadOnly_ = true;
10581
                }
10582
                var Hidden_ = false;
10583
                if (rec.ReadOnly == '1') {
10584
                    ReadOnly_ = true;
10585
                }
10586

    
10587
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
10588
                    Hidden_ = true;
10589
                    null_ = true;
10590
                }
10591

    
10592
                if (rec.GridView == 1) {
10593
                    switch (rec.FormatRef) {
10594
                        case "date":
10595
                            cols.push({
10596
                                xtype: 'minovadatecolumn',
10597
                                hidden: Hidden_,
10598
                                text: rec.HeaderTitle,
10599
                                dataIndex: rec.FieldName,
10600
                                filter: {
10601
                                    itemDefaults: {
10602
                                        emptyText: 'Search for...',
10603

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

    
10743
                                    Ext.Ajax.request({
10744
                                        async: false,
10745
                                        method: 'POST',
10746
                                        url: '/UserControl/GetStore',
10747
                                        params: {
10748
                                            tableName: 'SDATATABLEFIELD',
10749
                                            param: 'TableName[equal]' + rec.TableRef
10750
                                        },
10751
                                        success: function (response) {
10752
                                            var results = Ext.decode(response.responseText);
10753
                                            data_ = results.data;
10754
                                            if (data_ != undefined) {
10755
                                                valueField_ = $.grep(data_, function (r) {
10756
                                                    return r.ValueField == '1'
10757
                                                });
10758
                                                valueField = valueField_[0].FieldName
10759
                                                displayValue_ = $.grep(data_, function (r) {
10760
                                                    return r.DisplayValue == '1'
10761
                                                });
10762
                                                displayValue = displayValue_[0].FieldName
10763
                                            }
10764
                                        }
10765
                                    });
10766

    
10767
                                    //create Store
10768
                                    Ext.create('Ext.data.Store', {
10769
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10770
                                        autoLoad: true,
10771
                                        proxy: {
10772
                                            method: 'POST',
10773
                                            type: 'ajax',
10774
                                            url: '/UserControl/GetStoreAuth',
10775
                                            extraParams: {
10776
                                                tableName: TableRef,
10777
                                                param: rec.ParamCombo,
10778
                                                menuId: MinovaUtil.GetMenuID()
10779
                                            },
10780
                                            reader: {
10781
                                                type: 'json',
10782
                                                root: 'data',
10783
                                                totalProperty: 'data[0].TotalCount'
10784
                                            }
10785
                                        }
10786
                                    });
10787
                                } else if (rec.FixedValue != '') {
10788
                                    var storeData = [];
10789
                                    var str = rec.FixedValue;
10790
                                    var hasil = str.split('||');
10791
                                    hasil.forEach(function (h) {
10792
                                        store_ = h.split('=')
10793
                                        storeData.push({
10794
                                            code: store_[0],
10795
                                            desc: store_[1],
10796

    
10797
                                        });
10798
                                    });
10799

    
10800
                                    valueField = 'code';
10801
                                    displayValue = 'desc';
10802

    
10803
                                    Ext.create('Ext.data.Store', {
10804
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10805
                                        autoLoad: true,
10806
                                        data: storeData
10807
                                    })
10808
                                }
10809

    
10810
                                cols.push({
10811
                                    xtype: 'minovacombocolumn',
10812
                                    hidden: Hidden_,
10813
                                    text: rec.HeaderTitle,
10814
                                    dataIndex: rec.FieldName,
10815
                                    valueField: valueField,
10816
                                    displayField: displayValue,
10817
                                    store: 'store_' + me.tableName + rec.FieldName,
10818
                                    editor: {
10819
                                        allowBlank: null_,
10820
                                        xtype: 'combobox',
10821
                                        readOnly: ReadOnly_,
10822
                                        id: tableName + rec.FieldName,
10823
                                        nameTable: rec.TableName,
10824
                                        fieldGrid: rec.FieldName,
10825
                                        valueField: valueField,
10826
                                        displayField: displayValue,
10827
                                        vtype: 'validateCombobox',
10828
                                        store: 'store_' + me.tableName + rec.FieldName,
10829
                                    },
10830
                                    filter: {
10831
                                        type: 'list',
10832
                                        itemDefaults: {
10833
                                            emptyText: 'Search for...'
10834
                                        }
10835
                                    }
10836
                                });
10837

    
10838
                            } else if (rec.SearchType == '5') {							
10839
                                var valueField = null;
10840
                                var displayValue = null;
10841
                                var AdditionaldisplayValue = null;
10842
                                var TableRef = undefined;
10843
                                if (rec.TableRef != '') {
10844
                                    TableRef = rec.TableRef;
10845
                                    Ext.Ajax.request({
10846
                                        async: false,
10847
                                        method: 'POST',
10848
                                        url: '/UserControl/GetStore',
10849
                                        params: {
10850
                                            tableName: 'SDATATABLEFIELD',
10851
                                            param: 'TableName[equal]' + rec.TableRef
10852
                                        },
10853
                                        success: function (response) {
10854
                                            var results = Ext.decode(response.responseText);
10855
                                            data_ = results.data;
10856
                                            if (data_ != undefined) {
10857
                                                valueField_ = $.grep(data_, function (r) {
10858
                                                    return r.ValueField == '1'
10859
                                                });
10860
                                                if (valueField_.length > 0) {
10861
                                                    valueField = valueField_[0].FieldName
10862
                                                }
10863

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

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

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

    
11256
                                                    if (custumFunc) {
11257
                                                        eval(custumFunc)
11258
                                                    }
11259
                                                }
11260
                                            }
11261
                                        }
11262
                                    });
11263
                                }
11264
                            }
11265

    
11266
                            break
11267

    
11268
                    }
11269
                } else {
11270
                    cols.push({
11271
                        text: rec.HeaderTitle,
11272
                        hidden: Hidden_,
11273
                        dataIndex: rec.FieldName,
11274
                        hidden: true,
11275
                        editor: {
11276
                            allowBlank: true,
11277
                            xtype: 'textfield',
11278
                            readOnly: ReadOnly_,
11279
                            id: tableName + rec.FieldName,
11280
                            nameTable: rec.TableName,
11281
                            fieldGrid: rec.FieldName,
11282
                        },
11283
                        filter: {
11284
                            itemDefaults: {
11285
                                emptyText: 'Search for...'
11286
                            }
11287
                        }
11288
                    });
11289
                }
11290
            });
11291

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

    
11356
                            var seq = 'Sequence';
11357
                            var SequenceValue = Sequence;
11358
                            eval(addData);
11359
                            data[seq] = SequenceValue;
11360

    
11361
                            store.insert(idx, data);
11362
                        }
11363

    
11364
                    }, {
11365
                        text: 'Delete',
11366
                        hidden: hide_,
11367
                        name: tableName + 'DeleteText',
11368
                        iconCls: 'fa-trash-o',
11369
                        style: 'font-family: FontAwesome',
11370
                        //disabled: true
11371
                        handler: function () {
11372
                            var me = this,
11373
                            store = Ext.StoreMgr.lookup(storeID)
11374

    
11375
                            var grid = Ext.getCmp(gridName);
11376

    
11377
                            Ext.MessageBox.show({
11378
                                title: 'Remove tab',
11379
                                msg: "This will remove. Do you want to continue?",
11380
                                buttons: Ext.MessageBox.YESNO,
11381
                                fn: function (choice) {
11382
                                    console.log(choice);
11383
                                    if (choice === 'yes') {
11384
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11385
                                        if (selection) {
11386
                                            store.remove(selection);
11387
                                        }
11388
                                    }
11389
                                    //delete panel.pendingClose;
11390
                                }
11391
                            });
11392
                        }
11393

    
11394
                    }
11395
                    ]
11396
                }
11397
                ],
11398
                columns: cols,
11399
                selType: checkSelection,
11400
                //selType: 'rowmodel',
11401
                plugins: {
11402
                    ptype: 'rowediting',
11403
                    pluginId: 'rowEditing',
11404
                    clicksToEdit: 0,
11405
                    listeners: {
11406
                        //edit: 'onGridEditorEdit'
11407
                    }
11408
                }
11409
            }, ]
11410

    
11411
        });
11412

    
11413
        me.callParent(arguments);
11414
    }
11415
});
11416

    
11417
Ext.define('MinovaUtil.MinovaES.MinovaCellEditGrid', {
11418
    extend: 'Ext.form.Panel',
11419
    alias: ['widget.MinovaCellEditGrid', 'widget.minovacelleditgrid'],
11420
    requires: [
11421
		'Ext.grid.plugin.CellEditing',
11422
		'Ext.grid.Panel',
11423
    ],
11424

    
11425
    //renderTo: 'panel-extjs',
11426
    anchor: '100%',
11427
    tableName: undefined,
11428
    hideButton: undefined,
11429
    multiSelect: undefined,
11430
    initComponent: function () {
11431
        var me = this;
11432
        var isLookup = me.isLookup;
11433
        var hide_ = false;
11434
        var widthLock = 250;
11435
        var checkSelection = '';
11436

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

    
11475
                var null_ = null;
11476
                var ReadOnly_ = false;
11477
                if (rec.IsPrimaryKey == true) {
11478
                    null_ = false;
11479
                }
11480
                if (rec.IsRequired == true) {
11481
                    null_ = false;
11482
                } else {
11483
                    null_ = true;
11484
                }
11485
                if (rec.ReadOnly == '1') {
11486
                    ReadOnly_ = true;
11487
                }
11488
                var Hidden_ = false;
11489
                if (rec.ReadOnly == '1') {
11490
                    ReadOnly_ = true;
11491
                }
11492

    
11493
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
11494
                    Hidden_ = true;
11495
                    null_ = true;
11496
                }
11497

    
11498
                if (rec.GridView == 1) {
11499
                    switch (rec.FormatRef) {
11500
                        case "date":
11501
                            cols.push({
11502
                                xtype: 'minovadatecolumn',
11503
                                hidden: Hidden_,
11504
                                text: rec.HeaderTitle,
11505
                                dataIndex: rec.FieldName,
11506
                                filter: {
11507
                                    itemDefaults: {
11508
                                        emptyText: 'Search for...',
11509

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

    
11579
                                    Ext.Ajax.request({
11580
                                        async: false,
11581
                                        method: 'POST',
11582
                                        url: '/UserControl/GetStore',
11583
                                        params: {
11584
                                            tableName: 'SDATATABLEFIELD',
11585
                                            param: 'TableName[equal]' + rec.TableRef
11586
                                        },
11587
                                        success: function (response) {
11588
                                            var results = Ext.decode(response.responseText);
11589
                                            data_ = results.data;
11590
                                            if (data_ != undefined) {
11591
                                                valueField_ = $.grep(data_, function (r) {
11592
                                                    return r.ValueField == '1'
11593
                                                });
11594
                                                valueField = valueField_[0].FieldName
11595
                                                displayValue_ = $.grep(data_, function (r) {
11596
                                                    return r.DisplayValue == '1'
11597
                                                });
11598
                                                displayValue = displayValue_[0].FieldName
11599
                                            }
11600
                                        }
11601
                                    });
11602

    
11603
                                    //create Store
11604
                                    Ext.create('Ext.data.Store', {
11605
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11606
                                        autoLoad: true,
11607
                                        proxy: {
11608
                                            method: 'POST',
11609
                                            type: 'ajax',
11610
                                            url: '/UserControl/GetStoreAuth',
11611
                                            extraParams: {
11612
                                                tableName: TableRef,
11613
                                                param: rec.ParamCombo,
11614
                                                menuId: MinovaUtil.GetMenuID()
11615
                                            },
11616
                                            reader: {
11617
                                                type: 'json',
11618
                                                root: 'data',
11619
                                                totalProperty: 'data[0].TotalCount'
11620
                                            }
11621
                                        }
11622
                                    });
11623

    
11624
                                } else if (rec.FixedValue != '') {
11625
                                    var storeData = [];
11626
                                    var str = rec.FixedValue;
11627
                                    var hasil = str.split('||');
11628
                                    hasil.forEach(function (h) {
11629
                                        store_ = h.split('=')
11630
                                        storeData.push({
11631
                                            code: store_[0],
11632
                                            desc: store_[1],
11633

    
11634
                                        });
11635
                                    });
11636

    
11637
                                    valueField = 'code';
11638
                                    displayValue = 'desc';
11639

    
11640
                                    Ext.create('Ext.data.Store', {
11641
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11642
                                        autoLoad: true,
11643
                                        data: storeData
11644
                                    })
11645
                                }
11646

    
11647
                                cols.push({
11648
                                    xtype: 'minovacombocolumn',
11649
                                    hidden: Hidden_,
11650
                                    text: rec.HeaderTitle,
11651
                                    dataIndex: rec.FieldName,
11652
                                    valueField: valueField,
11653
                                    displayField: displayValue,
11654
                                    store: 'store_' + me.tableName + rec.FieldName,
11655
                                    editor: {
11656
                                        allowBlank: null_,
11657
                                        xtype: 'combobox',
11658
                                        readOnly: ReadOnly_,
11659
                                        id: tableName + rec.FieldName,
11660
                                        valueField: valueField,
11661
                                        displayField: displayValue,
11662
                                        store: 'store_' + me.tableName + rec.FieldName,
11663
                                    },
11664
                                    filter: {
11665
                                        type: 'list',
11666
                                        itemDefaults: {
11667
                                            emptyText: 'Search for...'
11668
                                        }
11669
                                    }
11670
                                });
11671

    
11672
                            } else if (rec.SearchType == '5') {							
11673
                                var valueField = null;
11674
                                var displayValue = null;
11675
                                var AdditionaldisplayValue = null;
11676
                                var TableRef = undefined;
11677
                                if (rec.TableRef != '') {
11678
                                    TableRef = rec.TableRef;
11679
                                    Ext.Ajax.request({
11680
                                        async: false,
11681
                                        method: 'POST',
11682
                                        url: '/UserControl/GetStore',
11683
                                        params: {
11684
                                            tableName: 'SDATATABLEFIELD',
11685
                                            param: 'TableName[equal]' + rec.TableRef
11686
                                        },
11687
                                        success: function (response) {
11688
                                            var results = Ext.decode(response.responseText);
11689
                                            data_ = results.data;
11690
                                            if (data_ != undefined) {
11691
                                                valueField_ = $.grep(data_, function (r) {
11692
                                                    return r.ValueField == '1'
11693
                                                });
11694
                                                if (valueField_.length > 0) {
11695
                                                    valueField = valueField_[0].FieldName
11696
                                                }
11697

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

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

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

    
12029
                                                if (custumFunc) {
12030
                                                    eval(custumFunc)
12031
                                                }
12032
                                            }
12033
                                        }
12034
                                    }
12035
                                });
12036
                            }
12037

    
12038
                            break
12039

    
12040
                    }
12041
                } else {
12042
                    cols.push({
12043
                        text: rec.HeaderTitle,
12044
                        hidden: Hidden_,
12045
                        dataIndex: rec.FieldName,
12046
                        hidden: true,
12047
                        editor: {
12048
                            allowBlank: true,
12049
                            xtype: 'textfield',
12050
                            readOnly: ReadOnly_,
12051
                            id: tableName + rec.FieldName,
12052
                        },
12053
                        filter: {
12054
                            itemDefaults: {
12055
                                emptyText: 'Search for...'
12056
                            }
12057
                        }
12058
                    });
12059
                }
12060
            });
12061
        };
12062

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

    
12128
                            store.insert(idx, data);
12129
                        }
12130

    
12131
                    }, {
12132
                        text: 'Delete',
12133
                        hidden: hide_,
12134
                        name: tableName + 'DeleteText',
12135
                        iconCls: 'fa-trash-o',
12136
                        style: 'font-family: FontAwesome',
12137
                        //disabled: true
12138
                        handler: function () {
12139
                            var me = this,
12140
                            store = Ext.StoreMgr.lookup(storeID)
12141

    
12142
                            var grid = Ext.getCmp(gridName);
12143

    
12144
                            Ext.MessageBox.show({
12145
                                title: 'Remove tab',
12146
                                msg: "This will remove. Do you want to continue?",
12147
                                buttons: Ext.MessageBox.YESNO,
12148
                                fn: function (choice) {
12149
                                    console.log(choice);
12150
                                    if (choice === 'yes') {
12151
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
12152
                                        if (selection) {
12153
                                            store.remove(selection);
12154
                                        }
12155
                                    }
12156
                                    //delete panel.pendingClose;
12157
                                }
12158
                            });
12159
                        }
12160

    
12161
                    }
12162
                    ]
12163
                }
12164
                ],
12165
                columns: cols,
12166
                selModel: {
12167
                    type: 'cellmodel'
12168
                },
12169
                plugins: [this.cellEditing],
12170
            }, ]
12171

    
12172
        });
12173

    
12174
        me.callParent(arguments);
12175
    }
12176
});
12177
//hamid200916
12178
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployeelama', {
12179
    extend: 'Ext.panel.Panel',
12180
    alias: 'widget.lookupemployeelama',
12181
    requires: [
12182
		'Ext.data.*',
12183
		'Ext.grid.*',
12184
		'Ext.tree.*',
12185
		'Ext.ux.CheckColumn',
12186
		//'MinovaES.View.sample.samplepopupEMPID'
12187

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

    
12241
                            var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12242
                            if (count_lookup == 1) {
12243
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12244
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12245
                            } else {
12246
                                //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12247
                                Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12248
                                    //    tableName: tableName_,
12249

    
12250
                                    //}).show()
12251
                                    //_popUploadView.tableName = tableName_;
12252
                                    tableName: tableName_,
12253
                                    targetField: this.name,
12254
                                }).show()
12255
                            }
12256

    
12257
                            //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12258
                            //var a = _popUploadView.show();
12259
                            var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12260
                            text.setValue(EmployeeID_);
12261

    
12262
                            if (EmployeeID_ !== "") {
12263
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12264
                                var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12265
                                store.proxy.extraParams = {
12266
                                    tableName: tableName_, //'PDSEMP0002',
12267
                                    param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12268
                                };
12269
                                store.reload();
12270
                            }
12271
                        },
12272
                        listeners: {
12273
                            specialkey: function (f, e) {
12274
                                if (e.getKey() == e.ENTER) {
12275
                                    //alert("about to submit");
12276
                                    var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12277
                                    var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12278
                                    var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12279
                                    var EmployeeID_ = EmployeeID.getValue();
12280

    
12281
                                    var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12282
                                    if (count_lookup == 1) {
12283
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12284
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12285
                                    } else {
12286
                                        Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12287
                                            tableName: tableName_,
12288
                                            targetField: this.name,
12289
                                        }).show()
12290
                                        //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12291
                                        //_popUploadView.targetField = this.name;
12292
                                        //_popUploadView.show();
12293

    
12294
                                    }
12295
                                    //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12296
                                    //var a = _popUploadView.show();
12297
                                    var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12298
                                    text.setValue(EmployeeID_);
12299

    
12300
                                    if (EmployeeID_ !== "") {
12301
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12302
                                        var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12303
                                        store.proxy.extraParams = {
12304
                                            tableName: tableName_, //'PDSEMP0002',
12305
                                            param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12306
                                        };
12307
                                        store.reload();
12308
                                    }
12309
                                    //myform.getForm().submit();
12310
                                }
12311
                            }
12312
                        }
12313

    
12314
                    }, {
12315
                        xtype: 'tbspacer',
12316
                        width: 5
12317
                    }, {
12318
                        xtype: 'button',
12319
                        name: nameField_,
12320
                        anchor: '50%',
12321
                        text: 'Advance',
12322
                        listeners: {
12323
                            click: function () {
12324
                                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEmployee]').length;
12325
                                if (count_lookup == 1) {
12326
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField = this.name;
12327
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].show();
12328
                                } else {
12329
                                    Ext.create('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12330
                                        tableName: tableName_,
12331
                                        targetField: this.name,
12332
                                    }).show()
12333
                                    //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeAdvance");
12334
                                    //_popUploadView.targetField = this.name;
12335
                                    //_popUploadView.show();
12336

    
12337
                                }
12338
                            }
12339
                        },
12340
                    }
12341
                    ]
12342
                }
12343
                ]
12344
            }
12345
            ]
12346
        });
12347
        me.callParent(arguments);
12348
    }
12349
});
12350

    
12351
Ext.define('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12352
    extend: 'Ext.window.Window',
12353
    alias: 'widget.popup_employeequicksearch',
12354
    requires: [
12355
		// 'MinovaES.controller.sample.ctrlsample',
12356
		//'MinovaES.store.data.TableType',
12357
    ],
12358
    //controller: 'ctrlsample',
12359
    height: '85%',
12360
    width: '42%',
12361
    minWidth: '50%',
12362
    maxWidth: '100%',
12363
    bodyPadding: 0,
12364
    formname: undefined,
12365
    //modal: true,
12366
    title: 'Lookup - EmployeeID',
12367
    name: 'popup_lookupEMPID',
12368
    test: undefined,
12369
    targetField: undefined,
12370
    tableName: undefined,
12371
    afterender: function () {
12372
        test = nameform;
12373
    },
12374
    initComponent: function () {
12375

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

    
12439
                        }
12440
                        ]
12441
                    }
12442
                    ]
12443
                }
12444
                ],
12445
            }, {
12446
                items: [{
12447
                    xtype: "minovagrid1",
12448
                    name: "GridEmployeeID",
12449
                    storename: 'lookupEMPID',
12450
                    tableName: tableName_, //'PDSEMP0002',
12451
                    param: '',
12452
                    isLookup: true,
12453
                    pagesize: 25,
12454
                    height: 425,
12455
                    listeners: {
12456
                        beforeedit: function () {
12457
                            return false;
12458
                        },
12459
                        itemdblclick: function () {
12460
                            var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
12461
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12462
                            var Emp_ = selection.data.EmployeeID;
12463
                            //var formSelection = Ext.ComponentQuery.query('[name=' + form + ']')[0];
12464
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12465

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

    
12568
                        }
12569
                    }
12570
                    ]
12571
                }, {
12572
                    xtype: 'minovagrid',
12573
                    name: 'gridlookup',
12574
                    minHeight: 320,
12575
                    height: 250,
12576
                    tableName: tableName_, //'PDSEMP0001',
12577
                    param: '',
12578
                    isLookup: true,
12579
                    storename: 'lookupStore',
12580
                    pagesize: 25,
12581
                    listeners: {
12582
                        beforeedit: function () {
12583
                            return false;
12584
                        },
12585
                        itemdblclick: function () {
12586
                            var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12587
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12588
                            var Emp_ = selection.data.EmployeeID;
12589
                            //var formSelection = Ext.ComponentQuery.query('[name=EmployeeSelection]')[0];
12590
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12591
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField;
12592
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12593
                            Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].hide();
12594

    
12595
                        }
12596
                    },
12597
                    dockedItems: [{
12598
                        xtype: 'pagingtoolbar',
12599
                        store: 'lookupStore',
12600
                        dock: 'bottom',
12601
                        displayInfo: true
12602
                    }
12603
                    ]
12604
                }
12605
                ]
12606
            }
12607
            ]
12608
        });
12609
        me.callParent(arguments);
12610
    }
12611
});
12612
//end hamid
12613

    
12614

    
12615
// lookup tree
12616
Ext.define('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12617
    extend: 'Ext.window.Window',
12618
    alias: 'widget.minovalookuptreePopup',
12619
    requires: [
12620

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

    
12654
        Ext.applyIf(me, {
12655
            items: [{
12656
                //xtype : 'panel',
12657
                items: [{
12658
                    xtype: 'tabpanel',
12659
                    items: [{
12660

    
12661
                        xtype: 'form',
12662
                        title: 'Structured Search',
12663
                        //height: '70%',
12664
                        tabConfig: {
12665
                            tooltip: 'Search by tree'
12666
                        },
12667
                        items: [{
12668
                            xtype: 'form',
12669
                            items: [{
12670

    
12671
                                xtype: 'treepanel',
12672
                                rootVisible: false,
12673
                                //height: 400,
12674

    
12675
                                name: 'searchByTreePopUp',
12676
                                useArrows: true,
12677
                                animate: false,
12678
                                targetField: targetField_,
12679
                                formname: formname_,
12680
                                root: {
12681
                                    expanded: true,
12682
                                    nodeType: 'async',
12683
                                    ext: 'Favorites',
12684
                                    id: 'null'
12685
                                },
12686
                                listeners: {
12687
                                    afterrender: function (me_) {
12688
                                        me_.mask();
12689
                                        if (treeSructure_ != 'O-O-P') {
12690
                                            var countCol = me_.columns.length;
12691
                                            me_.columns[countCol - 1].setHidden(true);
12692

    
12693
                                        }
12694
                                        if (StartDate_ != '') {
12695
                                            var node = "root";
12696
                                            var ObjectClass_ = treeSructure_.split('-');
12697
                                            //Ext.Ajax.request({
12698
                                            //    method: 'POST',
12699
                                            //    async: false,
12700
                                            //    url: '/UserControl/GetStoreAuth',
12701
                                            //    params: {
12702
                                            //        tableName: "PHROM0001",
12703
                                            //        param: "ObjectClass[=]" + ObjectClass_[0],
12704
                                            //        menuId: MinovaUtil.GetMenuID()
12705
                                            //    },
12706
                                            //    success: function (response) {
12707
                                            //        var results = Ext.decode(response.responseText);
12708
                                            //        var data_ = results.data;
12709
                                            //        if (data_.length > 0 && data_.length == 1) {
12710
                                            //            node = ObjectClass_[0] + data_[0].ObjectID;
12711
                                            //        }
12712

    
12713
                                            //    }
12714
                                            //});
12715

    
12716
                                            Ext.Ajax.request({
12717
                                                async: false,
12718
                                                //url: '/ORM/GetRelObjectTreeAsync?node=' + node + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12719
                                                url: '/ORM/GetRelObjectTreeAsyncAuth?node=' + 'root' + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_ + '&ObjectClass=' + ObjectClass_[0] + '&MenuID=' + /*MinovaUtil.GetMenuID()*/'PM01',
12720
                                                success: function (response) {
12721
                                                    var results = Ext.decode(response.responseText);
12722
                                                    var data_ = results.results;
12723
                                                    //console.log(data_)
12724
                                                    var pnl = Ext.ComponentQuery.query('[name=searchByTreePopUp]')[0];
12725
                                                    pnl.store.setRootNode({
12726
                                                        expanded: true,
12727
                                                        nodetype: 'async',
12728
                                                        children: data_
12729
                                                        //[]
12730
                                                    });
12731
                                                }
12732
                                            });
12733

    
12734
                                        }
12735
                                        me_.unmask();
12736
                                    },
12737
                                    afteritemexpand: function (node, index, item, eOpts) {
12738
                                        var me = this;
12739
                                        var data_ = null;
12740
                                        var idx = 0;
12741
                                        var tree_ = Ext.ComponentQuery.query('treepanel[name=searchByTreePopUp]')[0];
12742
                                        var v = tree_.getView();
12743
                                        tree_.mask('Expanding tree...');
12744
                                        var main_ = Ext.ComponentQuery.query('[name=ORMMain]')[0];
12745
                                        Ext.Ajax.request({
12746
                                            async: false,
12747
                                            url: '/ORM/GetRelObjectTreeAsync?node=' + node.get('Id') + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12748
                                            success: function (response) {
12749
                                                var results = Ext.decode(response.responseText);
12750
                                                data_ = results.results;
12751
                                                console.log(data_)
12752
                                            }
12753
                                        });
12754

    
12755
                                        if (data_.length > 0) {
12756
                                            data_.forEach(function (rec) {
12757

    
12758
                                                console.log(rec.Id)
12759
                                                if (v.store.data.find('Id', rec.Id) == null) {
12760
                                                    node.appendChild(data_[idx])
12761
                                                }
12762
                                                idx++;
12763
                                            })
12764
                                        }
12765

    
12766
                                        setTimeout(function () {
12767

    
12768
                                            tree_.unmask();
12769
                                        }, 200);
12770

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

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

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

    
12912
                                        }
12913

    
12914
                                    },
12915
                                }
12916
                                ]
12917

    
12918
                            }
12919
                            ]
12920
                        }
12921
                        ]
12922
                    }, {
12923
                        title: 'Search by Object',
12924
                        //height: 400,
12925
                        autoScroll: true,
12926
                        items: [{
12927
                            xtype: 'form',
12928
                            name: 'filterbyObj',
12929
                            margin: '5 5 5 5',
12930
                            buttons: [{
12931
                                text: 'Search',
12932
                                name: 'SearchAssign',
12933
                                handler: function () {
12934
                                    var storeGrid = Ext.StoreMgr.lookup("gridObj");
12935
                                    var form = Ext.ComponentQuery.query('[name=filterbyObj]')[0].getForm();
12936
                                    if (form.isValid()) {
12937
                                        var values_ = form.getValues();
12938
                                        storeGrid.proxy.url = '/ORM/SearchByObject?StartDate=' + values_.StartDate + "&EndDate=99991231" + "&ObjectID=" + values_.ObjectID + "&ObjectClass=" + values_.ObjectClass +
12939
                                            "&ObjectClassTarget=" + values_.ObjectClassTarget + "&ObjectDescription=" + values_.ObjectDescription +
12940
                                            "&Abbreviation=" + values_.Abbreviation + "&MenuID=" + MinovaUtil.GetMenuID() +
12941
                                            "&TreeStructCode=" + values_.TreeStructCode;
12942
                                        storeGrid.load({});
12943
                                        storeGrid.loadPage(1);
12944

    
12945
                                    }
12946

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

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

    
13069
                                            } else {
13070
                                                cek = true;
13071
                                            }
13072
                                        } else {
13073
                                            cek = true;
13074
                                        }
13075
                                    }
13076
                                    if (cek) {
13077
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
13078
                                        //form_.findField(targetField_).setValue(record.data.ObjectID);
13079
                                        //form_.findField(targetField_).valData = record.data.ObjectID + ' - ' + record.data.ObjectDescription;
13080
                                        form_.findField(targetField_).setValue('-');
13081
                                        form_.findField(targetField_).valData = '-';
13082
                                        form_.findField(targetField_).setValue(record.data.ObjectID);
13083
                                        form_.findField(targetField_).valData = record.data.ObjectID;
13084
                                        form_.findField(targetField_).setRawValue(record.data.ObjectID + ' - ' + record.data.ObjectDescription);
13085
                                        Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
13086
                                    } else {
13087
                                        alert(MinovaMessageData('OM0001', ''))
13088
                                    }
13089
                                },
13090
                                beforeclick: function () {
13091
                                    return false;
13092
                                }
13093

    
13094
                            },
13095
                            dockedItems: [{
13096
                                xtype: 'pagingtoolbar',
13097
                                store: 'gridObj',
13098
                                dock: 'bottom',
13099
                                displayInfo: true
13100
                            }
13101

    
13102
                            ]
13103
                        },
13104
                        ]
13105

    
13106
                    }
13107
                    ]
13108

    
13109
                }
13110
                ]
13111
            },
13112
            ]
13113

    
13114
        });
13115
        me.callParent(arguments);
13116
    }
13117
});
13118

    
13119

    
13120
Ext.define('MinovaUtil.MinovaES.MinovaLookupTree', {
13121
    extend: 'Ext.form.field.Trigger',
13122
    alias: ['widget.minovalookuptree', 'widget.MinovaLookupTree'],
13123
    treeSructure: undefined, // object relationship
13124
    objClassValue: undefined, // object yang akan di input ke field
13125
    formname: undefined, // nama form
13126
    targetField: undefined, // nama field yang akan diset value
13127
    initComponent: function () {
13128

    
13129
        this.callParent();
13130
    },
13131
    getValue: function () {
13132
        var me = this;
13133
        var hasil = '';
13134
        if (this.valData) {
13135
            hasil = this.valData.split('-')[0].replace(' ', '');
13136

    
13137
        } else {
13138
            if (me.rawValue != '' && me.rawValue != undefined) {
13139
                hasil = me.rawValue.split('-')[0].replace(' ', '');
13140
            }
13141
        }
13142

    
13143
        return hasil;
13144
    },
13145
    getSubmitValue: function () {
13146
        var me = this;
13147
        var hasil = '';
13148
        if (this.valData) {
13149
            hasil = this.valData.split('-')[0].replace(' ', '');
13150
        } else {
13151
            if (me.rawValue != '' && me.rawValue != undefined) {
13152
                hasil = me.rawValue.split('-')[0].replace(' ', '');
13153
            }
13154
        }
13155

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

    
13189
    },
13190
});
13191

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

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

    
13282
                                                    store.proxy.extraParams = {
13283
                                                        tableName: tableName_,
13284
                                                        param: param_,
13285
                                                        menuId: MinovaUtil.GetMenuID()
13286
                                                    };
13287
                                                    store.removeAll();
13288
                                                    store.reload();
13289
                                                    store.loadPage(1);
13290
                                                }
13291
                                            }
13292
                                        }
13293
                                    }, {
13294
                                        xtype: 'tbspacer',
13295
                                        width: 5
13296
                                    }, {
13297
                                        xtype: 'button',
13298
                                        name: 'Search',
13299
                                        text: 'Search',
13300
                                        filterParam: filterParam_,
13301
                                        handler: function () {
13302
                                            var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13303
                                            var emp_ = emp.getValue();
13304
                                            var store = Ext.data.StoreManager.lookup('storeQC');
13305
                                            var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13306

    
13307
											
13308
                                            if (tableName_ == 'PDSRC0002') {
13309
                                                param_ = 'AppIDExternalIDFullName[like]' + emp_
13310
                                            }else {
13311
                                                param_ = 'EmpIDExternalIDFullName[like]' + emp_
13312
                                            }
13313
                                            if (this.filterParam) {
13314
                                                param_ = param_ + ',' + this.filterParam
13315
                                            }
13316
											if(tableName_ == 'PCMPROCNUMBER'){
13317
												var docno = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0].getForm().findField('DocNo').getValue();
13318
                                                param_ = 'DocNo[like]'+docno+',ProcessNumber[like]' + emp_;
13319
												store.proxy.extraParams = {
13320
													tableName: 'PTRPRODUCTIONPROCESSOVERVIEW',
13321
													param: param_,
13322
													menuId: MinovaUtil.GetMenuID()
13323
												};												
13324
                                            }else{
13325
												store.proxy.extraParams = {
13326
													tableName: tableName_,
13327
													param: param_,
13328
													menuId: MinovaUtil.GetMenuID()
13329
												};												
13330
											}										
13331

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

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

    
13496
                        }
13497
                        ]
13498

    
13499
                    }
13500
                    ]
13501

    
13502
                }
13503
                ]
13504
            }
13505
            ]
13506
        });
13507
        me.callParent(arguments);
13508
    }
13509
});
13510

    
13511
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployee', {
13512
    extend: 'Ext.form.field.Trigger',
13513
    alias: 'widget.lookupemployee',
13514

    
13515
    formname: undefined,
13516
    fieldname: undefined,
13517
    allowBlank: undefined,
13518
    width: undefined,
13519
    tableName: undefined,
13520
    LookupFunction: undefined,
13521
    targetField: undefined,
13522
    vtype: 'validateMinovaXss',
13523
    fieldValue: undefined,
13524
    initComponent: function () {
13525

    
13526
        this.callParent();
13527
    },
13528
    onTriggerClick: function () {
13529
        var nameField_ = this.fieldname;
13530
        var blank = this.allowBlank;
13531
        var width_ = this.width;
13532
        var tableName_ = this.tableName;
13533
        var panelform = "form" + this.name;
13534
        //add filer by atin
13535
        var filterParam_ = this.filterParam;
13536
        // and add by atin
13537
        var _targetField = this.name;
13538
        if (this.targetField) {
13539
            _targetField = targetField
13540
        }
13541
        var fieldValue_ = this.fieldValue;
13542
        var _fieldLabel = this.fieldLabel;
13543

    
13544
        //var tableName_ = this.tableName;
13545
        var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13546
        var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13547
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13548
        var EmployeeID_ = EmployeeID.getValue();
13549
        var LookupFunction = this.LookupFunction;
13550
        var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13551
        if (count_lookup == 1) {
13552
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13553
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13554
        } else {
13555
            Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13556
				height: '25%', //saswanto 31jan2022
13557
                tableName: tableName_,
13558
                targetField: this.name,
13559
                fieldValue: fieldValue_,
13560
                LookupFunction: LookupFunction,
13561
                filterParam: filterParam_,
13562
            }).show()
13563
        }
13564
        var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13565
        text.setValue(EmployeeID_);
13566
        var store = Ext.data.StoreManager.lookup('storeQC');
13567
        if (EmployeeID_ !== "") {
13568

    
13569
            var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13570
            if (tableName_ == 'PDSEMP0002') {
13571
                param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13572
            } else {
13573
                param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13574
            }
13575
            if (filterParam_) {
13576
                param_ = param_ + ',' + filterParam_;
13577
            }
13578
            store.proxy.extraParams = {
13579
                tableName: tableName_, //'PDSEMP0002',
13580
                param: param_,
13581
                menuId: MinovaUtil.GetMenuID()
13582
            };
13583
            store.reload();
13584
        } else {
13585
            store.proxy.extraParams = {
13586
                tableName: tableName_, //'PDSEMP0002',
13587
                param: filterParam_,
13588
                menuId: MinovaUtil.GetMenuID()
13589
            };
13590
            store.reload();
13591
        }
13592

    
13593
    },
13594
    listeners: {
13595
        specialkey: function (f, e) {
13596
            if (e.getKey() == e.ENTER) {
13597
                //alert("about to submit");
13598
                var nameField_ = this.fieldname;
13599
                var blank = this.allowBlank;
13600
                var width_ = this.width;
13601
                var tableName_ = this.tableName;
13602
                var panelform = "form" + this.name;
13603
                //add filer by atin
13604
                var filterParam = this.filterParam;
13605
                // and add by atin
13606
                var _targetField = this.name;
13607
                var _fieldLabel = this.fieldLabel;
13608
                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13609
                var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13610
                var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13611
                var EmployeeID_ = EmployeeID.getValue();
13612

    
13613
                var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13614
                if (count_lookup == 1) {
13615
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13616
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13617
                } else {
13618
                    Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13619
                        tableName: tableName_,
13620
                        targetField: this.name,
13621
                        fieldValue: this.fieldValue,
13622
                        LookupFunction: this.LookupFunction,
13623
                        filterParam: filterParam,
13624
                    }).show()
13625
                }
13626
                var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13627
                text.setValue(EmployeeID_);
13628

    
13629
                if (EmployeeID_ !== "") {
13630
                    var store = Ext.data.StoreManager.lookup('storeQC');
13631
                    var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13632
                    if (tableName_ == 'PDSEMP0002') {
13633
                        param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13634
                    } else {
13635
                        param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13636
                    }
13637
                    if (filterParam_) {
13638
                        param_ = param_ + ',' + filterParam_;
13639
                    }
13640
                    store.proxy.extraParams = {
13641
                        tableName: tableName_, //'PDSEMP0002',
13642
                        param: param_,
13643
                        menuId: MinovaUtil.GetMenuID()
13644
                    };
13645
                    store.reload();
13646
                }
13647
            }
13648
        }
13649
    }
13650

    
13651
});
13652
Ext.define('MinovaUtil.MinovaES.UploadFile', {
13653
    extend: 'Ext.form.field.Trigger',
13654
    alias: 'widget.uploadfile',
13655

    
13656
    //fieldLabel: undefined,
13657
    uploadName: 'uploadName',
13658
    formname: undefined,
13659
    fieldname: undefined,
13660
    allowBlank: undefined,
13661
    width: undefined,
13662
    tableName: undefined,
13663
    initComponent: function () {
13664

    
13665
        this.callParent();
13666
    },
13667
    onTriggerClick: function () {
13668
        var nameField_ = this.fieldname;
13669
        var blank = this.allowBlank;
13670
        var width_ = this.width;
13671
        var tableName_ = this.tableName;
13672
        var panelform = "form" + this.name;
13673
        var val_ = this.value;
13674
        var _targetField = this.name;
13675
        var _fieldLabel = this.fieldLabel;
13676

    
13677
        //var tableName_ = this.tableName;
13678
        var count_lookup = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13679
        var lookupEMPID = Ext.ComponentQuery.query('[name=FormFileUpload]')[0];
13680
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13681
        var EmployeeID_ = EmployeeID.getValue();
13682

    
13683
        var FormFileUpload = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13684
        Ext.create('MinovaES.view.uploadfile.fileupload', {
13685
            tableName: tableName_,
13686
            targetField: this.name,
13687
            valueFile: val_,
13688
            titleLookup: _fieldLabel,
13689
        }).show()
13690

    
13691
    }
13692

    
13693
});
13694

    
13695
//atien
13696
Ext.define('MinovaES.view.uploadfile.fileupload', {
13697
    extend: 'Ext.window.Window',
13698
    alias: 'widget.fileupload',
13699
    requires: [
13700

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

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

    
13796
                }
13797
                ],
13798
                items: [{
13799
                    xtype: 'filefield',
13800
                    name: 'File',
13801
                    fieldLabel: 'Select File',
13802
                    //allowBlank: false,
13803
                    //width: 270,
13804
                    //labelWidth: 85,
13805
                }, {
13806
                    xtype: 'textfield',
13807
                    name: 'FileID_',
13808
                    hidden: true,
13809
                }, {
13810
                    xtype: 'textfield',
13811
                    name: 'FileMax',
13812
                    hidden: true,
13813
                }
13814
                ]
13815
            }
13816
            ]
13817
        });
13818
        me.callParent(arguments);
13819
    }
13820
});
13821
//atien
13822

    
13823

    
13824
//update by hamid 12012017
13825
Ext.define('MinovaES.view.uploadfile.fileupload1', {
13826
    extend: 'Ext.window.Window',
13827
    alias: 'widget.fileupload1',
13828
    requires: [
13829

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

    
13901
                        }
13902
                    }
13903
                    ],
13904
                    items: [{
13905
                        xtype: 'fieldset',
13906
                        layout: 'hbox',
13907
                        width: '100%',
13908
                        bodyPadding: 10,
13909
                        border: 0,
13910
                        padding: 0,
13911
                        items: [{
13912
                            xtype: 'filefield',
13913
                            name: 'File',
13914
                            fieldLabel: 'Select File',
13915
                            //allowBlank: false,
13916
                            width: 270,
13917
                            labelWidth: 85,
13918
                        }
13919
                        ]
13920
                    }
13921
                    ]
13922
                    //items: [{
13923
                    //    xtype: 'form',
13924
                    //    name: 'Photo',
13925
                    //    width: '100%',
13926
                    //    height: 'auto',
13927
                    //    dockedItems: [{
13928
                    //        xtype: 'toolbar',
13929
                    //        dock: 'top',
13930
                    //        layout: 'vbox',
13931
                    //        bodyPadding: 10,
13932
                    //        border: 0,
13933
                    //        items: [{
13934
                    //            xtype: 'fieldset',
13935
                    //            layout: 'hbox',
13936
                    //            width: '100%',
13937
                    //            border: 0,
13938
                    //            padding: 0,
13939
                    //            items: [{
13940
                    //                xtype: 'filefield',
13941
                    //                name: 'SelectFile',
13942
                    //                fieldLabel: 'Select File',
13943
                    //                width: 270,
13944
                    //                labelWidth: 85,
13945
                    //                enableKeyEvents: true,
13946
                    //                buttonText: 'Browse',
13947
                    //            }]
13948

    
13949
                    //        }
13950
                    //        ]
13951
                    //    }
13952
                    //    ]
13953
                    //}]
13954
                }, {
13955
                    title: 'View Image',
13956
                    //height: 400,
13957
                    //autoScroll: true,
13958
                    items: [{
13959
                        xtype: 'form',
13960
                        name: 'ViewImage',
13961
                        //margin: '5 5 5 5',
13962
                        items: [{
13963
                            xtype: 'form',
13964
                            buttons: [{
13965
                                text: 'Download',
13966
                                handler: function () {},
13967
                                href: '/Devt/GetFileData?FileName=' + img_ + '&download=true'
13968

    
13969
                            }
13970
                            ],
13971
                            items: [{
13972
                                xtype: 'image',
13973
                                //id: 'imageuser',
13974
                                src: '/Devt/GetFileData?FileName=' + img_ + '&download=false'
13975
                            },
13976
                            ]
13977
                        }
13978
                        ]
13979

    
13980
                    }
13981
                    ]
13982

    
13983
                }
13984
                ]
13985

    
13986
            }
13987
            ]
13988

    
13989
        });
13990
        me.callParent(arguments);
13991
    }
13992
});
13993

    
13994
Ext.define('MinovaUtil.MinovaES.Column.MinovaPictureColumn', {
13995
    extend: 'Ext.grid.column.Column',
13996
    alias: ['widget.minovapicturecolumn'],
13997
    alternateClassName: 'Ext.grid.MinovaPictureColumn',
13998
    //undefinedText: '&#160;',
13999
    defaultRenderer: function (value) {
14000
        return '<img alt="" class="icon-imagecolumn" src = "/Devt/GetFileData?FileName=' + value + '&download=false"  id="">'
14001
    }
14002
});
14003

    
14004
Ext.define('MinovaUtil.MinovaES.MinovaFixValue', {
14005
    extend: 'Ext.form.field.ComboBox',
14006
    alias: ['widget.MinovaFixValue', 'widget.minovafixvalue'],
14007
    fixedValue: undefined,
14008
    anchor: '50%',
14009
    queryMode: 'local',
14010
    forceSelection: true, // cek data
14011
    getValue: function () {
14012
        var value = this.value;
14013

    
14014
        return value;
14015
    },
14016
    getSubmitValue: function () {
14017
        var value = this.value;
14018

    
14019
        return value;
14020
    },
14021
    initComponent: function () {
14022
        var me = this;
14023
        var storeData = [];
14024
        //var str= "y=yes|| n=no";
14025
        var str = me.fixedValue;
14026
        var hasil = str.split('||');
14027
        hasil.forEach(function (h) {
14028
            store_ = h.split('=')
14029
            storeData.push({
14030
                code: store_[0],
14031
                desc: store_[1],
14032

    
14033
            });
14034
        });
14035
        Ext.applyIf(me, {
14036

    
14037
            store: Ext.create('Ext.data.Store', {
14038
                storeId: 'store' + name,
14039
                autoLoad: true,
14040
                data: storeData
14041

    
14042
            }),
14043
        });
14044
        me.callParent(arguments);
14045
    }
14046
});
14047

    
14048
Ext.define('MinovaUtil.MinovaES.MinovaDecimal', {
14049
    extend: 'Ext.form.field.Text',
14050
    alias: ['widget.MinovaDecimal', 'widget.minovadecimal'],
14051
    fixedValue: undefined,
14052
    anchor: '50%',
14053
    getValue: function () {
14054
        var value = this.value;
14055

    
14056
        return value.replace(',', '.');
14057
    },
14058
    getSubmitValue: function () {
14059
        var value = this.value;
14060
        return value.replace(',', '.');
14061
    },
14062
    initComponent: function () {
14063
        var me = this;
14064
        Ext.applyIf(me, {});
14065
        me.callParent(arguments);
14066
    }
14067
});
14068

    
14069
Ext.define('MinovaUtil.com.xtype.MinovaWorflowEditor', {
14070
    extend: 'Ext.panel.Panel',
14071
    alias: ['widget.minovawfeditor', 'widget.minovafloweditor'],
14072
    title: undefined,
14073
    initComponent: function () {
14074
        // this.layout = 'fit';
14075
        this.readOnly = this.readOnly ? this.readOnly : false;
14076
        this.autoScroll = true;
14077
        this.height = 600;
14078
        this.title = this.title ? this.title : 'Workflow editor';
14079
        this.html = '<div id="minovaGraphContainer" title="' + this.title
14080
			 + '" style="background:white; padding:20px"></div>';
14081
        this.tbar = [{
14082
            xtype: 'button',
14083
            hidden: true,
14084
            text: 'add Task',
14085
            handler: this.addTask
14086

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

    
14182
			            }
14183
			        } catch (e) {}
14184
			    }
14185
			}, {
14186
			    xtype: 'tbseparator'
14187
			}, {
14188
			    text: 'In',
14189
			    name: 'zoomin',
14190
			    handler: function () {
14191
			        graph.zoomIn();
14192
			        graph.fit();
14193
			    }
14194
			}, {
14195
			    text: 'Out',
14196
			    name: 'zoomout',
14197
			    handler: function () {
14198
			        graph.zoomOut();
14199
			        graph.fit();
14200
			    }
14201
			}
14202
			// , {
14203
			// text : 'Fit',
14204
			// name : 'zoomfit',
14205
			// handler : function() {
14206
			// graph.fit();
14207
			// }
14208
			// }
14209
		, {
14210
		    xtype: 'tbseparator'
14211
		}, {
14212
		    xtype: 'button',
14213
		    text: 'print',
14214
		    name: 'print',
14215
		    handler: this.printPreview
14216
		}
14217
        ]
14218

    
14219
        this.autoScroll = true;
14220
        this.listeners = {
14221
            afterrender: this.onAfterRender,
14222
            resize: this.onResize
14223
        }
14224

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

    
14277
            // Enables crisp rendering in SVG
14278
            // mxShape.prototype.crisp = true;
14279

    
14280
            // Enables guides
14281
            // mxGraphHandler.prototype.guidesEnabled = true;
14282

    
14283
            // Alt disables guides
14284
            // mxGuide.prototype.isEnabledForEvent = function(evt) {
14285
            // return !mxEvent.isAltDown(evt);
14286
            // };
14287

    
14288
            // Enables snapping waypoints to terminals
14289
            // mxEdgeHandler.prototype.snapToTerminals = true;
14290

    
14291
            // Enables orthogonal connect preview in IE
14292
            // mxConnectionHandler.prototype.movePreviewAway = true;
14293

    
14294
            // Creates the graph inside the given container
14295
            graph = new mxGraph(container);
14296
            // graph.disconnectOnMove = false;
14297
            // graph.foldingEnabled = false;
14298
            // graph.cellsResizable = false;
14299
            // graph.extendParents = false;
14300
            // graph.setConnectable(true);
14301
            graph.setAllowDanglingEdges(false);
14302

    
14303
            // Implements perimeter-less connection points as fixed points
14304
            // (computed before the edge style).
14305
            // graph.view.updateFixedTerminalPoint = function(edge, terminal,
14306
            // source, constraint) {
14307
            // mxGraphView.prototype.updateFixedTerminalPoint.apply(this,
14308
            // arguments);
14309
            //
14310
            // var pts = edge.absolutePoints;
14311
            // var pt = pts[(source) ? 0 : pts.length - 1];
14312
            //
14313
            // if (terminal != null && pt == null
14314
            // && this.getPerimeterFunction(terminal) == null) {
14315
            // edge.setAbsoluteTerminalPoint(new mxPoint(this
14316
            // .getRoutingCenterX(terminal), this
14317
            // .getRoutingCenterY(terminal)),
14318
            // source)
14319
            // }
14320
            // };
14321

    
14322
            // Changes the default edge style
14323
            graph.getStylesheet().getDefaultEdgeStyle()['edgeStyle'] = 'orthogonalEdgeStyle';
14324
            // delete graph.getStylesheet().getDefaultEdgeStyle()['endArrow'];
14325

    
14326
            // Implements the connect preview
14327
            graph.connectionHandler.createEdgeState = function (me) {
14328
                var edge = graph.createEdge(null, null, null, null, null);
14329

    
14330
                return new mxCellState(this.graph.view, edge, this.graph
14331
					.getCellStyle(edge));
14332
            };
14333

    
14334
            // Uncomment the following if you want the container
14335
            // to fit the size of the graph
14336
            // graph.setResizeContainer(true);
14337

    
14338
            // Enables rubberband selection
14339
            new mxRubberband(graph);
14340

    
14341
            // Disables basic selection and cell handling
14342
            graph.setEnabled(false);
14343

    
14344
            // Gets the default parent for inserting new cells. This
14345
            // is normally the first child of the root (ie. layer 0).
14346
            var parent = graph.getDefaultParent();
14347

    
14348
            // Enables HTML labels as wrapping is only available for those
14349
            graph.htmlLabels = true;
14350

    
14351
            // Disables in-place editing for edges
14352
            // graph.isCellEditable = function(cell) {
14353
            // return !this.model.isEdge(cell);
14354
            // };
14355

    
14356
            // Changes the default vertex style in-place
14357
            var style = graph.getStylesheet().getDefaultVertexStyle();
14358
            style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14359
            style[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14360
            style[mxConstants.STYLE_PERIMETER_SPACING] = 1; // 6;
14361
            style[mxConstants.STYLE_ROUNDED] = true;
14362
            style[mxConstants.STYLE_SHADOW] = true;
14363

    
14364
            style = graph.getStylesheet().getDefaultEdgeStyle();
14365
            style[mxConstants.STYLE_ROUNDED] = true;
14366
            style[mxConstants.STYLE_EDGE] = mxEdgeStyle.SegmentConnector;
14367

    
14368
            var style2 = new Object();
14369
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14370
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
14371
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14372
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14373
            style2[mxConstants.STYLE_ROUNDED] = true;
14374
            style2[mxConstants.STYLE_SHADOW] = true;
14375
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14376
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14377
            style2[mxConstants.STYLE_ALIGN] = 'center';
14378
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14379
            graph.getStylesheet().putCellStyle('RHOMBUS', style2);
14380

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

    
14394
            style2 = new Object();
14395
            style2[mxConstants.STYLE_SHAPE] = 'label';
14396
            style2[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom';
14397
            style2[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse';
14398
            style2[mxConstants.STYLE_INDICATOR_WIDTH] = 34;
14399
            style2[mxConstants.STYLE_INDICATOR_HEIGHT] = 34;
14400
            style2[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment
14401
            style2[mxConstants.STYLE_IMAGE_ALIGN] = 'center';
14402
            graph.getStylesheet().putCellStyle('LABEL', style2);
14403

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

    
14439
        }
14440
    }
14441
});
14442

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

    
14522
                            _e.setValue(new Date());
14523
                        }
14524
                    },
14525
                    onOkClick: function () {
14526
                        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14527
                        if (_e.value[0] == null || _e.value[1] == null) {
14528
                            alert('Pilih Tanggal!');
14529
                            return;
14530
                        }
14531

    
14532
                        var _m = (_e.value[0] + 1).toString();
14533
                        if (_m.length == 1) {
14534
                            _m = '0' + _m;
14535
                        }
14536
                        var _period = _m + ' - ' + _e.value[1].toString();
14537

    
14538
                        var _f = Ext.ComponentQuery.query('[name=' + fieldtarget + ']')[0];
14539
                        _f.setValue(_period);
14540

    
14541
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14542
                    },
14543
                    onCancelClick: function () {
14544
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14545
                    }
14546
                }
14547
                ]
14548
            }).show();
14549
        }
14550
    }
14551
});
14552

    
14553
Ext.define('MinovaUtil.MinovaES.Column.MinovaTimeColumn', {
14554
    extend: 'Ext.grid.column.Column',
14555
    alias: ['widget.minovatimecolumn'],
14556
    alternateClassName: 'Ext.grid.MinovaTimeColumn',
14557
    undefinedText: '&#160;',
14558
    defaultRenderer: function (value) {
14559
        if (value === "") {
14560
            return "";
14561
        }
14562
        return hasil;
14563
    }
14564
});
14565

    
14566
Ext.define('MinovaUtil.MinovaES.Column.MinovaCurrencyColumn', {
14567
    extend: 'Ext.grid.column.Column',
14568
    alias: ['widget.minovacurrancycolumn'],
14569
    undefinedText: '&#160;',
14570
    defaultRenderer: function (value) {
14571
        if (value === "" || value === undefined || value === null) {
14572
            return this.undefinedText;
14573
        }
14574

    
14575
        Ext.util.Format.thousandSeparator = ",";
14576
        Ext.util.Format.decimalSeparator = ".";
14577
        value = value.toString().replace(',', '.');
14578
        return Ext.util.Format.number(value, '0,000.00');
14579
    }
14580
});
14581

    
14582
Ext.define('MinovaUtil.MinovaES.Field.MinovaCurrencyField', {
14583
    extend: 'Ext.form.field.Text',
14584
    alias: ['widget.MinovaCurrencyField', 'widget.minovacurrencyfield'],
14585
    undefinedText: '&#160;',
14586
    defaultRenderer: function (value) {
14587
        if (value === "" || value === undefined || value === null) {
14588
            return this.undefinedText;
14589
        }
14590

    
14591
        Ext.util.Format.thousandSeparator = ",";
14592
        Ext.util.Format.decimalSeparator = ".";
14593
        value = value.toString().replace(',', '.');
14594
        return Ext.util.Format.number(value, '0000.00');
14595
    }
14596
});
14597

    
14598
Ext.define('MinovaUtil.MinovaES.MinovaGridMD', {
14599
    extend: 'Ext.grid.Panel',
14600
    requires: ['Ext.grid.RowNumberer'],
14601
    alias: 'widget.minovagridmd',
14602
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14603
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14604
    alternateClassName: 'Ext.grid.MinovaGrid',
14605
    //controller:'orm-manage2-controller',
14606
    tableName: undefined,
14607
    isLookup: undefined,
14608
    param: undefined,
14609
    pagesize: undefined,
14610
    storename: undefined,
14611
    layoutType: undefined,
14612
    enableLocking: true,
14613
    autoLoad: undefined,
14614
    multiSelect: undefined,
14615
    getTableName: function () {
14616
        return this.tableName;
14617
    },
14618

    
14619
    initComponent: function () {
14620
        var me = this;
14621
        var cols_ = [];
14622
        var fieldeditor = {};
14623
        var hasil = null;
14624
        var autoLoad = true;
14625
        var LangID = localStorage.LangId;
14626
        var fielGrid = 'rec.GridView == 1';
14627
        var locking = true;
14628
        var checkSelection = '';
14629
        var widthLock = 250;
14630
        if (me.multiSelect) {
14631
            locking = false;
14632
            checkSelection = 'checkboxmodel';
14633
            widthLock = 40;
14634
        }
14635
        //var _url = 'GetAllField';
14636
        if (me.autoLoad == false) {
14637
            autoLoad = false;
14638
        }
14639
        parameter = null;
14640
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14641
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
14642
            fielGrid = 'rec.LookupGrid == 1';
14643
            locking = false;
14644

    
14645
        } else {
14646
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
14647
            //autoLoad = false;
14648
            //_url = 'GetAllFieldGridLookUp';
14649
        };
14650

    
14651
        //Ext.Ajax.request({
14652
        //	async : false,
14653
        //	method : 'POST',
14654
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
14655
        //	success : function (response) {
14656
        //		var results = Ext.decode(response.responseText);
14657
        //		hasil = results.data;
14658
        //	}
14659
        //});
14660
        //hamid03102016
14661

    
14662
        Ext.Ajax.request({
14663
            async: false,
14664
            method: 'POST',
14665
            url: '/UserControl/GetStore',
14666
            params: {
14667
                tableName: 'PDSBS0007',
14668
                param: parameter
14669
            },
14670
            success: function (response) {
14671
                var results = Ext.decode(response.responseText);
14672
                hasil = results.data;
14673
            }
14674
        });
14675
        //end
14676

    
14677
        if (hasil.length > 0) {
14678

    
14679
            Ext.each(hasil, function (rec) {
14680
                var null_ = null;
14681
                if (rec.IsPrimaryKey == true) {
14682
                    null_ = false;
14683
                }
14684
                if (rec.IsRequired == true) {
14685
                    null_ = false;
14686
                } else {
14687
                    null_ = true;
14688
                }
14689

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

    
14858
                                } else {
14859
                                    cols_.push({
14860
                                        text: rec.HeaderTitle,
14861
                                        dataIndex: rec.FieldName,
14862
                                        filter: {
14863
                                            itemDefaults: {
14864
                                                emptyText: 'Search for...'
14865
                                            }
14866
                                        }
14867
                                    });
14868
                                }
14869
                                break
14870
                        }
14871
                    } else {
14872
                        cols_.push({
14873
                            text: rec.HeaderTitle,
14874
                            dataIndex: rec.FieldName,
14875
                            hidden: true,
14876
                            filter: {
14877
                                itemDefaults: {
14878
                                    emptyText: 'Search for...'
14879
                                }
14880
                            }
14881
                        });
14882
                    }
14883

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

    
15078
                                } else if (rec.FixedValue != "") {
15079
                                    cols_.push({
15080
                                        xtype: 'minovacombocolumnfixvalue',
15081
                                        text: rec.HeaderTitle,
15082
                                        dataIndex: rec.FieldName,
15083
                                        fixedValue: rec.FixedValue,
15084
                                        filter: {
15085
                                            type: 'list',
15086
                                            itemDefaults: {
15087
                                                emptyText: 'Search for...'
15088
                                            }
15089
                                        }
15090
                                    });
15091
                                } else {
15092
                                    cols_.push({
15093
                                        text: rec.HeaderTitle,
15094
                                        dataIndex: rec.FieldName,
15095
                                        filter: {
15096
                                            itemDefaults: {
15097
                                                emptyText: 'Search for...'
15098
                                            }
15099
                                        }
15100
                                    });
15101
                                }
15102
                                break
15103
                        }
15104
                    } else {
15105
                        cols_.push({
15106
                            text: rec.HeaderTitle,
15107
                            dataIndex: rec.FieldName,
15108
                            hidden: true,
15109
                            filter: {
15110
                                itemDefaults: {
15111
                                    emptyText: 'Search for...'
15112
                                }
15113
                            }
15114
                        });
15115
                    }
15116

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

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

    
15211
        });
15212
        me.callParent(arguments);
15213
    }
15214

    
15215
});
15216

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

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

    
15405
                                    Ext.Ajax.request({
15406
                                        async: false,
15407
                                        method: 'POST',
15408
                                        url: '/UserControl/GetStore',
15409
                                        params: {
15410
                                            tableName: 'SDATATABLEFIELD',
15411
                                            param: 'TableName[equal]' + rec.TableRef
15412
                                        },
15413
                                        success: function (response) {
15414
                                            var results = Ext.decode(response.responseText);
15415
                                            data_ = results.data;
15416
                                            if (data_ != undefined) {
15417
                                                valueField_ = $.grep(data_, function (r) {
15418
                                                    return r.ValueField == '1'
15419
                                                });
15420
                                                valueField = valueField_[0].FieldName
15421
                                                displayValue_ = $.grep(data_, function (r) {
15422
                                                    return r.DisplayValue == '1'
15423
                                                });
15424
                                                displayValue = displayValue_[0].FieldName
15425
                                            }
15426
                                        }
15427
                                    });
15428

    
15429
                                    //create Store
15430
                                    Ext.create('Ext.data.Store', {
15431
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15432
                                        autoLoad: true,
15433
                                        proxy: {
15434
                                            method: 'POST',
15435
                                            type: 'ajax',
15436
                                            url: '/UserControl/GetStore',
15437
                                            extraParams: {
15438
                                                tableName: TableRef,
15439
                                                param: rec.ParamCombo
15440
                                            },
15441
                                            reader: {
15442
                                                type: 'json',
15443
                                                root: 'data',
15444
                                                totalProperty: 'data[0].TotalCount'
15445
                                            }
15446
                                        }
15447
                                    });
15448
                                } else if (rec.FixedValue != '') {
15449
                                    var storeData = [];
15450
                                    var str = rec.FixedValue;
15451
                                    var hasil = str.split('||');
15452
                                    hasil.forEach(function (h) {
15453
                                        store_ = h.split('=')
15454
                                        storeData.push({
15455
                                            code: store_[0],
15456
                                            desc: store_[1],
15457

    
15458
                                        });
15459
                                    });
15460

    
15461
                                    valueField = 'code';
15462
                                    displayValue = 'desc';
15463

    
15464
                                    Ext.create('Ext.data.Store', {
15465
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15466
                                        autoLoad: true,
15467
                                        data: storeData
15468
                                    })
15469
                                }
15470

    
15471
                                cols.push({
15472
                                    xtype: 'minovacombocolumn',
15473
                                    hidden: Hidden_,
15474
                                    text: rec.HeaderTitle,
15475
                                    dataIndex: rec.FieldName,
15476
                                    valueField: valueField,
15477
                                    displayField: displayValue,
15478
                                    store: 'store_' + me.tableName + rec.FieldName,
15479
                                    editor: {
15480
                                        allowBlank: null_,
15481
                                        xtype: 'combobox',
15482
                                        readOnly: ReadOnly_,
15483
                                        id: tableName + rec.FieldName,
15484
                                        nameTable: rec.TableName,
15485
                                        fieldGrid: rec.FieldName,
15486
                                        valueField: valueField,
15487
                                        displayField: displayValue,
15488

    
15489
                                        store: 'store_' + me.tableName + rec.FieldName,
15490
                                    },
15491
                                    filter: {
15492
                                        type: 'list',
15493
                                        itemDefaults: {
15494
                                            emptyText: 'Search for...'
15495
                                        }
15496
                                    }
15497
                                });
15498
                            } else if (rec.SearchType == '5') {							
15499
                                var valueField = null;
15500
                                var displayValue = null;
15501
                                var AdditionaldisplayValue = null;
15502
                                var TableRef = undefined;
15503
                                if (rec.TableRef != '') {
15504
                                    TableRef = rec.TableRef;
15505
                                    Ext.Ajax.request({
15506
                                        async: false,
15507
                                        method: 'POST',
15508
                                        url: '/UserControl/GetStore',
15509
                                        params: {
15510
                                            tableName: 'SDATATABLEFIELD',
15511
                                            param: 'TableName[equal]' + rec.TableRef
15512
                                        },
15513
                                        success: function (response) {
15514
                                            var results = Ext.decode(response.responseText);
15515
                                            data_ = results.data;
15516
                                            if (data_ != undefined) {
15517
                                                valueField_ = $.grep(data_, function (r) {
15518
                                                    return r.ValueField == '1'
15519
                                                });
15520
                                                if (valueField_.length > 0) {
15521
                                                    valueField = valueField_[0].FieldName
15522
                                                }
15523

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

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

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

    
15944
                            var seq = 'Sequence';
15945
                            var SequenceValue = Sequence;
15946
                            eval(addData);
15947
                            data[seq] = SequenceValue;
15948

    
15949
                            store.insert(idx, data);
15950
                        }
15951

    
15952
                    }, {
15953
                        text: 'Delete',
15954
                        hidden: hide_,
15955
                        name: tableName + 'DeleteText',
15956
                        iconCls: 'fa-trash-o',
15957
                        style: 'font-family: FontAwesome',
15958
                        //disabled: true
15959
                        handler: function () {
15960
                            var me = this,
15961
                            store = Ext.StoreMgr.lookup(storeID)
15962

    
15963
                            var grid = Ext.getCmp(gridName);
15964

    
15965
                            Ext.MessageBox.show({
15966
                                title: 'Remove tab',
15967
                                msg: "This will remove. Do you want to continue?",
15968
                                buttons: Ext.MessageBox.YESNO,
15969
                                fn: function (choice) {
15970
                                    console.log(choice);
15971
                                    if (choice === 'yes') {
15972
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
15973
                                        if (selection) {
15974
                                            store.remove(selection);
15975
                                        }
15976
                                    }
15977
                                    //delete panel.pendingClose;
15978
                                }
15979
                            });
15980
                        }
15981

    
15982
                    }
15983
                    ]
15984
                }
15985
                ],
15986
                columns: cols,
15987
                selType: checkSelection,
15988
                plugins: {
15989
					type: 'grideditable',
15990
					ptype: 'cellediting',
15991
					clicksToEdit: 1					
15992
                    //ptype: 'rowediting',
15993
                    //pluginId: 'rowEditing',
15994
                    //clicksToEdit: 1,
15995
                    //listeners: {
15996
                        //edit: 'onGridEditorEdit'
15997
                    //}
15998
                }
15999
            }, ]
16000

    
16001
        });
16002

    
16003
        me.callParent(arguments);
16004
    }
16005
});
16006

    
16007
Ext.define('MinovaUtil.MinovaES.Minovatimefield', {
16008
    extend: 'Ext.form.field.Time',
16009
    alias: ['widget.minovatimefield'],
16010
    undefinedText: '&#160;',
16011
    setValue: function (v) {
16012
        hasil = '';
16013
        if (v != this.getValue()) {
16014
            if (v) {
16015
                if (v.length == 4) {
16016

    
16017
                    var h = v.substring(0, 2);
16018
                    var m = v.substring(2, 4)
16019
                    //this.setValue(h +':'+m);
16020
                    hasil = h + ':' + m;
16021
                }
16022
                if (v.length == 5) {
16023
                    this.setValue(v);
16024
                    hasil = v;
16025
                }
16026
            }
16027
            this.setValue(hasil);
16028
        }
16029

    
16030
    },
16031
});
16032

    
16033
Ext.define('MinovaUtil.MinovaES.MinovaFixValueLabel', {
16034
    extend: 'Ext.form.Label',
16035
    alias: ['widget.MinovaFixValueLabel', 'widget.minovafixvaluelabel'],
16036
    anchor: '50%',
16037
    defaultRenderer: function (value) {
16038
        if (typeof(this.store) !== 'object') {
16039
            this.store = Ext.data.StoreManager.lookup(this.store);
16040
        }
16041
        var idx = this.store.findExact('code', value);
16042
        if (this.store.getAt(idx)) {
16043
            var result = this.store.getAt(idx).get('desc');
16044
            value = result ? result : value;
16045
        }
16046
        this.setRawValue(value);
16047

    
16048
    },
16049
    initComponent: function () {
16050
        var me = this;
16051
        var storeData = [];
16052
        var str = me.fixedValue;
16053
        var hasil = str.split('||');
16054
        hasil.forEach(function (h) {
16055
            store_ = h.split('=')
16056
            storeData.push({
16057
                code: store_[0],
16058
                desc: store_[1],
16059

    
16060
            });
16061
        });
16062
        Ext.applyIf(me, {
16063

    
16064
            store: Ext.create('Ext.data.Store', {
16065
                storeId: 'store' + name,
16066
                autoLoad: true,
16067
                data: storeData
16068

    
16069
            }),
16070

    
16071
        });
16072
        me.callParent(arguments);
16073
    }
16074
});
16075

    
16076
Ext.define('MinovaUtil.MinovaES.MinovaComboColumnFixValueLabel', {
16077
    extend: 'Ext.grid.column.Column',
16078
    alias: ['widget.minovacombocolumnfixvalue'],
16079
    initComponent: function () {
16080
        var me = this;
16081
        var storeData = [];
16082
        var str = me.fixedValue;
16083
        var hasil = str.split('||');
16084
        hasil.forEach(function (h) {
16085
            store_ = h.split('=')
16086
            storeData.push({
16087
                code: store_[0],
16088
                desc: store_[1],
16089

    
16090
            });
16091
        });
16092
        Ext.applyIf(me, {
16093

    
16094
            store: Ext.create('Ext.data.Store', {
16095
                storeId: 'store' + name,
16096
                autoLoad: true,
16097
                data: storeData
16098

    
16099
            }),
16100

    
16101
        });
16102
        this.callParent(arguments);
16103
    },
16104
    defaultRenderer: function (value) {
16105
        if (typeof(this.store) !== 'object') {
16106
            Ext.data.StoreManager.lookup(this.store).load();
16107
            this.store = Ext.data.StoreManager.lookup(this.store);
16108
        }
16109
        var idx = this.store.findExact('code', value);
16110
        if (this.store.getAt(idx)) {
16111
            var result = this.store.getAt(idx).get('desc');
16112
            value = result ? result : value;
16113
        }
16114
        return value;
16115
    }
16116
});
16117

    
16118
Ext.define('MinovaUtil.MinovaES.MinovaLookupColumn', {
16119
    extend: 'Ext.grid.column.Column',
16120
    alias: ['widget.minovalookupcolumn'],
16121
    initComponent: function () {
16122
        this.callParent(arguments);
16123
    },
16124
    defaultRenderer: function (value) {
16125
        data_ = undefined;
16126
        Ext.Ajax.request({
16127
            async: false,
16128
            method: 'POST',
16129
            url: '/UserControl/GetStore',
16130
            params: {
16131
                tableName: 'PDSCMTABLE',
16132
                param: this.tableName + ',' + value + ',hasil'
16133
            },
16134
            success: function (response) {
16135
                var results = Ext.decode(response.responseText);
16136
                data_ = results.data;
16137
                if (data_ != null) {
16138
                    if (data_.length > 0) {
16139
                        value = value + '-' + data_[0].hasil;
16140
                    }
16141
                }
16142
            }
16143
        });
16144
        return value;
16145
    }
16146
});
16147

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

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

    
16350
                                        Ext.Ajax.request({
16351
                                            async: false,
16352
                                            method: 'POST',
16353
                                            url: '/UserControl/GetStore',
16354
                                            params: {
16355
                                                tableName: 'SDATATABLEFIELD',
16356
                                                param: 'TableName[equal]' + rec.TableRef
16357
                                            },
16358
                                            success: function (response) {
16359
                                                var results = Ext.decode(response.responseText);
16360
                                                data_ = results.data;
16361
                                                if (data_ != undefined) {
16362
                                                    valueField_ = $.grep(data_, function (r) {
16363
                                                        return r.ValueField == '1'
16364
                                                    });
16365
                                                    valueField = valueField_[0].FieldName
16366
                                                    displayValue_ = $.grep(data_, function (r) {
16367
                                                        return r.DisplayValue == '1'
16368
                                                    });
16369
                                                    displayValue = displayValue_[0].FieldName
16370
                                                }
16371
                                            }
16372
                                        });
16373

    
16374
                                        //create Store
16375
                                        Ext.create('Ext.data.Store', {
16376
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16377
                                            autoLoad: true,
16378
                                            proxy: {
16379
                                                method: 'POST',
16380
                                                type: 'ajax',
16381
                                                url: '/UserControl/GetStore',
16382
                                                extraParams: {
16383
                                                    tableName: TableRef,
16384
                                                    param: rec.ParamCombo
16385
                                                },
16386
                                                reader: {
16387
                                                    type: 'json',
16388
                                                    root: 'data',
16389
                                                    totalProperty: 'data[0].TotalCount'
16390
                                                }
16391
                                            }
16392
                                        });
16393
                                    } else if (rec.FixedValue != '') {
16394
                                        var storeData = [];
16395
                                        var str = rec.FixedValue;
16396
                                        var hasil = str.split('||');
16397
                                        hasil.forEach(function (h) {
16398
                                            store_ = h.split('=')
16399
                                            storeData.push({
16400
                                                code: store_[0],
16401
                                                desc: store_[1],
16402

    
16403
                                            });
16404
                                        });
16405

    
16406
                                        valueField = 'code';
16407
                                        displayValue = 'desc';
16408

    
16409
                                        Ext.create('Ext.data.Store', {
16410
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16411
                                            autoLoad: true,
16412
                                            data: storeData
16413
                                        })
16414
                                    }
16415

    
16416
                                    cols.push({
16417
                                        xtype: 'minovacombocolumn',
16418
                                        hidden: Hidden_,
16419
                                        text: rec.HeaderTitle,
16420
                                        dataIndex: rec.FieldName,
16421
                                        valueField: valueField,
16422
                                        displayField: displayValue,
16423
                                        store: 'store_' + me.tableName + rec.FieldName,
16424
                                        editor: {
16425
                                            allowBlank: null_,
16426
                                            xtype: 'combobox',
16427
                                            readOnly: ReadOnly_,
16428
                                            id: tableName + rec.FieldName,
16429
                                            nameTable: rec.TableName,
16430
                                            fieldGrid: rec.FieldName,
16431
                                            valueField: valueField,
16432
                                            displayField: displayValue,
16433

    
16434
                                            store: 'store_' + me.tableName + rec.FieldName,
16435
                                        },
16436
                                        filter: {
16437
                                            type: 'list',
16438
                                            itemDefaults: {
16439
                                                emptyText: 'Search for...'
16440
                                            }
16441
                                        }
16442
                                    });
16443

    
16444
                                } else if (rec.SearchType == '5') {								
16445
                                    var valueField = null;
16446
                                    var displayValue = null;
16447
                                    var AdditionaldisplayValue = null;
16448
                                    var TableRef = undefined;
16449
                                    if (rec.TableRef != '') {
16450
                                        TableRef = rec.TableRef;
16451
                                        Ext.Ajax.request({
16452
                                            async: false,
16453
                                            method: 'POST',
16454
                                            url: '/UserControl/GetStore',
16455
                                            params: {
16456
                                                tableName: 'SDATATABLEFIELD',
16457
                                                param: 'TableName[equal]' + rec.TableRef
16458
                                            },
16459
                                            success: function (response) {
16460
                                                var results = Ext.decode(response.responseText);
16461
                                                data_ = results.data;
16462
                                                if (data_ != undefined) {
16463
                                                    valueField_ = $.grep(data_, function (r) {
16464
                                                        return r.ValueField == '1'
16465
                                                    });
16466
                                                    if (valueField_.length > 0) {
16467
                                                        valueField = valueField_[0].FieldName
16468
                                                    }
16469

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

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

    
16845
        cols.push({
16846
            text: 'Action',
16847
            width: 100,
16848
            xtype: 'actioncolumn',
16849
            tooltip: 'View Data',
16850
            name: 'Action',
16851
            itemId: 'Action',
16852
            align: 'center',
16853
            iconCls: 'fa-edit',
16854
            renderer: function (value, metadata, record) {
16855
                metadata.tdStyle = 'font-family: FontAwesome'
16856
            },
16857
            handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
16858
                var main_ = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
16859
                this.fireEvent("onEditClick");
16860
            }
16861
        });
16862

    
16863
        Ext.applyIf(me, {
16864

    
16865
            items: [{
16866
                xtype: 'treepanel',
16867
                id: gridName,
16868
                name: gridName,
16869
                height: height,
16870
                width: 'fit',
16871
                autoHeight: true,
16872
                //store: 'gridStore',
16873
                autoLoad: false,
16874
                autoScroll: true,
16875
                useArrows: true,
16876
                animate: false,
16877
                rootVisible: false,
16878
                plugins: [
16879
                    Ext.create('Ext.grid.plugin.CellEditing', {
16880
                        clicksToEdit: 2
16881
                    })
16882
                ],
16883
                root: {
16884
                    expanded: true,
16885
                    nodeType: 'async',
16886
                    ext: 'Favorites',
16887
                    id: 'null'
16888
                },
16889
                columns: cols,
16890
                //selType: 'rowmodel',
16891
            }
16892
            ]
16893

    
16894
        });
16895

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

    
17305
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17306
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17307
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17308
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17309
												
17310
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17311
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17312
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17313
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17314
												'</div>'+												
17315
											  '<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>'+	
17316
											  '</div>'
17317
									}).show();
17318

    
17319
								  const qrcode = document.getElementById("qrcode");
17320
								  const textInput = document.getElementById(ExternalID);
17321
								  
17322
								  const qr = new QRCode(qrcode);
17323
								  qr.makeCode(ExternalID);
17324
								  
17325
								}
17326
                            },{
17327
                                text: 'Create Barcode',
17328
                                name: 'editDISPLAY' + rec.TableName,
17329
                                iconCls: 'fa-edit',
17330
                                style: 'font-family: FontAwesome',
17331
                                handler: function () {
17332
									var myfrmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17333
									var asetid=myfrmForm.getValues().AssetID;
17334
									var asetdesc=myfrmForm.getValues().AssetName;
17335
									var ExternalID=myfrmForm.getValues().ExternalID;									
17336
									Ext.widget('window', {
17337
										width: 600,
17338
										height: 600,
17339
										padding: 5,
17340
										title: 'Barcode Perview',
17341
										html: '<div id="BarCodePrint" style="text-align: center;">'+
17342
										'<div id="BarCode" style="width:590px;align-items: center; justify-content: center;display: flex;">'+
17343
											  '<img style="border-radius:0px" id="barcode3" class="Center">'+
17344
											  '</img></div>'+
17345
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17346
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17347
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17348
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17349
												
17350
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17351
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17352
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17353
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17354
												'</div>'+												
17355
											  '<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>'+	
17356
											  '</div>'
17357
									}).show();
17358

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

    
17408
									 var headerDisplay =undefined;
17409
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
17410
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
17411
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
17412
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
17413
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
17414
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
17415
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
17416
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
17417
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());
17418
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());											
17419
									}else{
17420
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
17421
									}
17422

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
21440
	// Private method for UTF-8 encoding
21441

    
21442
	function utf8Encode(string) {
21443
		string = string.replace(/\r\n/g, "\n");
21444
		var utftext = "";
21445
		for (var n = 0; n < string.length; n++) {
21446
			var c = string.charCodeAt(n);
21447
			if (c < 128) {
21448
				utftext += String.fromCharCode(c);
21449
			} else if ((c > 127) && (c < 2048)) {
21450
				utftext += String.fromCharCode((c >> 6) | 192);
21451
				utftext += String.fromCharCode((c & 63) | 128);
21452
			} else {
21453
				utftext += String.fromCharCode((c >> 12) | 224);
21454
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
21455
				utftext += String.fromCharCode((c & 63) | 128);
21456
			}
21457
		}
21458
		return utftext;
21459
	}
21460

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

    
21502
	/*
21503
	Kick off process
21504
	 */
21505

    
21506
	downloadExcelXml: function (includeHidden, name) {
21507

    
21508
		if (!name)
21509
			title = this.name;
21510

    
21511
		var vExportContent = this.getExcelXml(includeHidden, title);
21512

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

    
21515
		/*
21516
		dynamically create and anchor tag to force download with suggested filename
21517
		note: download attribute is Google Chrome specific
21518
		 */
21519

    
21520
		if (Ext.isChrome) {
21521
			var gridEl = this.getEl();
21522

    
21523
			var el = Ext.DomHelper.append(gridEl, {
21524
					tag: "a",
21525
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
21526
					href: location
21527
				});
21528

    
21529
			el.click();
21530

    
21531
			Ext.fly(el).destroy();
21532

    
21533
		} else {
21534

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

    
21553
			form.getForm().submit();
21554

    
21555
		}
21556
	},
21557

    
21558
	/*
21559

    
21560
	Welcome to XML Hell
21561
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
21562
	for more details
21563

    
21564
	 */
21565
	getExcelXml: function (includeHidden, title) {
21566

    
21567
		var theTitle = title || this.title;
21568

    
21569
		var worksheet = this.createWorksheet(includeHidden, theTitle);
21570
		var totalWidth = this.columnManager.columns.length;
21571

    
21572
		return ''.concat(
21573
			'<?xml version="1.0"?>',
21574
			'<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">',
21575
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
21576
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
21577
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
21578
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
21579
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
21580
			'<ProtectStructure>False</ProtectStructure>',
21581
			'<ProtectWindows>False</ProtectWindows>',
21582
			'</ExcelWorkbook>',
21583

    
21584
			'<Styles>',
21585

    
21586
			'<Style ss:ID="Default" ss:Name="Normal">',
21587
			'<Alignment ss:Vertical="Bottom"/>',
21588
			'<Borders/>',
21589
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
21590
			'<Interior/>',
21591
			'<NumberFormat/>',
21592
			'<Protection/>',
21593
			'</Style>',
21594

    
21595
			'<Style ss:ID="title">',
21596
			'<Borders />',
21597
			'<Font ss:Bold="1" ss:Size="18" />',
21598
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
21599
			'<NumberFormat ss:Format="@" />',
21600
			'</Style>',
21601

    
21602
			'<Style ss:ID="headercell">',
21603
			'<Font ss:Bold="1" ss:Size="10" />',
21604
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
21605
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
21606
			'</Style>',
21607

    
21608
			'<Style ss:ID="even">',
21609
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
21610
			'</Style>',
21611

    
21612
			'<Style ss:ID="evendate" ss:Parent="even">',
21613
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21614
			'</Style>',
21615

    
21616
			'<Style ss:ID="evenint" ss:Parent="even">',
21617
			'<Numberformat ss:Format="0" />',
21618
			'</Style>',
21619

    
21620
			'<Style ss:ID="evenfloat" ss:Parent="even">',
21621
			'<Numberformat ss:Format="0.00" />',
21622
			'</Style>',
21623

    
21624
			'<Style ss:ID="odd">',
21625
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
21626
			'</Style>',
21627

    
21628
			'<Style ss:ID="groupSeparator">',
21629
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
21630
			'</Style>',
21631

    
21632
			'<Style ss:ID="odddate" ss:Parent="odd">',
21633
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21634
			'</Style>',
21635

    
21636
			'<Style ss:ID="oddint" ss:Parent="odd">',
21637
			'<NumberFormat Format="0" />',
21638
			'</Style>',
21639

    
21640
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
21641
			'<NumberFormat Format="0.00" />',
21642
			'</Style>',
21643

    
21644
			'</Styles>',
21645
			worksheet.xml,
21646
			'</Workbook>');
21647
	},
21648

    
21649
	/*
21650

    
21651
	Support function to return field info from store based on fieldname
21652

    
21653
	 */
21654

    
21655
	getModelField: function (fieldName) {
21656

    
21657
		var fields = this.store.model.getFields();
21658
		for (var i = 0; i < fields.length; i++) {
21659
			if (fields[i].name === fieldName) {
21660
				return fields[i];
21661
			}
21662
		}
21663
	},
21664

    
21665
	/*
21666

    
21667
	Convert store into Excel Worksheet
21668

    
21669
	 */
21670
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
21671

    
21672
		var cm = this.columnManager.columns;
21673
		var colCount = cm.length;
21674
		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>';
21675
		var visibleCols = 0;
21676

    
21677
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
21678

    
21679
		for (var j = 0; j < colCount; j++) {
21680
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21681
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
21682
				visibleCols++;
21683
			}
21684
		}
21685

    
21686
		// rowXml += "</Row>";
21687

    
21688
		return Ext.String.format(rowTpl, visibleCols - 1, value);
21689
	},
21690

    
21691
	createWorksheet: function (includeHidden, theTitle) {
21692
		// Calculate cell data types and extra class names which affect formatting
21693
		var cellType = [];
21694
		var cellTypeClass = [];
21695
		var cm = this.columnManager.columns;
21696

    
21697
		var totalWidthInPixels = 0;
21698
		var colXml = '';
21699
		var headerXml = '';
21700
		var visibleColumnCountReduction = 0;
21701
		var colCount = cm.length;
21702
		for (var i = 0; i < colCount; i++) {
21703
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
21704
				var w = cm[i].getEl().getWidth();
21705
				totalWidthInPixels += w;
21706

    
21707
				if (cm[i].text === "") {
21708
					cellType.push("None");
21709
					cellTypeClass.push("");
21710
					++visibleColumnCountReduction;
21711
				} else {
21712
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21713
					headerXml += '<Cell ss:StyleID="headercell">' +
21714
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21715
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21716

    
21717
					var fld = this.getModelField(cm[i].dataIndex);
21718
					switch (fld.type.type) {
21719
					case "int":
21720
						cellType.push("Number");
21721
						cellTypeClass.push("int");
21722
						break;
21723
					case "float":
21724
						cellType.push("Number");
21725
						cellTypeClass.push("float");
21726
						break;
21727

    
21728
					case "bool":
21729

    
21730
					case "boolean":
21731
						cellType.push("String");
21732
						cellTypeClass.push("");
21733
						break;
21734
					case "date":
21735
						cellType.push("DateTime");
21736
						cellTypeClass.push("date");
21737
						break;
21738
					default:
21739
						cellType.push("String");
21740
						cellTypeClass.push("");
21741
						break;
21742
					}
21743
				}
21744
			}
21745
		}
21746
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21747

    
21748
		var result = {
21749
			height: 9000,
21750
			width: Math.floor(totalWidthInPixels * 30) + 50
21751
		};
21752

    
21753
		// Generate worksheet header details.
21754

    
21755
		// determine number of rows
21756
		var numGridRows = this.store.getCount() + 2;
21757
		if (!Ext.isEmpty(this.store.groupField)) {
21758
			numGridRows = numGridRows + this.store.getGroups().length;
21759
		}
21760

    
21761
		// create header for worksheet
21762
		var t = ''.concat(
21763
				'<Worksheet ss:Name="' + theTitle + '">',
21764

    
21765
				'<Names>',
21766
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
21767
				'</NamedRange></Names>',
21768

    
21769
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
21770
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
21771
				colXml,
21772
				'<Row ss:AutoFitHeight="1">',
21773
				headerXml +
21774
				'</Row>');
21775

    
21776
		// Generate the data rows from the data in the Store
21777
		var groupVal = "";
21778
		var groupField = "";
21779

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

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

    
21810
		result.xml = t.concat(
21811
				'</Table>',
21812
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
21813
				'<PageLayoutZoom>0</PageLayoutZoom>',
21814
				'<Selected/>',
21815
				'<Panes>',
21816
				'<Pane>',
21817
				'<Number>3</Number>',
21818
				'<ActiveRow>2</ActiveRow>',
21819
				'</Pane>',
21820
				'</Panes>',
21821
				'<ProtectObjects>False</ProtectObjects>',
21822
				'<ProtectScenarios>False</ProtectScenarios>',
21823
				'</WorksheetOptions>',
21824
				'</Worksheet>');
21825
		return result;
21826
	}
21827
});
21828

    
21829
/*Add Midi For Grid Mass Posting Filo*/
21830
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
21831
    extend: 'Ext.form.Panel',
21832
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
21833
    requires: [
21834
		'Ext.grid.plugin.CellEditing',
21835
		'Ext.grid.RowNumberer',
21836
		'Ext.grid.Panel',
21837
    ],
21838

    
21839
    //renderTo: 'panel-extjs',
21840
    anchor: '100%',
21841
    tableName: undefined,
21842
    hideButton: undefined,
21843
    multiSelect: undefined,
21844
    initComponent: function () {
21845
        var me = this;
21846
        var isLookup = me.isLookup;
21847
        var hide_ = false;
21848
        var widthLock = 250;
21849
        var checkSelection = '';
21850

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

    
21896
                var null_ = null;
21897
                var ReadOnly_ = false;
21898
                if (rec.IsPrimaryKey == true) {
21899
                    null_ = false;
21900
                }
21901
                if (rec.IsRequired == true) {
21902
                    null_ = false;
21903
                } else {
21904
                    null_ = true;
21905
                }
21906
                if (rec.ReadOnly == '1') {
21907
                    ReadOnly_ = true;
21908
                }
21909
                var Hidden_ = false;
21910
                if (rec.ReadOnly == '1') {
21911
                    ReadOnly_ = true;
21912
                }
21913

    
21914
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
21915
                    Hidden_ = true;
21916
                    null_ = true;
21917
                }
21918

    
21919
                if (rec.GridView == 1) {
21920
                    switch (rec.FormatRef) {
21921
                        case "date":
21922
                            cols.push({
21923
                                xtype: 'minovadatecolumn',
21924
                                hidden: Hidden_,
21925
                                text: rec.HeaderTitle,
21926
                                dataIndex: rec.FieldName,
21927
                                filter: {
21928
                                    itemDefaults: {
21929
                                        emptyText: 'Search for...',
21930

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

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

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

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

    
22098
                                        });
22099
                                    });
22100

    
22101
                                    valueField = 'code';
22102
                                    displayValue = 'desc';
22103

    
22104
                                    Ext.create('Ext.data.Store', {
22105
                                        storeId: 'store_' + me.tableName + rec.FieldName,
22106
                                        autoLoad: true,
22107
                                        data: storeData
22108
                                    })
22109
                                }
22110

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

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

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

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

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

    
22556
                                                    if (custumFunc) {
22557
                                                        eval(custumFunc)
22558
                                                    }
22559
                                                }
22560
                                            }
22561
                                        }
22562
                                    });
22563
                                }
22564
                            }
22565

    
22566
                            break
22567

    
22568
                    }
22569
                } else {
22570
                    cols.push({
22571
                        text: rec.HeaderTitle,
22572
                        hidden: Hidden_,
22573
                        dataIndex: rec.FieldName,
22574
                        hidden: true,
22575
                        editor: {
22576
                            allowBlank: true,
22577
                            xtype: 'textfield',
22578
                            readOnly: ReadOnly_,
22579
                            id: tableName + rec.FieldName,
22580
                            nameTable: rec.TableName,
22581
                            fieldGrid: rec.FieldName,
22582
                        },
22583
                        filter: {
22584
                            itemDefaults: {
22585
                                emptyText: 'Search for...'
22586
                            }
22587
                        }
22588
                    });
22589
                }
22590
            });
22591

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

    
22656
                            var seq = 'Sequence';
22657
                            var SequenceValue = Sequence;
22658
                            eval(addData);
22659
                            data[seq] = SequenceValue;
22660

    
22661
                            store.insert(idx, data);
22662
                        }
22663

    
22664
                    }, {
22665
                        text: 'Delete',
22666
                        hidden: hide_,
22667
                        name: tableName + 'DeleteText',
22668
                        iconCls: 'fa-trash-o',
22669
                        style: 'font-family: FontAwesome',
22670
                        //disabled: true
22671
                        handler: function () {
22672
                            var me = this,
22673
                            store = Ext.StoreMgr.lookup(storeID)
22674

    
22675
                            var grid = Ext.getCmp(gridName);
22676

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

    
22694
                    }
22695
                    ]
22696
                }
22697
                ],
22698
                columns: cols,
22699
                selType: checkSelection,
22700
                //selType: 'rowmodel',
22701
                plugins: {
22702
                    ptype: 'rowediting',
22703
                    pluginId: 'rowEditing',
22704
                    clicksToEdit: 1,
22705
                    listeners: {
22706
                        //edit: 'onGridEditorEdit'
22707
                    }
22708
                }
22709
            }, ]
22710

    
22711
        });
22712

    
22713
        me.callParent(arguments);
22714
    }
22715
});
22716

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

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

    
23219
                            //console.log(me)
23220
                        }
23221

    
23222
                    }
23223
                });
23224
            });
23225

    
23226
            //setTimeout(function () {
23227
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
23228
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
23229
            //}, 100);
23230

    
23231
        },
23232

    
23233
    },
23234

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

    
23280
            }
23281
        });
23282

    
23283
        var hasil = undefined;
23284
        Ext.Ajax.request({
23285
            async: false,
23286
            method: 'POST',
23287
            url: '/UserControl/GetStore',
23288
            params: {
23289
                tableName: 'PDSBS0009',
23290
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
23291
            },
23292
            success: function (response) {
23293
                hasil = Ext.decode(response.responseText).data;
23294

    
23295
            }
23296
        });
23297

    
23298
        //sorting results
23299
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
23300
        if (hasil.length > 0) {
23301
            Ext.each(hasil, function (rec) {
23302
                tblTemp = rec.TableName;
23303
                if (tbl != tblTemp) {
23304
                    tbl = tblTemp;
23305
                    if (allTable == null) {
23306
                        allTable = tbl
23307
                    } else {
23308
                        allTable = allTable + ',' + tbl
23309
                    }
23310

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

    
23335
                                displayValue_ = $.grep(data_, function (r) {
23336
                                    return r.DisplayValue == '1'
23337
                                });
23338
                                if (displayValue_.length > 0) {
23339
                                    displayValue = displayValue_[0].FieldName
23340
                                }
23341
                            }
23342
                        }
23343
                    });
23344

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

    
23410
                                        //dt = results.data;
23411
                                        store.loadData(results.data);
23412

    
23413
                                    }
23414
                                });
23415
                            },
23416
                            change: function (f) {
23417
                                //alert(this.valueField, value);
23418
                                var display = this.displayField;
23419
                                var value = this.getValue();
23420
                                var st = f.store
23421
                                var r = st.findRecord(f.valueField, f.value)
23422
                                if (r != null) {
23423
                                    f.setRawValue(r.get(f.displayField))
23424
                                } else {
23425
                                    f.setRawValue(f.value);
23426

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

    
23456
            });
23457
            //set allTable
23458
            this.setAllTableName(allTable);
23459
        }
23460

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

    
23500
        me.callParent(arguments);
23501

    
23502
    }
23503
});
23504

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

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

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

    
23880
    getStoreListeners: function () {
23881
        var me = this;
23882

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

    
23895
    onBindStore: function (store) {
23896
        //this.onDataRefresh(store);
23897
    },
23898

    
23899
    onDataRefresh: function (store) {
23900
        var me = this,
23901
            titleField = me.getTitleField();
23902

    
23903
        store.each(function (record) {
23904
            var tab = me.getTabByRecord(record);
23905

    
23906
            if (!tab) {
23907
                me.add({
23908
                    title: record.get(titleField)
23909
                });
23910
            }
23911
        });
23912

    
23913
        if (!me.getActiveTab()) {
23914
            me.setActiveTab(0);
23915
        }
23916
    },
23917

    
23918
    getTabByRecord: function (record) {
23919
        var items = this.items,
23920
            tab;
23921

    
23922
        items.each(function (item) {
23923
            if (item.$record === record) {
23924
                tab = item;
23925

    
23926
                return false;
23927
            }
23928
        });
23929

    
23930
        return tab;
23931
    }
23932
});
23933

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

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

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

    
24013
    onBindStore: function (store) {
24014
        this.onDataRefresh(store);
24015
    },
24016

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

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

    
24036
        if (!me.getActiveTab()) {
24037
            me.setActiveTab(0);
24038
        }
24039
    },
24040

    
24041
    getTabByRecord: function (record) {
24042
        var items = this.items,
24043
            tab;
24044

    
24045
        items.each(function (item) {
24046
            //if (item.$record === record) {
24047
            if (item.record === record) {
24048
                tab = item;
24049

    
24050
                return false;
24051
            }
24052
        });
24053

    
24054
        return tab;
24055
    }
24056
});
24057

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

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

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

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

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

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

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

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

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

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

    
25253
        };
25254

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

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

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

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

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

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

    
26274
                                        if (custumFunc) {
26275
                                            eval(custumFunc)
26276
                                        }
26277

    
26278
                                    }
26279

    
26280
                                },
26281

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

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

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

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

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

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

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

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

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

    
27273
                                        if (custumFunc) {
27274
                                            eval(custumFunc)
27275
                                        }
27276

    
27277
                                    }
27278

    
27279
                                },
27280

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

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

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

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

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

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

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

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

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

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

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

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

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

    
28406
                                        if (custumFunc) {
28407
                                            eval(custumFunc)
28408
                                        }
28409

    
28410
                                    }
28411

    
28412
                                },
28413

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
30046
});
30047

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

    
30084

    
30085

    
30086

    
30087

    
(3-3/3)